Bir stereo müzik seti veya bir video kayıt cihazı kullanmak isterseniz, ku- ral olarak önemli birkaç tuşun fonk- siyonlarını öğrenmeniz yeterlidir. Bir bilgisayarda ise durum oldukça fark- lıdır. Müstakbel bir programcı her ne kadar öncelikle bilgisayarın tuşlarının işlevlerini öğrenmek zorundaysa da, bu aşamayı binbir zorluk, çabayla ve ilk defa karşılaştığı el kitabını adım adım çözerek ardında bıraktıktan son- ra, kendine ait ilk programların yazıl- ması gündeme gelir: Bir programlama dilini, Basic'i öğrenmesi gerekmekte- İ Fakat birçok örnekte sorun bu ka- darla çözülmüş olmaz. Her şeyi Ba- sic'le programlayacağına inandığı ge- lişme aşamasının sonuna geldiğinde, bu dilin bazı zayıf noktalarının da far- kına varmaya başlar: Basic program- ları yavaştır; alt programların adlar yerine satır numaralarıyla çağrılması ve yapı komutlarının olmaması oku- nabilirliğini zorlaştırmaktadır ve son olarak da farklı Basic versiyonlarının çokluğu başka bilgisayar sistemlerinin programlarının fazla bir değişiklik ge- rektirmeden aktarılmasını hemen he- men olanaksız kılmaktadır. Bu zayıf noktalar programcıyı ister istemez bir başka programlama diline geçmeye zorlamaktadır. İşte tam bu noktada programcılar cemaati bölünmeye uğruyor: Bir grup, “makine dili”' kavramında büyüleyi- ci bir cazibe görüyor ve bu dil saye- sinde kendini Basic'in byte-byte uğraş- ma gerektiren zayıflığından kurtarı- yor. Diğer bir grup ise Basic'in ger- çek alternatiflerini arıyor ve bu ara- ma sırasında “Pascal”', “Forth” ve- ya “LOGO” gibi kavramlarla karşı- laşıyor. Bir Programlama Dili Ne İçin Kullanılır? Diğer insanlarla sohbet etmek iste- diğimizde, bir dil kullanırız. Aynı şe- kilde insanoğlu -belli bir anlamda- *“akıllı” makinelerle işletim kurabil- mek için ortak bir temel-bir dil kulla- nır. Bu dil ilk planda sohbet etmeye değil, bilgisayara onu programlayabil- mek için komutlar vermeye yarar. Bu dilleri kabaca iki ana gruba ayır- mak istersek, bir grubu “makineye yakın” programlama dilleri (Assemb- ler), diğerini ise Basic, Pascal, Fort- ran gibi “yüksek” programlama dil-. leri oluşturur. Assembler dillerinin be- lirli bir MİB'le (Merkezi İşlem Birimi, CPU -— Central Processing Unit) yakın bağımlılık içinde olmalarına karşın, yüksek programlama dilleri kolay okunabilirlikleri ve özellikle işlemci- den bağımsızlıkları nedeniyle öne çı- karlar. Bu bağlamdaki en ideal du- rum, örneğin bir Apple bilgisayarın- da yazılmış bir Basic programının, üzerinde hiçbir değişikliğe gerek duy- madan bir Commodore 64'te çalışma- sı olurdu. Tabii ki bu, pratikte -özellikle Ba- sic'te- geçerli olamamakta. Bunun iki nedeni var. Nedenlerden biri, Basic versiyonlarının yeni standarttan farklı versiyonların çokluğu. Diğer neden ise, makine düzeyinden kaynaklanı- yor. Basic'te PEEK, POKE ve SYS ile doğrudan makine düzeyine erişme olanağı var. Fakat bilgisayarlar ara- sındaki hardware farklılıkları nedeniy- le, bu olanağın farklı makinelerde kul- lanılması farklı sonuçlar doğuruyor. Makine düzeyine erişim olanağından, dar anlamda “yüksek'' programlama dillerinde mümkün olabildiğince ka- çınılmış ve böylece programların “por- tatif”” olması, yani diğer bilgisayarlara aktarılabilir olması engellenmiş du- rumda. Bu bağlamda Basic makine düzeyine, diğer dillerin çoğundan da- ha yakın. AEREKEA Derleyici ve Yorumlayıcı Her bilgisayar, bir makine diline sa- hiptir. Bu, merkezi işlemcisinin doğ- rudan anlayabildiği dildir. Bu “dil”, ne yazık ki yalnızca “*1”” ve “0”'ların bulunduğu dizilerden oluşmaktadır. Yani insanlar açısından zor anlaşıla- bilir bir dildir. Bunun bir üst düzeyin- de zaten, makine dilinin her komutu için bir açıklama metni kısaltmasının bulunduğu, Assembler dilleri yer al- maktadır. Kendileri ve ““Assembler”' olarak adlandırılan özel programlar, bu kısaltmaları makine diline çevirir- ler. Bu şekilde programlama, çok yoru- cu ve neredeyse bıktırıcı bir çalışma. Ayrıca bu tür Assembler programla- commodore rı da, başka bilgisayar sistemlerine ya hiç aktarılamıyor ya da çok zor akta- rılıyor. Ellili yılların başlarında ilk kez “yüksek programlama dilleri”'nin tu- tarlı bir şema taslağı oluşturuldu (ba- kınız şema). Bir yüksek dil, Assemb- ler dilinden bazı temel noktalarda ay- rılmakta. Bu programlar makineden bağımsızlar, yani herhangi bir sorun çıkmadan en farklı bilgisayarlarda bile kullanılabiliyorlar. Ayrıca bu prog- ramlar, bir insanın kullanması ve oku- ması açısından oldukça basit; bu da hata olasılığını hissedilir derecede azaltıyor. Fakat bu yararlar, bir han- dikapı da beraberinde getirmekte: Böyle bir yüksek dili doğrudan yeri- ne getirebilecek hiçbir işlemci yok; çünkü bu diller, makine için fazla “yüksek”. Bu problemin çözümü de kolay. Gerek duyulan şey, yüksek dili maki- ne diline çeviren ve böylece bilgisaya- rın komutları yerine getirebilmesini sağlayan bir çevirmen. Bu çeviri sü- reci katı kurallara uygun olarak ger- çekleşiyor. Aslında bu kurallara uyul- ması, bir algoritmanın varlığından başka bir anlam taşımıyor. Tabii bir aligoritma programlanabilir ve böyle- ce çeviri süreci otamatikleştirilebilir. Bu çeviri programları, ““Compiler'' (derleyici) olarak adlandırılıyorlar. Tabii ki, (farklı makine dillerine sa- hip) farklı bilgisayar sistemleri için farklı derleyiciler gerekiyor. Derleyi- ci programın kendisi ve üretilen ma- kine kodu, MİB'in türüne göre farklı olabiliyor. Fakat çevrilmiş olan prog- ram, bilgisayar sisteminden tamamen bağımsız olarak her zaman aynı şeyi, yani yüksek dil programı tarafından öngörülmüş olanı yapar. Bunun yanısıra, özellikle mikro-bil- gisayarlarda yaygın olmak üzere, bir yüksek programlama dilini işlemenin ikinci bir yolu var. Örneğin Commo- dore 64, MİB olarak 6510 işlemcisini kullanır; 6510 ise birkaç Basic parça- sını birarada kullanabilmeyi beceremi- yor. Buna rağmen bu bilgisayarla çok rahat Basic'te çalışabiliyor. Progra- mın önce çevrilmesi gerekmiyor, ak- sine program olduğu gibi yorumlanı- yor. Bunun anlamı şu: C-64'ün Basic