← A–Z Röportajları

Modula-3

Luca Cardelli, Modula-3 tasarım komitesinin bir üyesidir. Cardelli, Birleşik Krallık’ın Cambridge kentindeki Microsoft Research’te Programlama İlkeleri ve Araçları ile Güvenlik gruplarının Baş Araştırmacısı ve yöneticisidir ve aynı zamanda bir ACM Fellow’dur. Burada Computerworld ile Modula-3’ün kökenleri hakkında sohbet ediyor; buna, şimdiye kadarki en heyecan verici Modula-3 tasarım toplantısının San Francisco 7.1 depremiyle aniden kesintiye uğraması da dâhildir.

Modula-3’ü geliştirme ihtiyacını neden hissettiniz? Çözülmesi gereken bir probleme tepki miydi?

Sorun, tür güvenli bir dilde programlama ortamları geliştirmekti. Bu şu anlama geliyordu: Eğer tür güvenli bir kütüphane yazdıysam ve kullanıcılarımda ciddi bir çökme yaşanıyorsa, ‘benim sorunum değil, birileri bir yerde hile yapıyor olmalı’ diyebilirdim; çünkü tür denetleyici bunun benim hatam olmadığını garanti ediyordu. C++ kullandığınızda bunu söyleyemezdiniz.

Modula-3 adı neden seçildi?

Modula-2’nin modülerleştirme konusundaki temel felsefesinin, nesne yönelimli bir dile taşınarak sürekliliğinin gösterilmesini istedik. Klaus Wirth, Xerox PARC’ı ziyaret ederken (ya da kısa bir süre sonrasında) Modula-2’yi tasarlamıştı; dolayısıyla ortak bir köken vardı. Ondan Modula-3 adını kullanmamıza izin vermesini istedik; o da kabul etti ve zaman zaman toplantılarımıza da katıldı.

Modula-2+, Modula-3’ün tasarımını nasıl etkiledi?

Temel olarak aynı dildi, ancak karanlık köşeleri yoktu. Modula-2+ organik biçimde gelişmişti ve bir temizlik ile standartlaştırmaya ihtiyaç duyuyordu. Ayrıca Modula-2+’ın yenilikçi özelliklerini (büyük ölçüde Xerox PARC’taki Cedar/Mesa’dan geliyordu) duyurmak ve daha geniş bir topluluğa sunmak istedik.

Dilin geliştirilmesi sürecinde aşmanız gereken özellikle zor ya da can sıkıcı problemler var mıydı?

Tür sistemini netleştirmek zor olan kısımdı; sadece benim için değil, sanırım herkes için. Bir POPL makalesi yalnızca bu kısmı ele alıyordu.

Dilin hedeflerinden biri, tür güvenliği geleneğini sürdürürken, gerçek dünyadaki pratik programlama için yeni unsurlar eklemekti. 1980’lerde buna gerçekten ihtiyaç var mıydı?

Evet, tür güvenli işletim sistemleri tasarlama fikri hâlâ tüm hızıyla sürüyordu. Xerox’ta Cedar/Mesa ile başladı ve DEC’te Taos işletim sistemiyle devam etti. Microsoft’un .NET’i ile hâlâ sürdüğünü bile söyleyebilirsiniz; henüz tam olarak oraya ulaşmış değiliz.

Modula-3 ile yazılmış gördüğünüz en ilginç program hangisiydi?

Kendi programlarımdan bahsedeyim. NeXT Computer’dan sonra, doğrudan manipülasyonlu kullanıcı arayüzü düzenleyicisi yazan ikinci programı ben yazdım. Ayrıca Modula-3’ün ağ nesnelerine büyük ölçüde dayanan Obliq dağıtık programlama dilini yazdım.

Dilin, başlangıçta amaçlanmayan bir şekilde kullanıldığını hiç gördünüz mü? Eğer öyleyse, bu neydi ve işe yaradı mı?

Pek sayılmaz; tür güvenli sistem programlamayı desteklemeyi amaçlamıştık ve olan da buydu. Bununla birlikte bazı fırsatları kaçırmış olmamız mümkün.

Sizce dil neden endüstride yaygın biçimde benimsenmedi, ancak araştırma çevrelerinde hâlâ etkili?

Temel olarak Java ile rekabet yüzünden. Java, ana özelliklerin hepsine sahipti (nesneler, tür güvenliği, istisnalar, iş parçacıkları); bunların tümü aynı gelenekten geliyordu (ve bence teknik raporlarımızı dikkatle okudular…). Ayrıca Java başlangıçta bayt kodu doğrulama ve Web applet’leri gibi yeniliklere sahipti; daha sonra da büyük bir şirketin tam desteğini aldı. Biz ise Modula-3’ü yalnızca bir araştırma laboratuvarından destekliyorduk. Modula-3’teki modül sisteminin, Java gibi programlara kıyasla hâlâ çok daha üstün olduğuna inanıyorum; bu da süregelen ilginin bir açıklaması olabilir.

Bugün hâlâ Modula-3 kullanıyor musunuz? Dile katkı sağlanmaya ve güncellenmeye devam ediliyor mu?

Modula-3 tüm zamanların favori dilim olsa da, DEC’ten ayrıldıktan sonra kullanmayı bıraktım. Kısa bir süre Java kullandım; bugün ise zaman zaman C# ve F# kullanıyorum.

Wikipedia’daki şu ifadeler hakkında ne düşünüyorsunuz: ‘Modula-3 artık üniversitelerde yalnızca karşılaştırmalı programlama dili derslerinde öğretiliyor ve ders kitapları baskıdan kalkmış durumda’?

Muhtemelen doğru!

Wikipedia’ya göre Modula-3’ün ‘standart kütüphaneleri, kilitlenme hataları da dâhil olmak üzere çeşitli hata türlerini içermediği resmen doğrulanmıştır.’ Bunun nedeni neydi?

Tür güvenliği pek çok basit hatayı ortadan kaldırır; ancak engellemediği ana hata sınıfı eşzamanlılık hatalarıdır. Modula-3 kütüphanelerinden beklenti, her bir yordamın tam olarak ne yaptığını ve ne gerektirdiğini (İngilizce olarak) eksiksiz biçimde açıklamalarıydı. O dönemde bu açıklamaların çok hassas yapılması yönünde sosyal bir baskı vardı. Bazıları o kadar hassastı ki, biçimsel doğrulamaya uygun hâle geldiler. Bu, özellikle kilitleme davranışı açısından bazı temel kütüphaneler için önemli görülüyordu; çünkü kilitleme hataları tür sistemi tarafından yakalanmıyor ve ayıklaması en zor olanlardı.

Size göre Modula-3, bilgisayar geliştirme alanına nasıl kalıcı bir miras bıraktı?

Bence önemli olan, Modula-3’ün tür güvenli programlama kavramının yaygınlaşmasında büyük rol oynamış olmasıdır. Cedar/Mesa son derece yenilikçiydi, ancak Xerox’ta her zaman gizli tutuldu (sanırım bugün bile kılavuzuna ulaşmak mümkün değil). ML (tür güvenliğinin diğer kök dili) ise her zaman akademik, nesne yönelimli olmayan bir dil olarak kaldı. Modula-3, Cedar/Mesa’dan Java’ya giden basamak oldu; bugün ise tür güvenli programlama artık varsayılan kabul ediliyor. Kişisel olarak, Java çıkana kadar Modula-3’e bağlı kalabilmiş olmaktan (eski bir ML tür güvenli programcısı olarak) ve böylece C++ dönemini tamamen atlamış olmaktan büyük gurur duyuyorum!

Dilin geliştirilmesi ve kullanımı açısından en çok gurur duyduğunuz şey nedir?

Tür sistemi ve modül sisteminin geliştirilmesi. Kullanım açısından bakıldığında ise, 10 yıldan fazla bir süre boyunca (Modula-2+ dâhil) işletim sistemlerinden GUI’lere kadar, milyonlarca satır kod içeren tüm yazılımlarımızı bununla yazdık. Modula-3’ün en şaşırtıcı özelliklerinden biri Ağ Nesneleri idi (ancak bu benim çalışmam değildi); bu özellik doğrudan Java RMI’ye aktarıldı.

Bilgisayar programlama dillerinin gelecekte, özellikle önümüzdeki 5 ila 20 yıl içinde, hangi yöne gittiğini düşünüyorsunuz?

Fonksiyonel programlama geri geliyor. Nesne yönelimli bir dil olan C# bile artık tam anlamıyla fonksiyonel bir dil; çünkü uygun kapsam yakalama ve tür çıkarımıyla birinci sınıf isimsiz lambda soyutlamalarını destekliyor ve geliştiriciler bunu çok seviyor. F# ve Haskell gibi (nesne yönelimli özellikler içermeyen) diğer gerçek fonksiyonel diller de giderek daha popüler hâle geliyor.

Yeni yetişen programcılara vereceğiniz bir tavsiye var mı?

Başka insanların kodlarını okuyun!

Eklemek istediğiniz başka ilginç bir şey var mı?

Sadece şunu söyleyebilirim: Şimdiye kadarki en heyecan verici Modula-3 tasarım toplantısı, San Francisco’daki 7.1 büyüklüğündeki deprem tarafından aniden yarıda kesilmişti.