Geleceğin Programlama Dili Perl 6
1. Bölüm
Tasarım ekibi üyelerinden deneyimli programcı Damian Conway'e göre Perl 6'daki yeni özellikler arasında temel sözdiziminin basitleştirilmesi, diğer programlama dilleri ile daha sıkı entegrasyon, daha gelişmiş bir tip sistemi, yeni bir "regular expression" ve gramer mekanizması var.Tüm programlama dilleri arasında Perl'in kendine özgür bir yeri vardır çünkü Perl'in yaratıcısı Larry Wall bu dilin aynı zamanda doğal bir dili andırmasını istemiştir (Wall'un aynı zamanda dilbilim çalıştığını hatırlamakta fayda var). Büyük ölçüde de bunu başarmıştır; 1987 yılındaki çıkışından bu yana Perl, daima değişen koşullara ve büyüyen programcı topluluğuna ayak uydurmuştur. Ancak doğal bir dilden farklı olarak Perl'in tasarımının arkasındaki esas itici güç ve vizyon daima Wall'dan gelmiştir.
Şimdi ise Wall kafasındaki ideale bir adım yaklaşmaya çalışıyor. Perl 6 için tüm fikirleri kendi başına üretmek yerine Perl camiasından dilin yeni sürümü için RFC (Request For Comment - Yorum Talebi) belgeleri göndermelerini istiyor. Wall'ın bir konuşmasındaki şu sözler de bunu doğruluyor: "Perl 5 benim Perl'i yeniden yazmam ile ortaya çıkmıştı. Perl 6'nın ise camia tarafından yeniden yazılan bir dil olmasını istiyorum."
Perl programcı camiasının ortaya koyduğu beyin fırtınası sonucunda 300'den çok RFC çıktı. Bunların hepsi ilk halleri ile kabul edilmemekle birlikte yine de Wall'a üzerinde çalışması gereken planı oluşturmada çok büyük bir yol gösterici görevi görüyorlar.
Ve Şimdi Apokalips
RFC'ler gelmeye başladığından beri, Larry Wall Perl 6 için tasarım belgelerini yazıyor ve bunları garip bir şekilde "Apocalypses" olarak adlandırıyor. Genellikle "apokalips" sözcüğü kıyamet, yok oluş, vs. gibi anlamlara geliyor ancak bu sözcüğün o kadar bilinmeyen bir anlamı daha var: "Açığa çıkaran, belirtileri gösteren, belli eden." İşte Wall'ın yaptığı şey tam da bu -- Perl 6 ile ilgili tasarımını insanlara sunmak.
Wall bu apokalips belgelerinin altısını tamamlamış durumda ve birkaç tane daha yayınlamayı düşünüyor. Bu belgelerde neden bazı RFC'lerin kabul edildiğini bazılarınınsa reddedildiğini açıklıyor. Bunlara ek olarak kendi inisiyatifine dayanarak herhangi bir RFC'de ele alınmamış ancak gerekli olduğunu düşündüğü değişiklikleri de ele alıyor.
Büyük Değişim
Her projenin büyüdükçe evrim geçirdiği bilinir, aksi takdirde zaten yavaşlar ve ölür. Ancak Perl 5'ten Perl 6'ya geçişisin kapsamının herhangi bir programlama dilindeki iki sürüm arasındaki farktan çok daha fazlası olacağı söyleniyor.
Perl 5.6 sürüm yöneticisi Gurusamy Sarathy, "Programlama dillerinin evriminde bu durumla kıyaslayabileceğim başka bir örnek bilmiyorum," demekte.
Perl 6 proje yöneticisi Nat Torkington da bu görüşe katılıyor ve şunları söylüyor: "Perl 5'ten Perl 6'ya geçişte çok ciddi birtakım değişiklikler olacak. Şimdiye dek hep en geriye, Perl 1'e kadar uyumluluğu korumak için zorladık kendimizi. Ancak artık çıkarmak istediğimiz bazı şeyler var çünkü belki ilk kullanıldıklarında iyi gibi görünüyorlardı ancak şimdi faydadan çok zarar getirebilen özellikler söz konusu, bunlar iptal edilecek."
Tatlı ve Düzenli İfadeler
Her ne kadar Perl 6'nın tasarımı tam olarak bitmediyse de Perl geliştiricileri ve "hacker"ları arasında şimdiden ciddi bir sempati kazanmış durumda. Tasarım ekibi üyelerinden Damian Conway, basitleştirilmiş sözdizim (sentaks), diğer programlama dilleri ile daha kolay bir arada çalışabilme, gelişmiş bir tip sistemi ve yeni düzenli ifadelerle (regular expressions) birlikte gelen gramer mekanizması gibi özelliklerden gayet memnun olduğunu belirtiyor.
Torkington da yeni geliştirilen düzenli ifade sözdizimini Perl 6'nın en iyi özelliklerinden biri sayıyor. "30 yıldır o eski düzenli ifade (regular expression) sözdizimini kullanıyor ve ihtiyaç duydukça içine yeni özellikler tıkıştırıyorduk bu da bir hayli çirkinliğe yol açıyordu. Ancak şimdi oturduk ve tüm bu düzenli ifade meselesini yeniden düşündük; bunun sonucu olarak da artık büyük veri yığınları içinden belli bir kalıba uyan veri parçalarını çekip çıkarma işini programlamak çok daha kolay ve performanslı olacak."
Torkington'a göre yeni kurallar düzenli ifadeler ile programlamanın gücünü çok artıracak ve Perl 5 ile yapılabilenlerin çok ötesine geçecek. "Perl 6 kurallarının en tatlı yanı artık bunların sadece düzenli ifade olamamaları. Bu yapı artık tam kapsamlı bir özyineli "parser"a dönüşmüş durumda, böylece artık düzenli ifade sözdizimini kullanarak basit karakter dizisi (string) işlemleri yapabileceğiniz gibi herhangi bir dilde yazılmış kaynak kodunun ya da çok karmaşık dosya formatlarının analizini de kolayca gerçekleştirebileceksiniz." Son cümleler biraz fazla teknik gelmiş olabilir ama kısaca söylemek gerekirse: bu Çok İyi Bir Şey!
Yorumla Bunu
Dilin kendi yapısındaki değişikliklere ek olarak yeni bir Perl yorumlayıcısı da geliştiriliyor. Perl 5 yorumlayıcısı nerede ise 10 yıllık ve paralel işlemli çalışma (multithreading), Unicode gibi şeyleri doğrudan desteklemiyordu. Yeni Perl yorumlayıcısı Parrot ise pek çok yeni özelliği bünyesinde barındıracak.
Bütün bunlar biraz abartılı gibi geliyor olabilir ancak dili değiştirmek söz konusu olunca Perl 6 ekibi hiçbir şeyden kaçınmıyor öte yandan bu durum insanları acil bir geçişe zorlayacakları anlamına da gelmiyor kesinlikle.
Perl geliştiricileri bu büyük geçişin bir gecede olmayacağının farkındalar. Perl 4'ten Perl 5'e geçişin 2-3 yıl sürdüğü biliniyor ve bu gerçekçi bir rakam.
Conway de bu rakamlara katılıyor ve şöyle diyor: "Dünya çapında pek çok kurum Perl 5'e ve Perl programcılarına ciddi yatırım yapmış durumda, Perl 6'ya ancak yavaş yavaş geçeceklerdir. Perl 6'nın, Perl camiasında kendini kabul ettirmesi birkaç yıl alacaktır."
İster inanın ister inanmayın Conway sözlerine şunları da eklemektedir: "Halen Perl 4 ile ciddi ciddi iş yapan insanlarla karşılaşıyorum. Eğitim verdiğim çoğu programcı da hala Perl 5.005 kullanıyor."
Perl 5 Bir Yere Gitmiyor
Gerçekten de işlerini Perl 5'e emanet etmiş kuruluşların üzülmelerini gerektiren bir durum yok. Deneyimli Perl "hacker"ı ve "Learning Perl" kitabının yazarı Randal Schwartz Perl 5 ile ilgili geliştirmelerin devam ettiğini belirtiyor.
Schwartz'a göre Perl 6 nihai olarak ortaya çıkıp kullanılmaya başlandığında bile Perl 5 desteği uzunca bir süre devam edecek çünkü pek çok görev-kritik uygulamanın, sistemin, vs. Perl 5'e dayandığı ve geçiçin öyle birkaç ayda falan olmayacağı gayet iyi biliniyor.
Conway de Schwartz'a katılıyor ve insanları Perl 5'ten uzaklaştırmak için bir baskı yapılmasının söz konusu olamayacağını belirtiyor: "Aslında bu tam da açık kaynaklı yazılım geliştirme felsefesine uyan bi şey. Neyi ne zaman uygulayacağınıza siz kendi koşullarınıza göre karar verirsiniz, belli bir tekel sizi tüm sistemlerinizi güncellemeye zorlayamaz."
Sarathy'ye göre Perl'i bu kadar yaygın ve başarılı kılan işte tam da bu kültür ve tavır. "Perl hakikaten de diğerlerini kıskandıracak türden bir geliştirici ve kullanıcı kitlesine sahip. Diğer modern programlama dillerini kullanan topluluklara kıyasla yeniliğe ve paylaşıma çok daha açık bir camia. Gelecek epey parlak görünüyor."
2. Bölüm
Perl 6'nın geliştirilmesi parasal koşullar yüzünden biraz yavaşlamış durumda. Perl her ne kadar açık kaynak kodlu bir proje olsa da bazı proje üyeleri hayatlarını bunun üzerinde çalışarak kazanıyorlardı ancak bu durum daha ne kadar devam edebilir?Değişim korkutucu olabilir, özellikle de yıllarca belli bir statükoya alışmış kişiler için. Programlama dünyası da böyledir. Perl 6 yeni bir tasarım konusunda epey iddialı bu da Perl 5 programcılarını biraz endişelendiriyor. Ancak Perl 6 tasarım ekibinden Allison Randal endişelenecek bir şey olmadığını vurguluyor: "Evet bazı şeyleri öğrenmek gerekecek ancak bu sıfırdan yeni bir dilin öğrenilmesi gibi bir şey olmayacak. Daha çok anadilinize birkaç yeni sözcük ve deyim eklemek gibi düşünebilirsiniz."
Aynı ekibin diğer bir üyesi Damian Conway'e göre de durum aynı: "En önemli mesajımız şu: dilin 'hissiyatı' kesinlikle değişmeyecek."
Üzülmeyin
Tasarım ekibi dışından biri olan Gurusamy Sarathy, şu anda ActiveState firmasında kıdemli yazılımcı olarak çalışıyor ve Perl 5.6 sürüm yöneticisi idi, Perl 6'nın tasarımı bitmemiş olsa da gördüklerinden epey etkilendiğini belirtiyor. "Dilin bu yeni sürümünün korkunç büyük bir potansiyel barındırdığını düşünüyorum. Aynı zamanda Perl 5 ile Perl 6 ekipleri arasındaki yoğun fikir alışverişinden de gayet memnunum. Perl 6 için tartışılan fikirlerden bir kısmı Perl 5 altında çalışacak şekilde uygulandı ve Perl 5'in temelleri de Perl 6 ile ilgili özellik altkümelerinin protototiplerinin oluşturulmasında kullanıldı."
Elbette Perl 6 programları Perl 5 programlarından farklı görünecek ancak Perl 5 kullananlara verilen destek de uzunca bir süre devam edecek ve bir şekilde geriye doğru uyumluluk modu sunulacak.
Parrot Ne?
Perl dilinin yapısındaki değişimler en çok göze çarpanları ancak bir de o kadar göze çarpmayan bir Perl yorumlayıcısı meselesi var.
Bu yeni kuşak yorumlayıcının adı "Parrot" (papağan). Perl dili için yepyeni bir yorumlayıcı, sıfırdan yazılıyor.
Parrot komik bir sözcük gibi görünse de epey ciddi bir içeriğe sahip, sadece Perl'i değil fakat diğer dinamik derlenen dilleri de kapsıyor. Randal'ın sözleriyle: "Diller arası işbirliği birincil hedeflerimizden." Randal, Ruby dilinin Parrot ile çalıştırılır hale geldiğini belirtiyor.
Parrot Perl İçin Ne Yapabilir?
Tabii ki Parrot'ın asıl fayda sağlayacağı alan Perl. Perl 6 proje yöneticisi Nat Torkington yeni yorumlayıcının iç yapısının Perl'i daha da hızlandıracağını belirtiyor: "Bu sanal makina (virtual machine) için üretilen bytecode derleyiciden geçirilecek ve disk üzerinde depolanacak. Bu da Perl 6 programlarının daha hızlı çalışmasını sağlayacak yani bir kere derle ve sürekli çalıştır mantığı."
Conway, söz konusu yorumlayıcının kayda değer ilerleme kaydettiğini de ekledi. "Parrot şimdiden yaklaşık bir düzine dil için alfa sürümünde destek sunuyor ki bunlar arasında Basic, Forth ve Scheme de var. Ve bu dillerin kendi 'doğal' yorumlayıcılarından daha hızlı çalıştırabiliyor söz konusu dillerde yazılmış programları."
Çok Fazla ve Çok mu Hızlı?
Dışarıdan bu projeye bakan biri Perl 6 ekibinin çok radikal olduğunu ve kısa zamanda çok fazla değişiklik gerçekleştirmeye kalkıştığını düşünebilir. Perl camiası bu yeni sürümle hayal kırıklığına uğrayabilir mi? Conway'e göre böyle bir şey söz konusu değil. "Yaptığımız değişikliklerin ve geliştirmelerin birçoğu doğrudan Perl kullanan programcılarının talepleri doğrultusunda gerçekleştirilen şeyler."
"Şimdiye dek dünya çapında 12'den çok sunum yaptım Perl 6 ile ilgili ve aldığım tepkiler epey olumlu ve heyecan verici idi. Perl 6 ile ilgili insanları üzen tek nokta henüz çıkmamış olması." Torkington da Perl camiasının yeni sürüm çıkar çıkmaz avantajların farkına varacağını belirtiyor. "Larry Wall Perl'i oluşturdu ve beş ciddi sürüm boyunca bize yol gösterdi. Yeni sürüm çıktığında insanlar tüm özelliklerin mantıklı ve tahmin edilebilir şekilde çalışmasının getirdiği avantaj görecekler."
Yerel Perl Geliştiricinizi Destekleyin
Maalesef, Perl 6 dilinin geliştirilmesi maddi sıkıntılar yüzünden yavaşlamış durumda. Perl, her ne kadar bir açık kaynak kodlu yazılım projesi olsa da bununla ilgilenen ve kritik görevleri üstlenmiş uzmanlar hayatlarını tamamen bundan kazanıyorlardı ancak bu durum bitmek üzere gibi görünüyor.
Conway, "Şimdiye dek yeni dilin %40'lık bölümünün tasarlanması çekirdek ekibin iki yılını aldı," demektedir. "Ancak bu süre boyunca Larry Wall, Dan Sugalski ve ben maddi olarak Perl Vakfı'nın verdiği destekle hayatımızı sürdürüyorduk. Tüm dünyaya yayılmış cömert Perl camiasının yoğun bağışları bizim 2 sene boyunca tam zamanlı olarak bu proje üzerinde çalışmamız için gerekli maddi gücü sağlamıştı. Ancak elimizdeki bu maddi destek geçen yılın sonu itibarıyla tükenmiş durumda."
Randal Schwartz da Perl 6 ile ilgili en büyük problemin "iş" problemi olduğu fikrine katılıyor. "Önümüzdeki birkaç yıl boyunca yüz yüze olduğumuz en önemli mesele Perl 6 ekibinin beyin takımını oluşturan uzman programcıların Perl 6'ya vakit ayırabilecek şekilde bir işte çalışmaları."
Conway'e göre gerçekten de bu destek tükenmiş durumda ve bu da insanları tedbir almaya zorluyor. "BT sektöründeki pek çok meslektaşımız gibi biz de [Conway, Sugalski ve Wall] iş arıyor durumdayız. Her ne kadar elimizden geldiğince zamanımızın büyük bir kısmını bu projeye ayırıyor olsak da tasarım çalışmalarının yavaşladığını kabul etmek lazım. Tahminlerime göre yeni dilin tasarımı 2-3 yıl içinde stabil hale gelecek."
Tasarım Biter Bitmez Piyasaya Çıkmak
Conway'e göre tasarım tamamlandıktan sonra geliştiricilerin daha fazla beklemesi gerekmeyecek. "Neyse ki implementasyon ekibinde çok daha fazla sayıda yetenekli ve kendini bu işe adamış uzman var. Bu sayede yorumlayıcı da tasarımın elverdiği ölçüde hızlıca geliştiriliyor. Sözdizim ve semantik yapıyı tamamladığımızda en fazla 6 içinde hatta belki daha kısa sürede tam anlamı ile çalışabilen bir uygulama ile insanların karşısına çıkacabileceğimizi tahmin ediyorum."
Tarihçesine bakılacak olursa Perl'in bugünkü konumuna erişmesi 16 yıl sürdü. Bu ölçeğe göre birkaç yıl çok sayılmaz. Özellikle de dilde devrim yaratacak bir yeniden tasarım projesi söz konusu ise. O zamana dek zaten Perl 5 daima emrimize amade.
Son olarak dikkatlerin çekilmesi gereken bir nokta da Perl'in bir dil olarak diğer diller ile etkileşimi ve bu konuda getirilen eleştiriler. Daha açık olarak söylemek gerekirse son zamanlarda Perl'in Ruby ve Python'dan etkileneceği gibi eleştiriler söz konusu. Bu eleştirilerin sahipleri Perl'in çıkış noktasını unutmuş gibi görünüyorlar: Perl denilen dil UNIX kabuğu, C, awk ve daha pek çok programlama ortamının en güzel ve güçlü özelliklerini doğrudan alıp bunları daha da iyi ve tek bir yapı içinde çalışabilir halde programcılara sunmuştu. Dolayısıyla Perl'in Python ve Ruby gibi dillerin en iyi özelliklerini alacağını görmek şaşırtıcı olmayacaktır. Bilakis, eğer Perl her zamanki vizyonu ve gücü ile yeniden tasarlanacaksa muhtemelen karşılaşacağımız Python ve Ruby benzeri özellikler orjinal ortamlarındaki hallerinden daha güçlü ve geliştirilmiş şekilde karşımıza gelecektir ve büyük ihtimalle de bunları bir süre sonra Pyhton ve Ruby tasarımcıları da kendi dillerine katacaklardır. Perl'i Perl yapan ve efsanenin büyüyerek yayılmasına yol açan bu mantalite ve vizyonun sonuçlarını birkaç yıl içinde hep birlikte göreceğiz.
(parrot hakkında:)
http://trperl.sourceforge.net/makale/parrot_bits_0.html
http://trperl.sourceforge.net/makale/parrot_bits_1.html