Bu kez Perl programlama dilinin geliştiricisi ve modern betik dillerinin babası olarak kabul edilen Larry Wall ile sohbet ediyoruz.
Perl’in geliştirilmesini tetikleyen neydi?
Kendi ihtiyacımı gidermeye çalışıyordum; hikâye genelde böyledir. Metin dosyalarına dayalı raporlar yazmaya çalışıyordum ve Unix araçlarının bunun için tam yeterli olmadığını fark ettim; bu yüzden daha iyisini yapabileceğime karar verdim. Unix kültüründe bir şey eksikti—ya C vardı ya da bir kabuk betiği ve insanlar bunları tek bir süreklilik üzerinde zıt uçlar olarak görüyordu. Oysa bunlar birbirine dikti ve Perl’in kendini konumlandırdığı niş de buydu—bir yapıştırıcı dil olarak.
Akademik dillerin aksine, genelde içe kapalı olurlar; ben en başından Perl’i arayüzlerle yazmaya kararlıydım. Ancak daha sonra, başlangıçta öngörülmeyen bir şey için kullanılan bir araca dönüştü. Web ortaya çıktığında, metin üretmeye ve veritabanlarıyla konuşmak için bir yapıştırıcı dile ihtiyaç duydular.
Çözmeye çalıştığınız belirli bir problem var mıydı?
Diğer problemi, Unix topluluğundaki katı görüşlülerin Perl’e verdiği tepkiden anlayabilirsiniz. Araçların tek bir işi yapması ve onu iyi yapması gerektiğini söylediler. Ancak Perl’in bir araçtan ziyade, araç yazmak için bir makine atölyesi olarak tasarlandığını anlamadılar.
Perl adı nasıl ortaya çıktı?
Olumlu çağrışımları olan bir şey istediğim için adı ben buldum. İsim başlangıçta bir “a” harfi içeriyordu. Pearl adında başka bir laboratuvar istatistik dili vardı, bu yüzden bir arka kısaltma daha ekledim. İkincisi Pathologically Eclectic Rubbish Lister.
‘Backronym’ olan Practical Extraction and Report Language’ı hiç kullanıyor musunuz?
Birden fazla yapma yolu olduğunu belirtmek içindir; bu yüzden kasıtlı olarak birden fazla arka kısaltmamız var.
Dili geliştirirken aşmanız gereken özellikle zor veya can sıkıcı problemler var mıydı?
Yeni bir dil ortaya koyarken can sıkıcı olan şey, kültürel bağlamı hesaba katmadan gerçekten tasarlayamamanızdır. Herkesin kültürel beklentilerini ihlal eden yeni bir dilin kabul görmesi zordur. Perl, C, kabuk ve AWK’tan pek çok özelliği ödünç aldı; bunları uzlaştırmak zaman zaman zordu. Örneğin, bir düzenli ifadede $ kullanımı bir dizeyi eşleştirmek ya da bir değişkeni yorumlamak anlamına gelebilir.
Şansınız olsaydı Perl’in geliştirilmesinde farklı yaptığınız bir şey olur muydu?
Ya hiçbir şey ya da her şey. Perl 6’ya bakın.
Perl ile yazıldığını gördüğünüz en ilginç program hangisiydi?
Perl ile yazılmış son derece ilginç pek çok şey gördüm; belki de hepsi tuhaftı. Güney Kutbu’nda kullanıldığını biliyorum. Son zamanlarda onu yoğun kullanan en yeni grup, genetik analiz yapan biyologlar.
Dilin başlangıçta amaçlanmayan bir şekilde kullanıldığını hiç gördünüz mü? Eğer öyleyse, neydi? Ve işe yaradı mı?
ClearCase’in (sürüm kontrol sistemleri) çekirdeğin altındaki dosya sistemine erişmek için aygıt sürücüsünü Perl’de yazması. İlk şaşırtıcı şey, bunun çalışmasıydı. İkinci şaşırtıcı şey ise C kodlarından 10 kat daha hızlı olmasıydı. Genel olarak aygıt sürücülerini Perl’de yazmak istemezsiniz. Perl 6 belki, ama Perl 5 değil.
Dilin evrimi ve popülerliği sizi herhangi bir şekilde şaşırttı mı?
Evet ve hayır. Bundan önce açık kaynak yazılım yayımlama deneyimim vardı ve insanların bunu sevdiğini görmüştüm; dolayısıyla sevdiğim bir dili yazarsam başkalarının da muhtemelen seveceğini zaten biliyordum.
Zaman içinde kabul görme ölçeğini öngörmemiştim. Perl 5, topluluk geliştirmesine açıldı ve Perl’in en iyi yanı CPAN’dir.
Perl’de doğal dil ilkelerini kullanmanın başarısına nasıl katkıda bulunduğunu düşünüyorsunuz?
Bu bir doktora tezinin konusu. Doğal dili kullanıyoruz—çoğu insan COBOL’u düşünür—ama biz bunu böyle düşünmüyoruz. Daha ziyade, doğal dilin ilkeleri her şeyin bağlama duyarlı olması ve bir şeyi söylemenin birden fazla yolu olmasıdır. Öğrenirken ilerlemenize izin verilir.
Beş yaşındaki bir çocuğun 50 yaşındaki biriyle aynı diksiyonla konuşmasını beklemeyiz. Dil, tüm topluluğun katılımıyla zaman içinde evrilecek şekilde inşa edilmiştir. Doğal diller, anlam taşımak için çekim, duraklama ve tonlama kullanır. Bunlar yazılı dilde noktalama işaretlerine taşınır; bu yüzden noktalama kullanmaktan da çekinmeyiz.
Dilin ilk geliştirilmesi ve devam eden kullanımı açısından en çok neyle gurur duyuyorsunuz?
Kesinlikle işin içindeki insanlar. Perl topluluğunun cennette küçük bir tablo çizdiğini düşünüyorum. İlk Perl konferansında topluluktan pek çok kişiyle ilk kez tanıştık ve evime yakındı, bu yüzden aile bir parti verdi. İlk fark ettiğimiz şey, insanların patolojik derecede yardımsever olmasıydı; yine de herkes birbirinin farklılıklarını kabul ediyordu. Topluluk çeşitliliği bir güç olarak görüyor ve bizi bir arada tutan da bu.
Programming Perl kitabının kapağında bir devenin yer alması ve bunun dilin sembolü hâline gelmesi nasıl oldu? Buna hiç dâhil oldunuz mu?
Evet. Deveyi ben seçtim. Bir yazar O’Reilly için kitap yazdığında, onlardan bir hayvan önermelerini isterler. Sonra da “Hayır, bunun yerine bir firavun faresi kullanacaksınız” derler.
Eğer sol beyinli bir kapak isteseydim bir istiridye isterdim. Ama kapak tasarımcısının vizyonunu paylaştım. Bir devenin sağ beyin anlamı, kurak bir yerde kendi kendine yetebilen bir hayvandır ve kervanlara dair belirsiz İncil çağrışımları vardır. Bu da uzun yıllar boyunca Perl’in aşağı yukarı kutsal kitabı olduğundan, doğal olarak maskot hâline geldi.
Perl’in güzelden ziyade pratik olduğu yönündeki ifadelere katılıyor musunuz? Başlangıçtaki niyetiniz bu muydu?
Bunu ilk Perl kılavuz sayfasına yazdığımı düşünürsek, evet. Günümüzde kullanışlılığını kaybetmeden daha güzel hâle getirmeye çalışıyoruz. Belki bir sonraki Perl kitabının kapağında kelebek kanatlı bir deve olur ya da benzeri bir şey.
Birçok kaynak Perl’in temel referans noktalarından birinin C dili olduğunu belirtir. Bu bilinçli bir tercih miydi?
Kesinlikle. C hiçbir zaman tam anlamıyla taşınabilir bir dil olmadı, ama her yerdedir. Karmaşık kabuk betikleri ve pek çok makro yazarak taşınabilir bir C oluşturabilir ve onun üstüne taşınabilir bir dil yazabilirsiniz. Bu, Perl’in her yere taşınabilir olmasını sağladı ve bu bizim için önemliydi.
Comprehensive Perl Archive Network’ün (CPAN) 6.500’den fazla yazar tarafından yazılmış 13.500’ü aşkın modül barındırması hakkında ne düşünüyorsunuz? Arşiv ağının bu kadar başarılı olmasının nedeni sizce nedir?
Salt büyüklüğü sayesinde Sturgeon Yasası’nın—her şeyin %90’ının çöp olduğu—önemi kalmıyor. Çok büyük bir sayının %10’u hâlâ büyük bir sayıdır.
Wikipedia’daki şu ifadeye katılıyor musunuz?
Perl’in tasarımı, bilgisayar endüstrisindeki üç geniş eğilime verilen bir yanıt olarak anlaşılabilir: donanım maliyetlerinin düşmesi, iş gücü maliyetlerinin artması ve derleyici teknolojisindeki iyileşmeler. Fortran ve C gibi daha eski bilgisayar dillerinin çoğu, pahalı bilgisayar donanımını verimli kullanmak için tasarlanmıştı. Buna karşılık Perl, pahalı bilgisayar programcılarını verimli kullanmak için tasarlanmıştır.
Bu doğru. C’ye ek olarak, mevcut olan yacc’ı da kullandım. Ama kendi sözcük çözücümü yazdım.
Perl’in “İnternetin koli bandı” olduğu görüşüne katılıyor musunuz?
Bu, kabul ettiğimiz metaforlardan biri, ama pek çok metaforu seviyoruz.
Adam Kennedy tarafından geliştirilen Windows için yazılmış Perl sürümünü (win32.perl.org) destekliyor musunuz?
Evet, kullandım ve iyi bir uyarlama.
Bir zamanlar bir programcının üç erdemini tembellik, sabırsızlık ve kibir olarak listelemiştiniz.
a) Sizce bu erdemler, bir dilin tasarlanma biçimiyle hangi yollarla teşvik edilebilir, yoksa bunlar yalnızca bir geliştiricinin kişisel özelliği midir?
b) Perl’in tasarımı bu erdemleri nasıl teşvik ediyor?
Tembelseniz kestirme yollar ararsınız. Sabırsızsanız programınızın hemen bitmesini istersiniz. Kibre gelince, bu da programların dağıtılmasını kolaylaştırır.
Bu, programların evrensel olarak kullanılmasına yardımcı olur ve bunun da belli bir ego değeri vardır. Kişisel olarak benim bakış açıma göre, yalnızca bir programlama dili yazmak değil, başkalarının içinde çalışabileceği yeni bir sanat ortamı geliştirmiş olmak bir ayrıcalık olmuştur.
Dil için neden bir spesifikasyon veya standart oluşturulmadı?
Perl 6 için oluşturuldu. Değiştirmeye karar verdiğimiz şeylerden biri buydu. Perl 6’nın birden fazla uygulaması olacak, bu yüzden bir standarda ihtiyaç duyuyor ve bir test paketi de olacak.
Bizim bir sözümüz var: önceden beyan edersen her şey mubahtır. Perl 6’daki fikir şu: standart bir dille başlıyorsunuz ve onu dönüştürebiliyorsunuz. Bu rafinasyon sürecini izlediğiniz sürece belirsizlik sorunu ortaya çıkmıyor. Birden fazla lehçe sorunu var, ama bu her zaman var olacak bir sorun.
Hiç Perl Golf oynadınız mı ya da bir Perl şiiri yazdınız mı?
İlk Perl şiirini yazdım ve Perl Golf oynadım. Ama Perl’den ziyade C’yi anlaşılmazlaştırmamla daha çok tanınıyorum. Bunun üzerinden uzun zaman geçti.
Perl 5.10.0 dile hangi yeni unsurları getiriyor? Perl 6’ya hangi yönlerden hazırlık yapıyor?
Perl 5.10.0, switch deyimleri ve adlandırılmış desen eşleşmeleri gibi bazı fikirlerin Perl 6’dan geriye taşınmasını içeriyor. En popüler şeylerden biri, print yerine say kullanımı.
Bu, Perl’de bilinçli bir programlama tasarımıdır: kolay şeyler kolay olmalı ve zor şeyler mümkün olmalı. Yaygın kullanım durumuna göre optimize edilmiştir. Benzer şeyler benzer görünmelidir, ama benzer şeyler aynı zamanda farklı da görünmelidir; bu ikisi arasında nasıl bir denge kurduğunuz ilginç bir tasarım ilkesidir.
Huffman kodlaması, benzer şeyleri farklı gösteren ilkelerden biridir.
Peki ya Perl 6? Bunun için henüz bir çıkış tarihi var mı? En heyecan verici ya da ilginç yeni gelişmelerden bahsedebilir misiniz?
Elbette, Noel Günü—sadece hangisi olduğunu söylemiyoruz. Üzerinde sekiz yıldır çalışıyoruz ve başlangıca kıyasla sona çok daha yakın olduğumuzu düşünmek istiyoruz. Kesinlikle ikinci yüzde 80’in içindeyiz.
Sizce Perl bilgisayar geliştirme alanına nasıl kalıcı bir miras bıraktı?
Teknoloji ile kültür arasındaki etkileşime dair artan bir farkındalık. Ruby, Perl’den bazı fikirler ödünç aldı; PHP de öyle. PHP’nin sinyallerin kullanımını anladığını sanmıyorum, ama tüm diller diğer dillerden ödünç alır; aksi takdirde tek amaçlı diller olma riskini taşırlar. Rekabet iyidir.
PHP’nin zaman içinde Perl’in yaptığı aynı hataları takip edip ardından bunlardan toparlanmasını görmek ilginç. Ama Perl 6 da Ruby gibi diğer dillerden geri ödünç alıyor. Egom büyük olabilir, ama o kadar da büyük değil.
Perl’in geleceğini nerede görüyorsunuz?
Perl’in geleceğine dair vizyonum, umarım 20 yıl sonra onu tanıyamıyor olmamdır.
Bilgisayar programlama dillerinin gelecekte, özellikle önümüzdeki 5 ila 20 yıl içinde, hangi yöne gittiğini düşünüyorsunuz?
Önümüzdeki 100 yıl boyunca ihtiyaç duyacağınız her şeyi tasarlamaya çalışmayın; bunun yerine, 20 ya da 100 yıl sonra ihtiyaç duyacağımız şeyleri oluşturabilme yeteneğini tasarlayın. Perl 6 çabasının kalbinde, ayrıştırıcıya yerleştirdiğimiz genişletilebilirlik ve dil değişikliklerini mümkün olduğunca yıkıcı olmayan biçimde sunmamız yatıyor.
Yeni yetişen programcılara herhangi bir tavsiyeniz var mı?
Google Summer of Code kapsamında gelen kişiler oluyor ve çeşitli öğrenciler Perl 6 çalışmasına ilgi duyuyor. Kendilerini faydalı hissedebilecekleri bir yer bulmaya çalışıyoruz ve her zaman daha fazla test yazabilecek insanlara ihtiyacımız var.
Gelecekte pek çok insan meslek olarak programlamaya girecek, ama buna programlama demeyecekler. Buna elektronik tablolar yazmak ya da avatarları için eylemleri özelleştirmek diyecekler. Birçok kişi için bu, kendi başına bir amaç olmaktan ziyade bir amaca ulaşma aracı olacak.