DİL DİLDEN ÜSTÜNDÜR

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

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.

TDI MODULA-2

AMIGA için gelişmiş bir Modula- 2'yi ilk sunan TDI oldu. BASIC'ten daha iyi ve C'den daha kolay bir dil arayan pek çok kimse bu paketi satın aldı. Almasına aldılar da, aynı zamanda şimdiye kadar gördüğüm en kullanıcı-düşmanı sistemlerden birine de sahip oldular. 3500 sayfalık kullanım kılavuzunda Modula-2 programı yazma ve kullanma konusunda 40 sayfadan daha az bilgi var. Kitabın gerisi örnek bir küp döndürme programı (güzel olduğunu inkar edemem) ve AMIGA -spesifik fonksiyonlar için Tanımlama modüllerinin listelerine ayrılmış ve dosyaları içine alıyor. Bu sistemi kullanarak Modula-2'yi öğrenmeyi planlıyorsanız, mecburi olarak dil için ayrıca bir programcılık kitabı satın almak zorunda kalacaksınız. Düzenle-derle-bağla döngüsü yukarıda bahsedilen C döngüsüyle benzerlik gösteriyor. TDI editörü derleyicinin hatalı bir dosyanın okuyarak derleme işlemi sırasında ortaya çıkan problemleri düzeltirken sırasıyla hataları ele almanızı sağlıyor. Bu çok yararlı bir özellik, fakat benim versiyonumda her zaman çalışmadı. Modula-2 uzmanı bir arkadaşım sayesinde birkaç günlük yoğun çabalar sonucu bu yazılımda bazı ilerlemeler kaydedebildim, fakat tekrar elime alıp kullanmam. Derleyicisi aşırı yavaş ve geçici dosyalar için gereksinim duyulan RAM veya disk genişliği dev boyutlara varıyor. Biten kod çok hızlı çalışsa da yegane Modula-2 sistemim olarak bunu seçmezdim.

M2 AMIĞGA

Bu yazılımla sorunlarım dağıtım disketinin çalışan bir versiyonunu bu iş için sağlanmış yazılımı kullanarak yaratmaya çalıştığımda başladı. Birçok kereler kilitlenerek beni derleyicinin kendi kalitesi konusunda şüphelere sevketti. Ancak sonunda tam olarak çalışan bir versiyon elde ettiğimde ve üzerinde çalışmaya başladığımda hoş sürprizlerle karşılaştım. İsterseniz yazılımı bütünüyle Workbench'ten kullanabilme imkanınız olduğundan, sadece birkaç dakika içinde M2AMIGA demo programlarını derlemeye başlayabiliyordum. M2AMIGA editörü ile hazırlanmış bir metin dosyası ikonunu klikleyerek yükleyin ve yaptığınız değişiklikleri kaydedin. Sonra derleyiciyi başlatmak için istediğiniz M2AMIGA derleyici ikonunu klikleyip yükledikten sonra arka arkaya istediğiniz kadar modülü derlemeniz mümkün. Son olarak derlenmiş obje dosyasının üzerine klikyaparak, bağlayıcıya onu diğer gerekli obje modüllerine bağlamasını söylüyorsunuz. Bu deneyimsiz bir programcı için M2AMIGA ile çalışmayı çok kolaylaştırıyor. Ayrıca sistemi CLI'den kullanabilir ve her bir dosya için meydana gelen ikon kalabalığını tamamen ortadan kaldırabilirsiniz. Dökümantasyon, esasen EMACS'- ın -popüler bir programlama editörübasitleştirilmiş bir verisyonu olan editörün çalışmasını yeterli şekilde açıklıyor. TDI editörü gibi hatalı dosyaları okuyabilen M2AMIGA editörünün problemleri düzeltmede oynadıği rol önemli. Kılavuz derleyicinin, kendisini ve programlarınızı nasıl organize ettiğini ve Modula-2 dizaynının esaslarından bazılarını açıklıyor.

Sistemi pazarlayan şirket olan Interface Technologies bir SHDHD, özel amaçlı kütüphaneler ve bir programcı paketini (sonuncunun ne işe yaradığı pek açık değil) kapsayan ek yazıhm desteği sağlıyor. Yazılım hazırlamak için fena olmayan bir sistem.

BENCHMARK MODULA-2

Paramı gözönüne aldığımda, en son çıkan Modula-2 derleyicisi aynı zamanda en iyi olanı. Benchmark paketi eleştirilmesi güç bir entegre editör-derleyici ve bağlayıcı kullanıyor. Editör, EMACS tipinde ama olanakları azaltılmak yerine daha da genişletilmiş. Yazılımımızı düzenledikten sonra sadece bir fonksiyon tuşuna basarak (paketle birlikte bir klavye maskesi de hediye ediliyor) derleyici yükleyip modülünüzü seri bir şekilde derleyebilirsiniz. Eğer herhangi bir hata olursa dosyayı hemen düzeltebilirsiniz. Bağlama işlemi için ikinci bir tuşa basın. Üçüncü bir tuş programınızı çalıştırıyor ve bütün bunlar editörün içinde gerçekleşiyor. Bu büyük rahatlık ve sürat. Editör komut adlarından bazılarını hatırda tutmak bir parça zor. Fakat Help tuşu ve/veya kılavuz ile her zaman yardim mevcut. Benchmark'ın dökümantasyonu 500 sayfadan daha uzun bir kitapla editörü ve bütün entegre sistemi nasıl kullanacağınızı çok iyi bir şekilde açıklıyor. Ayrıca destek olarak Tanımlama modüllerinin listelerini içe- Tiyor. Benchmark ile program yazma ve öğrenme süresi büyük ölçüde kısalıyor. Deneyimsiz bir Modula-2 kullanıcısının kılavuz, örnek dosyalar ve editör ile oturup birkaç saat içinde orijinal programlar yazmaya başlayabileceğine aklım yattı. Benchmark'ı yapan Avant Garde Yazılım aynı zamanda basitleştirilmiş Intuition kitaplığı, C yazılımını Modula-2'ye çevirmek için gereken zamanı kısaltacak şekilde dizayn edilmiş C diliyle eş fonksiyonlar kitaplıği ve bir IFF rutinleri kitaplığı gibi programlamayı kolaylaştıracak bazı desket yazılımları sunuyor.

Basic

Basicin, C kullanma “cesareti” olmayan “korkaklar” için yazılmış, işe yaramaz, standart olmayan bir programlama dili olma şeklinde kötü bir şöhreti vardır. Belki bunun içinde bir parça gerçek payı olabilir, fakat bu yaklaşım şimdi dayanaksız bir eleştiriden başka bir şey değil. Burada ele alınan her BASIC modelinin diğer dillerden aşağı kalmayan çeşitli özellikleri var ve AMIGA'nın gücüne neredeyse tam bir erişim sağlıyorlar. Hız bakımından, en azından iki tanesi yeterli hızda çalışan kod meydana getiriyor. Ayrıca hepsinin öğrenilmesi ve kullanılması çok kolay.

TREU BASIC

Birçok modern programlama düşüncelerini ve tekniklerini bünyesinde toplayan bir yapısal BASIC olan True BASIC, modülariteye, basit, anlaşılabilir program dizaynına uygun bir dil. uygun fakat eksiklikleri olan bir edötür kullanıyor. Kes ve ekle, ara, bul ve yerine koy fonksiyonları ile editörün içinden programınızı çalıştırabilir, satır izleyebilir veya programınızı derleyebilirsiniz. Derleme seçeneği dosyayı editörün tampobüyük bir bölümünü başka bir editörde yapın, sonra da yazılımı kontrol ederek sentaks hatalarını ve benzerlerini düzeltmek için AMIGA Basic editörünü kullanın. AMIGA -spesifik komutlara ek olarak AMIGA Basic ayrıca FD dosya değişimi yoluyla ROM Kernel rutinlere hemen hemen eksiksiz bir erişim sağlıyor. FD dosyaları Commodore tarafından dağıtılan ve ROM Kernel'daki her kitaplık için birer tane olan “Fonksiyon Tanımlama' dosyalarıdır. Intutition, Exec(ution) ve Grafikler vb. ayrı dosyalar varır. Bu dosyalar kitaplıktaki her fonksiy nun listesini ve hangi CPU sicillerinde parametrelerin geçirilmesini beklediğini belirtirler. AMIGA Basic bu bilginin aynısını fakat bir BMAP dosyası şeklinde istediğinden, Commodore belirtilen bir FD dosyasından istenen BMAP dosyasını yaratacak bir çevirici programı ihmal etmemiş. Bunu yaptıktan sonra ROM Kernel fonksiyonlarını, kullanmak istediğiniz kitaplıkları vererek doğrudan çağırabilirsiniz. AMIGA Basic kolay öğrenilen ve satır izleme fonksiyonları sayesinde hata bulup düzeltmeyi kolâylaştıran bir dil. Çevirici ile çalışan mükemmel bir yazılım oluşturduğunda, derleyici satın alıp onu gerçek anlamda çalışır hale getirebilirsiniz.

AC/BASIC COMPILER V1.3'ün en son versiyonu programlarınızın daha önce pek görmeye alışık olmadığınız şekilde çalışmalarını sağlayacak. Yani hızlı çalışacaklar. Bu derleyici hedef kodunuzu 68000 makine koduna çeviriyor ve bunu da bayağı çabuk gerçekleştiriyor. 5000 satırı geçen hedef dosyaları derleyiciye doldurdum ve problemsiz çalıştı. Bu iş için herhangi bir özel editör bulunmuyor, bu nedenle hedef kodu dosyalarınızı ED veya AMIGA Basic editörü ile düzenlemeniz gerekiyor. AMIGA Basic yazılımınızı derleyici ile birlikte kullanmak için sentaksta bazı değişiklikler yapmak ve bazı durumda içinde çeşitli programlama aşamalarının olduğu program akışını değiştirmek zorunda kalabiliyorsunuz. Eğer kodu derleyici için özel olarak yazıyorsanız, bu çevirici bir sorun çıkarmayacaktır. Derleyici versiyonunda çevirici ile derleyici arasında bir hayli uyumsuzluklara rastladım, fakat V1.3'te bütün bu sorunlar düzelmiş gibi görünüyor.

AC/BASIC yeni versiyonda ayrıca iki ortam arasında uyumsuzluklar yaratması mümkün bazı yeni kontrol yapıları ve komutlara sahip. Normalde, derlenmiş dosyaların düzgün çalışabilmeleri için AC/BASIC run-time dosyalarının ortamda mevcut olması gerekli, ancak kodunuzu öyle bir şekilde derleyebilirsiniz ki, run-time kodu dosyalarınıza otomatik olarak eklenir. Bu, dosyayı tamamiyle bağımsız hale getirmekte, fakat bunun için de Absoft'tan runtime kodu yerleştirilmiş dosyaları çoğalttığınız için bedelsiz bir lisans almanızı gerektiriyor. Derleyici ile birlikte gelen mükemmel kılavuz derleyicinin tanıdığı bütün komutları detaylı biçimde açıklayarak bir bakıma AMIGA Basic kılavuzu yerine geçiyor. Örnekler ve iyi önerilerle dolu olan bu kılavuz büyük rahatlıkla okunabilir şekilde basılmış. Mouse ile kontrol edilen ve kolay kullanımlı derleyicinin çalışması tam olarak ele alınıyor. AC/BASIC ROM Kernel erişimini AMIGA Basic'in yaptığı şekilde başarıyor, bu yüzden burada herhangi bir uyum problemi ortaya çıkmıyor. Tüm sistem kontrol ve makine dili hızlarıyla BASIC'te 'gerçek' bir programlama diliyle yazılmış gibi görünen programlar yaratabilirsiniz.

F-BASIC

Tam anlamıyla bir hız değişikliği için Delphi Noetic Systems Inc.'in bu BASIC derleyicisini deneyin. Bir BASIC hedefinden gördüğüm en hızlı kodu üreten F-Basic birçok ileri programlama ve optimalizasyon özelliğinin yanında AMIGA programcılığını kolaylaştıran çok sayıda fonksiyona sahip. Bu dil ayrıca bütün BASIC'ler içinde en fazla teknik ustalık gerektireni; karmaşık yetenekleri ve CLI'den oluşan arabirimi sayesinde en yüksek öğrenme eğrisine sahip. F-Basic, programınızı bir tamponda (buffer) derledikten sonra bu derlenmiş kodu diskete kaydetmenize olanak tanıyor. True BASIC programları, makine koduna değil de bağımsız bir yalancı-kod'a derliyor. Bu da eğer hedef kodunuzu da çoğaltıp dağıtmadan, True BASIC ile hazırlanmış yazılımı dağıtmak istiyorsanız, True BASIC'ten kendi run-time destek kodunu dağıtmak için lisans almanız gerektiği anlamına geliyor. True BASIC'in dökümantasyonu çok çok iyi, hatta şimdiye kadar gördüklerimin en profesyonelce yazılmış olanlarından birisi. İki ciltlik detaylı kılavuz kolay okunur, iyi indekslenmiş ve öğretici türden. Aslına bakacak olursanız yazılımın kendisi de kılavuza verilen önem gösterilmiş olsaydı, bu gerçekten harika bir BASIC olacaktı. Maalesef, derleyiciyi çok yavaş buldum, hatta bazı hatalar bile keşfettim. Büyük dosyalarda bazen yazı tamponunu göçertip source kodunu yok eden rastgele hatalar meydana geliyor. Dil, kendisini yaratanların, IBM PC, Atari ST ve Macintosh'ta çalışan True BASIC ile tam olarak uyumlu olduğunu savundukları bir komut setiyle övünmekte. Buna ek olarak isteğe bağlı özel bir programcı paketi satın alarak True BASIC'in yapıştırıcı rutinleri üzerinden AMIGA'nın bütün fonksiyonlarına erişim imkanına sahip olabilirsiniz, fakat tabii ki bu kodunuzun portatif olma özelliğini yok edecek. Bu da beni bu BASIC'e ilişkin bir numaralı şikayetime getiriyor: Uyumlu komut seti AMIGA'ya özgü bir şey yaratacak kadar iyi değil. Line, Box ve Draw fonksiyonlar şimdi çok yaygın fakat ek harcama getiren programcı rutinlerini kullanırken portatifliği kaybediyorsunuz. Ancak AMIGA Basic birazdan göreceğimiz gibi AMIGA'ya aynı çeşit bir alt-kademe erişim sağlıyor. Bu nedenle, bütün yapmak istediğiniz True BASIC'in çalıştığı dört değişik model bilgisayarda da aynı şekilde görünüp çalışacak programlar yapmaksa bu sizin hayalinizdeki dildir. Fakat gerçekten AMIGA'nızda bu tip yazılım mı hazırlamak istiyorsunuz? True BASIC Inc. ayrıca yazı dizisi manipülasyonu, üç boyutlu grafikler ve sıralama ve araştırma gibi görevler için bazı destek kitaplıkları sağlıyor.

AMIGA BASIC

Eğer henüz Extras disketinizin derinliklerine dalmadıysanız, bunu şimdi yapın. AMIGA'nızı satın aldığınızda verilen BASIC her türlü amaç için yeterli bir dildir. Microsoft BASIC'in AMIGA versiyonu güvenilir ve çok sayıda dahili AMIGA-spesifik fonksiyonu içeren iyi dökümantasyonla bir BASIC olarak göze çarpıyor. Bu aslında makine diline çevrilen bir BASIC fakat AC/BASIC V1.3 derleyicisi ile (aşağıda anlatılan) yazılımı tek parça haline getirerek derleyebilirsiniz. Bununla birlikte editöründen nefret ediyorum (mümkün olduğunca Macintosh versiyonuna benzer yapılmaya çalışılmış). Kursor öyle ufak ve mouse kontrolü öyle sıkıcı ki, bir dosyada uzun süre uğraşıp düzenlemeler yapamıyorum. Bu problemin çözümü mü? Düzenleme işleminin F-Basic'te yapılmasına ulaşıyor. Ne olursa olsun öğrenmek için harcayacağınız çabaya değer. Üstelik pakette size yardımcı olacak 70 kadar örnek program yer alıyor. F-Basic'in diğer pek çok BASIC'te bulunmayan özellikleri arasında recursion, kayıt yapıları (C yapılarına benzer şekilde ve AMIGA'da sıkça kullanılan), pointer'lar ve 68000 CPU sicillerine doğrudan erişim imkanı bulunuyor. Bu çok gelişmiş ve ileri özellikleri kullanmaya pek ihtiyacınız olmayacak, fakat ileride gerek duyarsanız elinizin altında hazır duruyor olacaklar. AMIGA'nın pencereleri, ekranları ve menüleriyle kolayca çalışabilmenizi sağlayan fonksiyonlar da mevcut, ancak karakter dizileri ve sayıların bellekte nasıl düzenlendiğini öğrenmeniz gerekiyor. Bu fonksiyonlar oldukça kısıtlı, bu yüzden kendinizi F-Basic'ten ROM Kernel rutinlerini nasıl çağıracağınıza ilişkin bir araştırmaya başlamış olarak bulabilirsiniz. Bunu, “&SYSLIB” ifadesini hedef dosyanıza yerleştirerek ve sonra da istenen kitaplıkları açmaya yarayan F-Basic komutunu girerek yapmanız mümkün. Doğru kitaplıkları açtığınızda parametreleri onlara geçirerek ROM Kernel rutinlerinden herhangi birini çağırabilirsiniz. F-Basic sistem çağrılarının kendi yapıştırıcı rutinleriyle mi yoksa siciller hazırlanarak çağrıların doğrudan mı yapıldığı konusunda tam olarak emin değilim, fakat hepsi çalışıyor. Derleyici ve derlenmiş yazılımı çalıştırırken F-Basic run-time destek kitaplıklarının sürekli mevcut olması gerekiyor. İşin ilginç yanı derleyicinin kendisinin de F-Basic'te yazılmış olması. Eğer run-time destekli F-Basic kodunuzu çoğaltmak istiyorsanız, her ürün için bir lisans çıkarmanız ve bir kayıt ücreti yatırmanız gerekiyor. Paketi yapanlar derleyicinin daha iyi bir versiyonunun, bir SHDHP ve “F-Basic Mantıksal Programlama Uzantısı” (her nasılsa Prolog ve Lisp ile bağlantılı) hazırlanmakta olduklarını verdikleri ilanlarda açıklıyorlar. Bir BASIC bunlara kadir miydi acaba? Eğer hemen rahatlıkla kullanabileceğiniz bir BASIC istiyorsanız, benim önerim AMIGA Basic ve aynı zamanda AC/BASIC derleyicisini satın almanızdır. Fakat daha fazla güç ve sürat peşindeyseniz, o zaman F-Basic doğru seçimdir - tabii onu öğrenmeye ayıracak vaktiniz varsa.

Forth

Derler ki, “Forth'u ya seversin ya da ondan nefret edersin”. Arada bir tarafsız kalanlara da rastlayabileceğiniz gibi, bu deyiş esasen doğrudur.

Benim gibi dilinde program yapmaktan hoşlanıyorsanız, mutlaka bu dili seveceksiniz. Çünkü assembly diline en yakın yüksek seviyeli dil bu dildir. Son derece esnek bir dil olan Forth'ta programlamanın kendisi dile komut eklemek şeklinde olmaktadır.

:merhaba. ifadesi, adında yeni bir komut tanımlamanın Forth'ça şeklidir ve çalıştırıldığında yazacaktır. Her Forth sisteminin bir çevirici ve bir derleyicisi vardır. Programınızı, yeni komutlardan oluşan kendi komutlarınızı dile derleyerek tanımlarsınız; bundan sonra çevirici ona verdiğiniz komutları işleme koyacaktır. Örneğin sadece şunu yazarsınız;

merhaba

Forth çeviricisi yeni komutunuzu çalıştıracaktır. Komutlar veya kelimeler bir çok farklı hazinesi halinde gruplanmış bir 'sözlük'te saklanırlar. Forth bazen dokuma bir dil olarak çağrılır, çünkü kelime hazineleri sözlük içinde sanki iplerle birbirlerine bağlanmıştır. Diller içinde en kavranılabiliri olmayan Forth özel kapalı isimler kullanır ve gerçek Forth programcıları bu isimlerin doğru telaffuzu konusuna önem verirler. Forth hedefini okuma ve anlama yeteneğiniz, hatta bu kendi hedefiniz bile olsa, tamamen programcının kendi açıklık ve tekniğine bağlıdır. Buna karşın yine de karşıt söylentilere rağmen anlaşılabilir Forth programları yazmak mümkün. Ayrıca Forth, programcıları modüler kod bakımından düşünmeye zorluyor. Bir Forth kelime tanımının ne kadar kısa ve basitse o derece iyi olduğunu düşünürseniz, programdaki her kelimenin ufak bir görev yaptığını anlarsınız. Forth kelimeleri, parametreleri yığında birbirine iletirler, fakat pek çok dilde bulunan komutların aksine çağrı yapan yazılıma çoklu sonuçlar verme gibi bir özellikleri var. AMIGA için yazılmış Forth sistemlerinin iki temsilcisi, Multi-Forth ile CSI ve JForth ile Delta Rocoanoh. Her ikisi de iyi yazılmış profesyonel yazılım paketleri, iyi dökümantasyon ve pek çok örnek sunuyorlar. Sistemler ayrıca 68000 assembly dili arabirimlerine ve tek parça program yapabilme özelliğine sahipler.

Her ne kadar diğer AMIGA dilleri kadar yaygın olarak kullanılmasa da Forth birçok programcının AMIGA'da vazgeçmeye yanaşmayacağı bir dil. AMIGA için yazılmış pek fazla Forth sistemi yok ancak mevcut olanlar bu eksikliği hissettirmiyorlar.

MULTI-FORTH

İki sistemden gösterişin daha ağır bastığı CSI Multi Forth, kullanımı kolay ve multitasking çalışan bir Forth. Kullanım kılavuzu iyi yazılıp kabarık Forth sözlüğündeki kelimelerden bazılarının fonksiyonlarını anlatan çizimlerle resimlendirilmiş. Bu Forth'u tam olarak öğreten bir kitap değil, ancak zaten Forth'ta karmaşık programlar yazmak istiyorsanız başka bir kitaba mutlaka ihtiyacınız olacak. Sistem, kolayca programı düzenlemeden derlemeye geçebileceğiniz iyi bir çalışma ortamı yaratıyor. Her ne kadar Multi-Forth bir editör ile birlikte satılmıyorsa da, örneğin EMACS gibi bir editörle aynı anda çalıştırılabilecek kadar kısa bir program. EMACS kendi özel ekranında çalıştığından, dosya üzerinde değişikliklerinizi bu ekranda yapabilir, bunları kaydedebilir sonra da Multi-Forth'un çalışmakta olduğu Workbench ekranına geri dönüp ondan programınızı derlemesini isteyebilirsiniz. İşte multitasking rahatlığı bu! CSI, Forth komutları için oldukça büyük bir sözlük hazırlamış, fakat şirket, bu sözlüğe rakibi gibi bir fonksiyonla organize olan kelimelerin bir listesini de dahil etseydi daha iyi olacaktı. Belki bir görevi yapmak için bir kelime arıyorsanız, adını hatırlamadığınız zaman sözlüğü, aradığınız kelimeyi bulana kadar rastgele karıştırmaktan başka çare kalmıyor. Derleyici bana biraz yavaş çalışıyor gibi göründü. Uzun dosyaları derlemek uzun dakikalar alabiliyor, fakat herhangi bir önemli hataya rastlamadım. Multi-Forth AMIGA ortamına uydurulmuş ideal bir multitasking Forth. Bellekte derleyici/çeviricinin sadece bir kopyası olduğu halde, istediğiniz sayıda tek ve bağımsız Forth programı çalıştırabilirsiniz. Multi-Forth bütün ROM Kernel fonksiyonlarına erişim sağlıyor. Parametreleri yığından alıp CPU sicillerindeki sistem fonksiyonlarına geçirmek için yapıştırıcı rutinler kullanıyor. Multi-Forth bunun yanında C benzeri yapılarla çalışmayı kolaylaştıran, özel olarak hazırlanmış pek çok kelimeye sahip. Böylelikle bilgiyi belleğe doğrudan derledikten sonra C'de yaptığınız gibi yazı kapsamlarına ve bilgi alanlarına bakabiliyorsunuz. Bu Forth'a çeviri yapacak C programcıları için bir artı avantaj. Ürün desteği çok iyi olarak göze çarpıyor. CSI'ın CompuServe'deki Q&A forumu (GO FORTH komutu ve modemle bağlanabilirsiniz), CSI kadrosu ve kullanıcılar arasında yararlı bir bilgi köprüsü oluşturuyor. Örneğin derleyiciyi daha kolay çalıştıran bir komut yazarsam, bu komutu sizinle paylaşmam mümkün oluyor ve siz de bunu kendi dil kopyanızın içine atabiliyorsunuz. Bu derleyici/çeviricinin yeteneklerini genişletmek anlamına geldiğinden, oldukça önemlidir ve bunu BASIC'te yapamazsınız. CSI, Multi-Forth'un son versiyonun daha küçük bir kod hacimli, IFF destekli ve daha hızlı olacağını vaat ediyor.

JFORTH

Teknik olarak daha gelişmiş bir Forth olan JForth, Multi-Forth'un şu andaki versiyonundan daha hızlı derleme yapıyor. Ayrıca sözlük girişlerini sıraya sokarken gerçek bir 32-bit adresleme kullanıyor. Bu daha hızlı, fakat aynı zamanda daha fazla bellek harcayan bir metot. Bu paketin kılavuzunda güzel çizilmiş sanatkarane resimler yok, sadece 350 sayfalık geniş bir indeks ve bir fonksiyon ile organize olan kelimelerin bir listesi bulunan oldukça açık bir anlatım var. Mükemmel denebilecek bir alfabetik sözlük tanımlanmış kelimelerin değişik kullanım şekillerini içeriyor. JForth ile EMACS'ı kullanarak Multi-Forth'ta bahsettiğime benzer şekilde bir düzenle-derle döngüsü prosedürü yaratabilirsiniz ve benim tavsiyem de bu zaten. JForth iyi bir ROM Kernel desteği sağlıyor ve kitaplık için FD dosyasını kullanarak, diğer kitaplıklar için uygun biçimde bir destek sağladıktan sonra, kitaplığı açmak için gereken bir veya iki kelimeyi yazmaya izin veren özel bir mekanizması var. Multi-Forth'ta ise yeni kitaplıkların her fonksiyonu için kendi yapıştırıcı rutinlerinizi yazmalısınız. JForth ayrıca floating-point matematik fonksiyonları, (birçok Forth sadece fixed-point matematik kullanmakta) bir 68000 disassembler, menüler ve benzerleri için “kolay Intuition” fonksiyonları, biraz daha doğal C yapı arabirimi ve dört ayrı Forth lehçesi veya standartı arasına dönüşüm yapabilme özelliklerine sahip. Özellikle sonuncusu programlamada büyük kolaylık sağlıyor, çünkü başka bir makinede çalıştığınız Forth'un aynısını sunarak verimliliği artırmada rol oynuyor. Bu iki Forth sistemi arasında seçim yapmak güç çünkü her ikisi de oldukça iyi. C arenasında Manx Aztec'e karşı Lattice'de karşılaştığımız duruma benzer şekilde, büyük olasılıkla bu Forth şirketlerinin her ikisi de uzun süre herkese yararlı olacak geliştirilmiş ve düzeltilmiş versiyonlar sunacaklar. Şimdi AMIGA'da dört ayrı yüksek seviye dil ile bu dillerin 11 farklı örneğini görmüş oldunuz. Belki seçeneklerin çokluğu, kendi programlama ihtiyaçlarınıza uygun bir tanesini seçmenizi kolaylaştırmaktan çok zorlaştırıyor. Fakat en azından biz AMIGA kullanıcıları, ilginç ve AMIGA'ya has uygulamalar yaratmak için çok miktarda AMIGA-spesifik seçenekler olmadığından yakınamayız.