Bu sayfadaki yazılar
Sayfanın metni
Sayfa 66
Bilgisayarınızı amuda kaldırıp harikalar yaratmak düşüncesiyle herhangi bir AMIGA dili satın aldıktan sonra bu dilin aslında AMIGA için özel olarak yazılmamış olduğunu keşfettiğiniz oldu mu? Elinizdeki bu dil ya başka bir bilgisayarda geliştirilip AMIGA'da çalışacak şekle getirilmişti ya da her bilgisayarda çalışan ve Intuition olayını önsezi anlamında algılayan Meta veya Small C gibi basit bir public domain dil derleyicisiydi. Eğer siz de buna benzer bir durumla karşılaştıysanız bütün AMIGA dillerinin (bazılarının dökümantasyonu yeni başlayan veya orta derecedekilerden çok profesyonel kullanıcılara göre yapılmış olsa da) bilgisayarın özel yeteneklerine hitap edecek şekilde yazılmadığını fark etmişsinizdir. AMIGA'daki yüksek düzeyli dilleri konu alan bu yazıya diller hakkında üç temel soru sorarak başlayacağım. Bu soruların yanıtları, dilleri değerlendirirken göz önüne aldığım esas noktalar olacak. * Dil, AMIGA'nın ROM Kernel fonksiyonlarına (pencereleri ve menüleri açan, makineyi düzenli çalıştıran vb. rutinler) erişimi ne ölçüde sağlayabiliyor. Sistem çağrılarına yeterli bir erişim sağlayan bir dil, hemen her tür AMIGA yazılımı yaratabilir. * Dilin veya bu dilin herhangi bir bilgisayardaki versiyonunun kullanımı kolay mı? Hatırlarsanız, programlama (ki bu oldukça zaman alıcı bir iştir), dili yaratan kimsenin sağladığı bir ortamda yapılmaktadır. Bu noktada sizin dilden beklediğiniz, onun esnek ve epeyce hızlı çalışmasıdır. Sonuncusu ve kanımca en önemlisi dili öğrenmek ne derece kolay? Öğrenme eğrisi nedir? Eğer birden çok dilde tecrübe kazanmak istiyor ve seçimleriniz, yeteri kadar ustalaşmak için yıllarınızı alacak bir çaba gerektiriyorsa, sonuçta sınırlı bir tecrübeye sahip olursunuz. Burada, derleyiciye karşı çevirici, kod için bellek hacmi ve çalışma hızı en önemli kriterler olarak düşünülmemelidir. Bu yazıda bizzat üzerlerinde çalıştığım dilleri uygunluk, ortam ve anlaşılabilme açısından inceledim.
C, AMIĞA'nın orijinal yüksek seviye geliştirme aracıdır ve AMIGA'- nın işletim sisteminin birçok önemli kısmı C'de yazılmıştır. Her ne kadar Modula-2 şimdi C'ye ciddi bir rakip olduysa da, C hâlâ AMIGA yazılımı üreticileri arasında en popüler dil olma özelliğini koruyor. C ile makinenezin sahip olduğu bütün özellikler elinizin altında; ürettiği kod pek çok önemli, zamandönümlü faaliyetlerin üstesinden gelecek hızda çalışıyor. Bununla birlikte C'de program yazmanın dezavantajı, çalışma şeklinin pek kolay anlaşılabilir olmaması. Metin yerleştirme işlemi tamamen serbest bir şekilde yapılıyor ve fonksiyon adlarının çoğu anlaşılır olmaktan uzak. Birçok C programcısı kısa, üstü kapalı değişken adları kullanma alışkanlığına sahipler ki, bunları çözümlemeye kalkan bir kimsenin açık bir ifadeyle karşılaşması çok ender rastlanan bir durum. C adilini öğrenmek bu ve diğer nedenlerden ötürü kolay değil, ancak öğrenmek için harcanan emeğe değdiği tartışılmaz. AMIGA'da iki amansız rakip C dili mevcut: Lattice C ve Manx Aztec C. Her ikisi de AMIGA'yı programlamak için ihtiyaç duyacağınız dosyaların tümünü sağlıyorlar, fakat hiçbiri size C'de programlamanın nasıl yapıldığını göstermiyor. Bunun için ayrıca kalın bir referans kitabıyla birlikte araştırma yapmaya ve diğerlerinin kodlarına bakmaya gerek duyabilirsiniz.
MANX AZTEC €
Eğer C'de yazılım hazırlama fikri sizi ürkütüyorsa, bu dil paketini ilk inceleyişinizde bu korkularınızın hafifleyeceğini sanmayın. Her ne kadar eksiksiz gibi görünse de, kullanım kılavuzu, içinde kolayca kaybolabileceğiniz genişlikte. Çeşitli bölümleri seperatörler kullanarak gruplamak sık sık kılavuza başvurmak zorunda kalan deneyimsiz programcılara kolaylık sağlayacaktır. Manx sistemi dört farklı “bellek kalıpları”' için kod azmanıza imkan tanıyor. Basit olarak, bunlar kodu ve bilgi-alanlarını esnek biçimde kontrol etmenizle ilgili, fakat aynı zamanda karmaşık olmaları nedeniyle şaşırmaları neden olabiliyorlar. Ancak buna katlanırsanız, çok etkili bir C derleyicisi. Klıvuzda çok sayıda kaliteli örnek-program dosyası yeralıyor. Hatta C programlama tekniği konusunda bir bölüm bile var. Programlama tamamen CLI üzerinde yapılıyor. Tipik bir programlama döngüsü şu şekilde olmakta: 1. Gözde metin editörünüz ve C dili hedef dosyasını (source file) yükleyin. 67
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 67
2. Dosyanızı düzenleyin ve değişiklikleri kaydedin Makinenizin belleği 1MB'tan azsa editörden çıkın. 3. Hedef dosyanızın adını vererek Manx derleyici çalıştırın. 4. Derleyicinin vereceği hatalara dikkat edin. Bunları düzeltmek için dosyanızı yeniden düzenleyin. 5. Manx assembler otomatik olarak başlayacak ve derleyicinin çıktısını işleyecektir (C hedef dosyanız derleyici tarafından assembly diline çevrilmekte). 6. Son olarak programı, paketle birlikte sağlanan bağlayıcı (linker) ile Aztec C desket kitaplıklarına (kitaplık bir altrutinler topluluğu anlamına geliyor) bağlayarak çalıştırılabilir bir AMIGA programı haline getirin. 7. Programı çalıştırın ve bu arada yapmak istediğiniz başka bir şey, kahp kalmadığına bakın. Yazılımınız mükemmel hale gelene kadar 1. aşamaya kadar geri dönün. Aztec'in, AMIGA özellikleri konusundaki desteği oldukça eksiksiz. Sadece fonksiyonu ve kabul ettiği parametreleri belirterek AMIGA ROM Kernel fonksiyonlarından herhangi birisini çağırabilirsiniz. Bağlama aşamasında gereken yapıştırıcı rutinler (glue routines - bütün 68000 CPU sicillerinin yapılan sistem çağrısını (pencere açmak vb.) kabul edebilmesini sağlayan küçük altrutinler) Aztec kitaplıklarından okunuyor. Örnek olarak C, bütün parametreleri donanım yığınındaki bir fonksiyona iletir, ancak sistem rutinleri bu parametrelere CPU sicillerinde gerek duyarlar. Yapıştırıcı rutin parametreleri, yığından sicillere taşır ve sonra da kontrolü çağrısı yapılan fonksiyona geçirir, yani bir anlamda çağrı yapan programı sistem rutinine yapıştırır. Aztec sisteminin çok yararlı bir parçası da Seçimle Hedef Dosya Hata Düzelticisi. C'de yazdığınız programınızın hatalarını pek çok durumda dilinde düzeltmeniz gerekmekte. SHDHD ile sadece orijinal hedef kodu dosyasına bakmak durumundasınız. Bu çok faydalı özellik sayesinde iki yerine sadece bir dil öğrenmek zorunda olduğunuzdan, genel öğrenme eğriniz yükselecektir.
LATTICE €
Commodore'un programcılara dağıttığı orjinal AMIGA C olan Lattice şimdiye kadar çeşitli revizyonlardan geçti, ancak hâlâ yaklaşık Manx kuvvetlerine sayı ve sorumluluk olarak eşit bir kitlenin gözdesi. Dökümantasyon sizi dile, Manx paketinden daha yavaş alıştırıyor. Kılavuzun ilk üç sayfası, Lattice'den nasıl teknik yardım sağlayabileceğinizi incelikle tarif ediyor. Genelde kılavuz daha arkadaşça yazılmış, ancak eksiksiz olduğu söylenemez. Lattice C'nin en yeni versiyonu sonunda kullanıcıya bellek kalıplarına ilişkin bazı seçenekler sunuyor (sadece iki tane). Çok sayıda örnek program ve bazı çok açık seçik yazılmış AMIGA program organizasyonu ve erişimi mümkün değişik kategoride AMIGA fonksiyonlarını açıklayan sayfalar var. Yine, bu sistemle C programları yazmaya çalışmadan önce CLI'yi yalayıp yutmalısınız. Lattice'le program yazma esas olarak Manx derleyicisinin bir parça daha hızlı çalışması dışında Manx sistemiyle benzerlik gösteriyor. Manx gibi Lattice de yalnızca yapıştırıcı rutinlerle bağlanmış çok iyi bir ROM Kernel desteği sunmakla kalmıyor, ayrıca ROM Kernel rutinlerini yapışkan rutinlere başvurmadan doğrudan çağıran bir metod sağliyor. Böylece bu çağrıların işleme konması çok daha hızlı gerçekleşiyor. Genelde ele alırsak Manx sistemini az bir farkla Lattice'e tercih ediyorum. Her iki şirket de muhtemelen önümüzdeki yıllarda dilin geliştirilmiş versiyonlarını sunmaya devam edecekler -en azından ben öyle umuyorum- çünkü böyle bir rekabetten hepimiz faydalanacağız.
MODULA-2
Modula-2, Niklaus Wirth tarafından yine kendisinin yazdığı popüler Pascal dilinin yerini almak üzere geliştirildi. Anlaşılması kolay olduğundan ve mevcut iki ortamın ikisinin de kıllanışlı ve güçlü olmasından dolayı çok geçmeden yaygınca kullanılan bir AMIGA dili haline geldi. Modula-2 ile programlama problemlerinizi herbiri spesifik bir fonksiyonun altından kalkan modüllere ayırıyorsunuz. Bir modül iki kısımdan oluşuyor: Tanımlama modülü (Definition module), modül'ün parametre olarak ne beklediğini ve sonuç olarak çağrı yapan yazılıma ve göndereceğini anlatırken Tamamlama modülü (Implementation module) asıl işi bitiren programcılık ifadelerini kapsıyor. Tanımlama değişmediği sürece Tamamlamayı, yazılımın bu modülle kurduğu etkileşime dokunmak zorunda kalmaksızın istediğiniz şekilde değiştirebilirsiniz. Modula-2 sizi projelerinizin modüller halinde yapılandırmaya zorluyor ve diğer fonksiyonlara doğru parametrelerin geçirilmesi konusunda çok katı. En başta bu çok sıkıcı olabiliyor, çünkü dil tam anlamıyla çok eleyip sık dokuyan cinsten. Bununla birlikte Modula-2 ile kod yazma konusunda biraz tecrübe kazandığınızda esas faydanızı keşfedeceksiniz: Herhangi bir programınızı başarılı şekilde derleyip bağlayabiliyorsanız, doğru şekilde çalışacaklarından emin olabilirsiniz. Modula-2 derleyicileri sizin yapabileceğiniz programlama hatalarını - sadece sentaks hatalarını değil, aynı zamanda mantıksal hataları da Ye 90 önlüyor. Bazıları Modula-2'yi yavaş, hantal, şişirilmiş ve aşırı hassas görüyorlar, fakat bu kişisel bir zevk meselesi ve benim katılmadığım bir görüş. Başka bir eleştiri de - belki daha dayanıklı - dilin, C gibi dillerin bir özelliği olan belli bir bellek alanının kapsamını belirleme yeteneğine işaret ederek “ön belirlemeli bilgi yapıları” desteği olmadığı şeklinde yöneltiliyor. Modula-2'de yazdığınız program çalışmaya başladığında belleğe bilgi depolamak için çeşitli ifadeler kullanmak zorunda. Buna önemsiz bir kusur demek zor, çünkü AMIGA programcılığı kullanımdan önce belirlenmesi gereken çeşitli bilgi yapılarına fazlaca ihtiyaç duyuyor. Şu anda piyasadaki üç ana derleyiciye bakalım: TDI Modula-2, M2AMIGA ve Benchmark Modula- 2. Hepsi AMIGA programcılığı için eksiksiz hazırlanmış sistemler oldukları gibi, yukarıda C'de anlatıldığı gibi ROM Kernel fonksiyonları ile arabirim oluşturmak için yapıştırıcı rutinler kullanıyorlar. Bununla birlikte, benzerlikler burada son buluyor.