Bilgisayar dilleri nasıl çalışır?

Programların nasıl çalıştığından bahsetmiştik. Her program eninde sonunda, bilgisayarınızın makine dilindeki komutları byte akımı olarak çalıştırmak zorundadır. Ancak insan duyuları makine diliyle pek de anlaşamaz; bu durum çok nadiren oluşmuştur, hatta hackerlar arasında bile büyücülük haline gelmiştir.

Hemen hemen tüm Unix kodları, çekirdekteki doğrudan donanım arayüz desteğinin ufak bir miktarını hariç tutar, bugünlerde yüksek seviyeli dillerde yazılmıştır('yüksek seviyeli' terimi bunları, aslında makine kodu etrafındaki ince sargı olan, 'düşük seviyeli' assembler dillerinden ayırt etme anlamına gelen bir tarihi kalıntıdır.)

Farklı, çeşitli türde yüksek seviyeli diller vardır. Bunlardan bahsetmek amacıyla, bir programın kaynak kodunun, makinenin gerçekte çalıştırabildiği makine kodlarına çeşitli şekillerde çevirilmek zorunda olduğunun akılda tutulmasının kullanışlı olacağını anlayacaksınız.

Derlenen diller

En geleneksel dil türü: derlenen bir dildir. Derlenen diller, derleyici denilen (mantıksal olarak yeterli) özel bir program tarafından, ikili makine kodunun çalıştırılabilir dosyalarına dönüştürülür. Bir kere ikili kod oluşturulduğunda, bu kodu tekrardan kaynak koduna bakmaksızın doğrudan çalıştırabilirsiniz. (Pek çok yazılım, sizin görmediğiniz koddan üretilen, derlenmiş ikili kod olarak teslim edilir.)

Derlenen diller, kusursuz performans gösterme ve işletim sistemine tam erişime sahip olmaya meyillidir. Ancak programlanması da zordur.

Unix'in yazıldığı dil olan C, dillerin (varyantı olan C++'la birlikte) önemli bir kısmından açık ara farkla öndedir. FORTRAN, hala mühendisler ve bilim adamları tarafından kullanılan, ancak eski ve ilkel olan bir başka bir derlenen dildir. Unix dünyasında, ana görüşe göre kullanılan başka derlenen diller yoktur. Bunun dışında, COBOL finansal ve işletme yazılımında yaygın olarak kullanılır.

Başka birçok derlenen dil kullanılmıştır, ancak çoğunun ya nesli tükenmiştir ya da tam anlamıyla araştırma araçlarıdır. Derlenen bir dil kullanan yeni bir Unix geliştiricisi iseniz, o dil çok çok büyük bir ihtimalle C ya da C++'dır.

Yorumlanan diller

Yorumlanan diller, kaynak kodu okuyan ve hesaplamalara ve sistem çağrılarına anında (on the fly) dönüştüren bir yorumlayıcı programına bağlı bulunur. Kaynağın kodun yürüteceği her zaman diliminde yeniden yorumlanması (ve mevcut yorumlayıcı) şarttır.

Yorumlanan diller, derlenen dillere göre daha yavaş olmaya meyillidir ve çoğu zaman işletim sisteminin ve donanımın alt kısmına sınırlı erişime sahiptir. Diğer bir taraftan, basit olmaya meyillidir ve derlenen dillere göre kod hatalarında daha bağışlayıcıdır.

Kabuk, bc(1), sed(1) ve awk(1)'yi içeren birçok Unix hizmeti; etkin, ufak derlenen dillerdir. BASICler genellikle yorumlanan dillerdir. Tcl gibi. Tarihe göre, en önemli yorumlayıcı dil LISP (varislerinin çoğundan daha büyük gelişme) olmuştur. Bugün, Unix kabukları ve Emacs düzenleyicisinde bulunan Lisp, muhtemelen en önemli, saf yorumlanan dillerdir.

P-code diller

1990'dan beri, derlemeyi ve yorumlamayı kullanan bir çeşit melez dil artarak önemli bir hal aldı. P-code diller, kaynağın, gerçekte yürüttüğünüz ancak makine dili olmayan, sıkıştırılmış bir ikili koda dönüştürülmesi açısından derlenen dillerle benzerlik gösterir. Onun yerine genellikle gerçek makine dilinden daha basit ama daha güçlü sözde kod (ya da p-code) vardır. Programı yürüttüğünüzde, p-code'u yorumlarsınız.

P-code, neredeyse derlenen bir ikili kod kadar hızlı çalışabilir (p-code yorumlayıcıları daha basit, ufak ve hızlı yapılabilir). Ancak p-code diller, iyi bir yorumlayıcının esnekliğini ve gücünü bulundurabilir.

Önde gelen p-code dilleri Python, Perl ve Java'dır.