Commodore sayı 7, sayfa 12

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 12

Bir stereo müzik seti veya bir video kayıt cihazı kullanmak isterseniz, kural olarak önemli birkaç tuşun fonksiyonlarını öğrenmeniz yeterlidir. Bir bilgisayarda ise durum oldukça farklı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 sonra, kendine ait ilk programların yazılması gündeme gelir: Bir programlama dilini, Basic'i öğrenmesi gerekmektedir. Fakat birçok örnekte sorun bu kadarla çözülmüş olmaz. Her şeyi Basic'le programlayacağına inandığı gelişme aşamasının sonuna geldiğinde, bu dilin bazı zayıf noktalarının da farkına varmaya başlar: Basic programları yavaştır; alt programların adlar yerine satır numaralarıyla çağrılması ve yapı komutlarının olmaması okunabilirliğ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 gerektirmeden aktarılmasını hemen hemen 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üleyici bir cazibe görüyor ve bu dil sayesinde 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 arama sırasında “Pascal”, “Forth” veya “LOGO” gibi kavramlarla karşılaşıyor.

Bir Programlama Dili Ne İçin Kullanılır?

Diğer insanlarla sohbet etmek istediğimizde, bir dil kullanırız. Aynı şekilde insanoğlu -belli bir anlamda- “akıllı” makinelerle iletişim kurabilmek için ortak bir temel-bir dil kullanır. Bu dil ilk planda sohbet etmeye değil, bilgisayara onu programlayabilmek için komutlar vermeye yarar. Bu dilleri kabaca iki ana gruba ayırmak istersek, bir grubu “makineye yakın” programlama dilleri (Assembler), diğerini ise Basic, Pascal, Fortran gibi “yüksek” programlama dilleri oluşturur. Assembler dillerinin belirli 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şlemciden bağımsızlıkları nedeniyle öne çıkarlar. Bu bağlamdaki en ideal durum, örneğin bir Apple bilgisayarında yazılmış bir Basic programının, üzerinde hiçbir değişikliğe gerek duymadan bir Commodore 64'te çalışması olurdu. Tabii ki bu, pratikte -özellikle Basic'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 arasındaki hardware farklılıkları nedeniyle, bu olanağın farklı makinelerde kullanı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 “portatif” olması, yani diğer bilgisayarlara aktarılabilir olması engellenmiş durumda. Bu bağlamda Basic makine düzeyine, diğer dillerin çoğundan daha yakın.

Derleyici ve Yorumlayıcı

Kk

Her bilgisayar, bir makine diline sahiptir. 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şılabilir bir dildir. Bunun bir üst düzeyinde zaten, makine dilinin her komutu için bir açıklama metni kısaltmasının bulunduğu, Assembler dilleri yer almaktadır. Kendileri ve “Assembler” olarak adlandırılan özel programlar, bu kısaltmaları makine diline çevirirler. Bu şekilde programlama, çok yorucu ve neredeyse bıktırıcı bir çalışma. Ayrıca bu tür Assembler programları da, başka bilgisayar sistemlerine ya hiç aktarılamıyor ya da çok zor aktarılıyor. Ellili yılların başlarında ilk kez “yüksek programlama dilleri”nin tutarlı bir şema taslağı oluşturuldu (bakınız şema). Bir yüksek dil, Assembler dilinden bazı temel noktalarda ayrılmakta. Bu programlar makineden bağımsızlar, yani herhangi bir sorun çıkmadan en farklı bilgisayarlarda bile kullanılabiliyorlar. Ayrıca bu programlar, bir insanın kullanması ve okuması açısından oldukça basit; bu da hata olasılığını hissedilir derecede azaltıyor. Fakat bu yararlar, bir handikapı da beraberinde getirmekte: Böyle bir yüksek dili doğrudan yerine 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 makine diline çeviren ve böylece bilgisayarın komutları yerine getirebilmesini sağlayan bir çevirmen. Bu çeviri süreci katı kurallara uygun olarak gerçekleşiyor. Aslında bu kurallara uyulması, bir algoritmanın varlığından başka bir anlam taşımıyor. Tabii bir algoritma programlanabilir ve böylece çeviri süreci otomatikleştirilebilir. Bu çeviri programları, “Compiler” (derleyici) olarak adlandırılıyorlar. Tabii ki, (farklı makine dillerine sahip) farklı bilgisayar sistemleri için farklı derleyiciler gerekiyor. Derleyici programın kendisi ve üretilen makine kodu, MİB'in türüne göre farklı olabiliyor. Fakat çevrilmiş olan program, 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-bilgisayarlarda yaygın olmak üzere, bir yüksek programlama dilini işlemenin ikinci bir yolu var. Örneğin Commodore 64, MİB olarak 6510 işlemcisini kullanır; 6510 ise birkaç Basic parçasını birarada kullanabilmeyi beceremiyor. Buna rağmen bu bilgisayarla çok rahat Basic'te çalışabiliyor. Programın önce çevrilmesi gerekmiyor, aksine program olduğu gibi yorumlanıyor. Bunun anlamı şu: C-64'ün Basic işlem

Klavyeyle gezinmek için ← ve → tuşları.