Charles H. Moore, radyo teleskoplarını ve veri toplama/indirgeme sistemlerini kontrol etmeye yardımcı olmak için ABD Ulusal Radyo Astronomi Gözlemevi’nde çalışırken Forth’u geliştirdi. Burada, Forth’un neden ortaya çıktığını ve bugün hâlâ neden Forth ile çalıştığını anlatıyor.
Forth nasıl ortaya çıktı?
Yeni piyasaya sürülmüş bir IBM 1130 mini bilgisayarıyla karşı karşıya kaldığımda Forth ortaya çıktı. Bir Fortran programını derlemek, birden fazla kart destesini içeren zahmetli bir süreçti. Fortran’ı kullanarak ilk Forth’u geliştirdim; bu, Fortran’ın kullanamadığı disk ve grafik ekranını kullanabiliyordu. Etkileşimli olduğu için programlama sürecim çok daha hızlı ve kolaydı.
Çözmeye çalıştığınız belirli bir problem var mıydı?
Bu bilgisayar Mohasco Industries’deydi. Ana ürünleri halıydı ve sorun, 1130’un halı tasarımına yardımcı olup olamayacağını belirlemekti. Forth, 2250 ekranını programlamak için harikaydı, ancak nihayetinde renk eksikliği projeyi sona erdirdi.
Dilin geliştirilmesi sırasında zor kararlarla karşılaştınız mı?
Forth’u geliştirirken verilen en zor karar, bunu yapıp yapmamak oldu. Diller gelişigüzel tasarlanmazdı. Bunun parlak bir ekip ve yıllar süren emek gerektirdiği söylenirdi. Benim gözüm ise hızlı ve basit bir şeydeydi.
Forth adını nasıl aldı?
Buna, 4. nesil bilgisayar dili anlamında Fourth adını vermeye karar verdim. Ancak 1130 dosya sistemi adları 5 karakterle sınırlıyordu, bu yüzden kısaltıp Forth yaptım. Şanslı bir seçimdi; çünkü Forth’un birçok olumlu çağrışımı var.
Forth’un, 1958’de geliştirmeye başladığınız kişisel programlama sisteminizden türetildiğini okudum. Bununla ilgili biraz daha anlatabilir misiniz?
Kişisel programlama sistemim, ne yazık ki artık kayıp olan bir delikli kart destesiydi. Biçimsiz girdi/çıktı, aritmetik algoritmalar ve basit bir yorumlayıcı yapan bir dizi Fortran alt yordamı içeriyordu. Yeniden derlemenin yavaş ve zor olduğu bir dönemde, girdisi aracılığıyla bir programı özelleştirmeme olanak tanıyordu.
Dile Ters Lehçe gösterimini (Reverse Polish notation) neden dahil ettiniz?
Ters Lehçe gösterimi aritmetik ifadeleri tanımlamanın en basit yoludur. Cebirde kullanılan orta ekli gösterime geçmeden önce, ilkokulda aritmetiği böyle öğrenirsiniz. İşin yapılmasını sağlamak adına her zaman sadeliği tercih ettim.
Dil özellikle Ulusal Radyo Astronomi Gözlemevi’ndeki çalışmalarınız için mi geliştirildi?
NRAO’daki çalışmalarımın çoğunu Forth ile yaptım: idarenin isteksiz onayıyla birkaç radyo teleskopunu ve veri toplama/indirgeme sistemlerini kontrol ettim. Buna izin verilmesinin tek nedeni işe yaramasıydı: projeler yıllar yerine haftalar sürdü; benzersiz performans ve yeteneklerle.
Şimdi dili yeniden tasarlama şansınız olsaydı, farklı yapacağınız bir şey olur muydu?
Farklı bir şey yapar mıydım? Hayır. Hayal ettiğimden daha iyi sonuçlandı. Forth’la ilgili şey şu ki, bir değişiklik isteseydim, onu yapardım. Bu bugün de geçerli. Forth gerçekten bir dil araç setidir. Yeni bir uygulamayla her karşılaştığınızda onu seçer ve değiştirirsiniz.
Hâlâ Forth kullanıyor/musunuz?
Kesinlikle evet; her gün Forth kodu yazıyorum. Birkaç basit sözcük yazıp bir problemi çözmek büyük bir keyif. Zihin egzersizi olarak iskambil, bulmaca ya da Sudoku’dan çok daha üstündür ve faydalıdır.
Wikipedia’daki şu yoruma benzer görüşlere tepkiniz nedir: “Forth basit ama genişletilebilir bir dildir; modülerliği ve genişletilebilirliği, CAD sistemleri gibi üst seviye programların yazılmasına olanak tanır. Ancak genişletilebilirlik, kötü programcıların anlaşılmaz kod yazmasına da yardımcı olur; bu da Forth’a ‘yalnızca yazılan’ bir dil ünü kazandırmıştır”?
Tüm bilgisayar dilleri yalnızca yazılan dillerdir. Zaman zaman C programları okumak zorunda kalıyorum. Neredeyse anlaşılmazlar.
Bu yalnızca dilin sözdizimiyle ilgili değil. Söylenmemiş tüm varsayımlar da var. Ayrıca işletim sistemi ve kütüphane bağlamı. Forth’un bu açıdan daha az kötü olduğunu düşünüyorum; çünkü kompakt, içinden geçilecek daha az laf kalabalığı var. Forth’un bir yükselteç olduğu gözlemini seviyorum: iyi bir programcı harika bir program yazar; kötü bir programcı ise berbat bir tane. Kötü programcılara göre uyarlanma ihtiyacı hissetmiyorum.
Forth kullanılarak yazılmış çok sayıda program biliyor musunuz; biliyorsanız favoriniz hangisi?
Forth binlerce uygulamada kullanıldı. Ben çok azını biliyorum. Forth Interest Group, uygulamaların anlatıldığı konferanslar düzenledi. Çeşitlilik inanılmazdı. Şu anki favorim, Forth’un Cassini uzay aracı üzerinde Satürn’ün yörüngesinde dolaşıyor olması.
Sizce Forth’un Web’e bıraktığı kalıcı miras nedir?
Forth hakkındaki çeşitli web sayfaları ve forumlar güçlü bir noktayı ortaya koyuyor: Forth canlı ve iyi durumda ve zor problemlere basit çözümler sunuyor. Forth bir varoluş kanıtıdır. KISS’e (keep it simple, stupid) kalıcı bir mirastır.
colorForth’u geliştirmenize ne sebep oldu?
ANSI standardı nedeniyle Forth’tan uzaklaştım. Sevmediğim bir Forth anlayışını kodlaştırıyordu: megaForth; büyük, hantal sistemler. Eninde sonunda VLSI yonga tasarım araçlarına ihtiyaç duydum. Ayrıca Forth’un nasıl daha hızlı, daha basit ve daha çok yönlü hâle getirilebileceğine dair bazı içgörüler edindim. Sonuç olarak colorForth ortaya çıktı. Ne yazık ki çoğu Forth programcısı tarafından görmezden gelindi.
Forth ile colorForth arasında çok fark var mı?
colorForth, Forth’a yeni bir zaman ekler. Forth doğası gereği etkileşimlidir. Programcı, derleme zamanı ile çalışma zamanını ayırt etmeli ve aralarında gidip gelmelidir. Derleme zamanında yapılabilecek her şey çalışma zamanından tasarruf sağlar. colorForth’ta ayrıca düzenleme zamanı da vardır; bu, derleme zamanından tasarruf sağlayabilir.
colorForth düzenleyicisi metni önceden ayrıştırarak 32 bitlik sözcüklere ayrılmış Shannon kodlamalı dizgelere dönüştürür. Her sözcüğün, derleyicinin onu yorumlamak için kullandığı 4 bitlik bir etiketi vardır. Derleme çok hızlıdır. colorForth ayrıca ilkel işlemlerini, bir Forth yongası tarafından verimli biçimde yürütülebilecek şekilde sınırlar.
Forth’un geleceğini nerede görüyorsunuz?
Paralel bilgisayarların geleceğin yönü olacağına bahis oynuyorum ve Forth mükemmel bir paralel programlama dilidir. Ancak geleneksel dillerin, paralel süreçleri tanımlayabilmek için daha karmaşık hâle geleceğini düşünüyorum. Bilgisayar bilimcilerinin inovasyonlarını kullanmaları ve öğretecek önemsiz olmayan bir şeylere sahip olmaları gerekir.
Yeni yetişen programcılara tavsiyeniz var mı?
Bence yeni programcıların mevcut tüm dilleri denemesi yerinde olur. Eğlenceli olan tek dil Forth’tur. Düzenli bir temsil bulmanın verdiği tatmin, Fortran, C hatta Lisp’te bile eşitlenemez. (Bu dilleri anmam bile beni tarihlendiriyor.) Deneyin, hoşunuza gidecek.
Şu anda ne üzerinde çalışıyorsunuz?
Şu sıralar OKAD, yani colorForth CAD araçlarımla çok çekirdekli bilgisayar yongaları tasarlıyorum. Küçük, hızlı ve düşük güç tüketimliler; tıpkı Forth gibi.
Eklemek istediğiniz başka bir şey var mı?
Tekrar etmek gerekirse: Forth bir varoluş kanıtıdır. Bir bilgisayar dilinin basit ve güçlü olabileceğini gösterir. Ayrıca “Yarış hızlı olana ait değildir” sözünü de gösterir. En iyi çözüm mutlaka popüler olan değildir. Ancak popülerlik bir gereklilik değildir. Popüler metodolojiden daha önemli olan iyi bir çözümün olduğu birçok uygulama vardır.