Kaynak kodu - Source code

Basit C dili kaynak kodu örneği, prosedürel bir programlama dili . Ortaya çıkan program, bilgisayar ekranına "merhaba, dünya" yazdırır. Bu bilinen ilk " Merhaba dünya " pasajı seminal kitaptan Dili Programlama C kaynaklandığı Brian Kernighan içinde Bell Laboratories 1974 yılında.

Gelen bilgi işlem , kaynak kodu olan veya olmayan kodun herhangi bir koleksiyon olduğunu yorumlarla bir kullanılarak yazılmıştır, insan tarafından okunabilir programlama dili genellikle, düz metin . Bir programın kaynak kodu, bir bilgisayar tarafından gerçekleştirilecek eylemleri çoğunlukla kaynak kodu yazarak belirleyen bilgisayar programcılarının işini kolaylaştırmak için özel olarak tasarlanmıştır . Kaynak kodu, genellikle, bir ile transforme edilir birleştiriciye veya derleyici içine ikili makine kodu bilgisayar tarafından gerçekleştirilebilir. Makine kodu daha sonra yürütülmek üzere saklanabilir . Alternatif olarak, kaynak kodu yorumlanabilir ve böylece hemen çalıştırılabilir.

Çoğu uygulama yazılımı , yalnızca yürütülebilir dosyaları içeren bir biçimde dağıtılır . Kaynak kodu dahil edilmişse , herhangi biri programı incelemek veya değiştirmek isteyebilecek bir kullanıcı , programcı veya sistem yöneticisi için faydalı olacaktır .

Kaynak kodu, Code örneğinin bir örneğidir . İle karşılaştır Genetik kod , hukuk Kanunu ve Dil .

Tanımlar

Linux Bilgi Proje kaynak kodu olarak tanımlar:

Kaynak kodu (aynı zamanda kaynak veya kod olarak da anılır), bir insan tarafından düz metin olarak (yani, insan tarafından okunabilen alfasayısal karakterler) orijinal olarak yazıldığı (yani bir bilgisayara yazıldığı) haliyle yazılımın sürümüdür .

Kaynak kodu kavramı, ikisi de metinsel olmayan grafik dillerdeki makine kodunu ve gösterimleri içerecek şekilde daha geniş olarak alınabilir. Yıllık IEEE konferansında ve Kaynak Kodu Analizi ve Manipülasyonunda sunulan bir makaleden bir örnek:

Açıklık sağlamak amacıyla, "kaynak kodu", bir yazılım sisteminin tam olarak yürütülebilir herhangi bir açıklaması anlamına gelir. Bu nedenle, makine kodunu, çok yüksek seviyeli dilleri ve sistemlerin yürütülebilir grafik temsillerini içerecek şekilde yorumlanmıştır.

Genellikle , bir insan tarafından yazılan orijinal kaynak kodu ile yürütülebilir bir program arasında birkaç program çevirisi veya küçültme adımı vardır . Bazıları, FSF gibi, bir ara dosyanın "gerçek kaynak kodu olmadığını ve kaynak kodu olarak sayılmadığını " iddia ederken , diğerleri sonraki adımlar için her bir ara dosyaya kaynak kodu olarak atıfta bulunmayı uygun buluyor.

Tarih

Depolanmış program bilgisayarları için en eski programlar, bilgisayarın ön panel anahtarları aracılığıyla ikili olarak giriliyordu . Bu birinci nesil programlama dilinin kaynak kodu ve makine kodu arasında hiçbir farkı yoktu .

IBM, yazılımı kendi makinesiyle çalışacak şekilde ilk sunduğunda, kaynak kodu hiçbir ek ücret ödemeden sağlanmıştı. O zamanlar, yazılım geliştirme ve destekleme maliyeti, donanımın fiyatına dahil edildi. IBM, 1983 yılına kadar yazılım ürünü lisanslarıyla birlikte onlarca yıl boyunca kaynak kodu dağıttı.

Erken dönem bilgisayar dergilerinin çoğu, kaynak kodunu yazma programları olarak yayınladı .

Bazen büyük bir programın kaynak kodunun tamamı, Computers and Typesetting , cilt gibi ciltli bir kitap olarak yayınlanır . B: TeX, Program tarafından Donald Knuth , PGP Kaynak Kanunu ve Internals tarafından Philip Zimmermann , PC SpeedScript tarafından Randy Thompson ve mC / OS, Gerçek Zamanlı Çekirdeği Jean Labrosse tarafından.

organizasyon

Bir programı oluşturan kaynak kodu genellikle bir bilgisayarın sabit diskinde depolanan bir veya daha fazla metin dosyasında tutulur ; genellikle bu dosyalar, kaynak ağaç olarak bilinen bir dizin ağacında dikkatlice düzenlenir . Kaynak kodu ayrıca bir veritabanında ( saklanmış yordamlar için yaygın olduğu gibi ) veya başka bir yerde saklanabilir .

Daha karmaşık bir Java kaynak kodu örneği. Nesne yönelimli programlama tarzında yazılmış olup , ortak kod kodunu gösterir . Önsöz yorumları kırmızı, satır içi yorumlar yeşil ve program açıklamaları mavi ile belirtilmiştir.

Belirli bir yazılım parçasının kaynak kodu, tek bir dosyada veya birçok dosyada bulunabilir. Alışılmadık bir uygulama olmasına rağmen, bir programın kaynak kodu farklı programlama dillerinde yazılabilir. Örneğin, öncelikle C programlama dilinde yazılmış bir program , optimizasyon amacıyla montaj dilinde yazılmış bölümlere sahip olabilir . Bir yazılım parçasının bazı bileşenlerinin ayrı ayrı, isteğe bağlı bir programlama dilinde yazılması ve derlenmesi ve daha sonra kütüphane bağlama adı verilen bir teknik kullanılarak yazılıma entegre edilmesi de mümkündür . Java gibi bazı dillerde bu, çalışma zamanında yapılabilir (her sınıf, çalışma zamanında yorumlayıcı tarafından bağlanan ayrı bir dosyada derlenir).

Yine başka bir yöntem, ana programı, söz konusu uygulama için özel olarak veya genel amaçlı olarak tasarlanmış bir programlama dili için bir yorumlayıcı yapmak ve ardından asıl kullanıcı işlevselliğinin büyük bir kısmını makrolar veya diğer eklenti biçimleri olarak bu programa yazmaktır. dil, örneğin GNU Emacs metin düzenleyicisi tarafından alınan bir yaklaşım .

Kod tabanı a bilgisayar programlama projesinin tüm tüm kaynak kodunun büyük koleksiyon bilgisayar programları projeyi oluşturuyor. Sürüm kontrol sistemlerinde kod tabanlarını korumak yaygın bir uygulama haline geldi . Orta derecede karmaşık yazılımlar, geleneksel olarak birkaç, bazen düzinelerce ve hatta yüzlerce farklı kaynak kod dosyasının derlenmesini veya birleştirilmesini gerektirir. Bu durumlarda, Makefile gibi derlemeler için talimatlar kaynak koduyla birlikte verilir. Bunlar, kaynak kod dosyaları arasındaki programlama ilişkilerini tanımlar ve bunların nasıl derleneceği hakkında bilgi içerir.

Amaçlar

Kaynak kodu, öncelikle yürütülebilir bir program üreten sürece girdi olarak kullanılır (yani, derlenir veya yorumlanır ). Aynı zamanda , insanlar arasında algoritmaları iletmek için bir yöntem olarak kullanılır (örneğin, kitaplardaki kod parçacıkları ).

Bilgisayar programcıları, programlama teknikleri hakkında bilgi edinmek için genellikle mevcut kaynak kodunu incelemeyi yararlı bulur. Geliştiriciler arasında kaynak kodun paylaşılması, programlama becerilerinin olgunlaşmasına katkıda bulunan bir faktör olarak sıklıkla belirtilir. Bazı insanlar kaynak kodunu anlamlı bir sanatsal araç olarak görür .

Taşıma diğer yazılım bilgisayar platformları genellikle kaynak kodu olmadan fahiş zordur. Belirli bir yazılım parçasının kaynak kodu olmadan taşınabilirlik genellikle hesaplama açısından pahalıdır. Olası taşıma seçenekleri , orijinal platformun ikili çevirisini ve öykünmesini içerir.

Yürütülebilir bir programın derlenmesi , derleme kodunda veya üst düzey bir dilde kaynak kodu oluşturmak için kullanılabilir .

Programcılar, yazılımın yeniden kullanılabilirliği olarak bilinen bir kavram olan, başka projelerde kullanmak için sıklıkla bir yazılım parçasındaki kaynak kodunu uyarlar .

Yasal yönler

Durum dünya çapında değişiklik gösterir, ancak 1974'ten önce Amerika Birleşik Devletleri'nde yazılım ve kaynak kodu telif hakkına tabi değildi ve bu nedenle her zaman kamu malı yazılımdı .

1974'te ABD Telif Hakkıyla Korunan Eserlerin Yeni Teknolojik Kullanımları Komisyonu (CONTU), "bilgisayar programlarının, bir yazarın orijinal eserini içerdiği ölçüde, telif hakkının uygun bir konusu olduğuna" karar verdi.

1983'te Amerika Birleşik Devletleri'ndeki Apple v. Franklin davasında , aynı şeyin nesne kodu için de geçerli olduğuna karar verildi ; ve Telif Hakkı Yasası'nın bilgisayar programlarına edebi eserlerin telif hakkı statüsünü verdiğini.

1999'da, Amerika Birleşik Devletleri Bernstein - Amerika Birleşik Devletleri davasında , kaynak kodunun anayasal olarak korunan bir ifade özgürlüğü biçimi olarak kabul edilebileceğine karar verildi . İfade özgürlüğü savunucuları, kaynak kodun programcılara bilgi ilettiği, bir dilde yazıldığı ve mizah ve diğer sanatsal uğraşları paylaşmak için kullanılabildiği için korumalı bir iletişim biçimi olduğunu savundu.

lisanslama

Telif hakkı bildirimi örneği:

Telif hakkı [yyyy] [telif hakkı sahibinin adı]

Apache Lisansı, Sürüm 2.0 ("Lisans"); Bu dosyayı Lisansa uygun olmadıkça kullanamazsınız. Lisansın bir kopyasını şu adresten edinebilirsiniz:

http://www.apache.org/licenses/LICENSE-2.0

Yürürlükteki yasa tarafından gerekmedikçe veya yazılı olarak kabul edilmedikçe, Lisans kapsamında dağıtılan yazılım, açık veya zımni HİÇBİR GARANTİ VEYA KOŞUL OLMADAN "OLDUĞU GİBİ" dağıtılır. Lisans kapsamındaki izinleri ve sınırlamaları yöneten belirli dil için Lisansa bakın.

Yazılım gibi önemsiz olmayan bir çalışmanın yazarı , aralarında kaynak kodu ve nesne kodunun telif hakkı olmak üzere çeşitli münhasır haklara sahiptir . Yazar, müşterilerine ve yazılımının kullanıcılarına, yazılım lisansı şeklinde münhasır haklarından bazılarını verme hakkı ve olanağına sahiptir . Yazılım ve beraberindeki kaynak kodu, çeşitli lisanslama paradigmalarıyla ilişkilendirilebilir; en önemli ayrım, özgür yazılıma karşı özel mülk yazılımdır . Bu, lisans koşullarını bildiren bir telif hakkı bildirimi ekleyerek yapılır . Herhangi bir bildirim bulunamazsa, tüm hakları saklıdır temerrüdü ima edilir.

Genel olarak konuşursak, yazılım, kullanıcıları herhangi bir amaç için kullanmakta, kaynak kodunu incelemekte ve değiştirmekte, tam kopyalarını vermek veya satmakta ve değiştirilmiş kopyalarını vermek veya satmakta özgürse, yazılım özgür yazılımdır. Yazılım, kaynak kodu gizli tutularak dağıtılırsa veya özel mülkiyete ait ve kısıtlanmışsa tescillidir . Yayınlanan ve bu özgürlükleri açıkça veren ilk yazılım lisanslarından biri 1989'daki GNU Genel Kamu Lisansı idi; BSD lisansı 1990 diğerine erken bir örnektir.

Tescilli yazılımlar için, kaynak kodunu kapalı tutmak için çeşitli telif hakkı yasalarının, ticari sırların ve patentlerin hükümleri kullanılır. Ek olarak, perakende yazılımların çoğu, derlemeyi çözmeyi , tersine mühendislik yapmayı , analiz etmeyi, değiştirmeyi veya kopya korumasının atlanmasını tipik olarak yasaklayan bir son kullanıcı lisans sözleşmesi (EULA) ile birlikte gelir . Geleneksel derlemeden nesne koduna kadar olan kaynak kodu koruma türleri arasında kod şifreleme, kod gizleme veya kod dönüştürme yer alır .

Kalite

Bir programın yazılma şekli, onu yönetenler için önemli sonuçlar doğurabilir. Okunabilirliği ve bazı dile özgü kuralları vurgulayan kodlama kuralları , hata ayıklama ve güncellemeyi içeren yazılım kaynak kodunun bakımını amaçlar . Programın yürütme hızı veya programı birden çok mimari için derleme yeteneği gibi diğer öncelikler, kod kalitesi genellikle amacına bağlı olduğundan, kodun okunabilirliğini daha az önemli hale getirir .

Ayrıca bakınız

Referanslar

Kaynaklar

Dış bağlantılar