Perl'in düşüşü teknik bir sorun değil, kültürel bir sorundu
(beatworm.co.uk)- Perl'in düşüşünün nedeni, teknik bir kısıtlama değil muhafazakâr ve kapalı bir geliştirme kültürü olduğu yönündeki bir analizdir
- Erken dönem UNIX sistem yöneticisi kültüründen kaynaklanan dışlayıcı tutum ve ‘uzman merkezli’ bir gurur, dilin gelişimini engelledi
- Perl 6'nın ayrışması teknik bir başarısızlıktan çok, topluluk içi çatışma ve muhafazakârlığın açığa çıktığı bir olay olarak değerlendirildi
- Aynı dönemde Ruby on Rails, PHP ve Python, daha açık ve erişilebilir bir kültürle büyüyerek Perl'in yerini aldı
- Perl hâlâ POSIX ortamlarının temel betik dili olarak varlığını sürdürüyor, ancak ana akım geliştirme dili olarak etkisi azalmış durumda
Perl'in kültürel kökenleri ve sınırlamaları
- Perl, UNIX sistem yöneticisi kültüründen doğdu; ‘RTFM’, ‘luser’ gibi iç şakalar ve kapalı normlar hâkimdi
- Bu kültür, bilginin tekelleştirilmesi ve giriş engellerinin korunmasını bir erdem sayıyor, zorluğun doğrudan yetkinliğin simgesi olarak görülmesine yol açıyordu
- Sonuç olarak yeni kullanıcılar veya değişime karşı güçlü bir direnç sergileyen kolektif bir yapı oluştu
- Bu tutum, **‘kuşatılmış kale kültürü’**ne benzetildi
- Topluluk üyeleri teknik karmaşıklıklarını bir gurur konusu yaparken, dışarıdan gelen sadeleştirme çabalarını görmezden geldi
- Bu da ‘yalnızca yetkin olanın girebileceği’ bir kast benzeri yapıya dönüştü
Perl topluluğunun yapısı ve Perl 6'nın ayrışması
- Perl, TIMTOWTDI(There Is More Than One Way To Do It) ilkesini öne çıkararak esnekliği vurguladı
- Ancak bu ilke, dildeki değişime karşı muhafazakâr tavrı güçlendirdi; çekirdek dil sabit kaldı ve yenilikler CPAN dışına itildi
- CPAN odaklı genişleme modeli bağımlılık karmaşasına (dependency hell) neden oldu
- Perl 6'nın ortaya çıkışı, topluluk içi çatışmanın ve muhafazakârlığın sonucu ve bir bölünme sembolü olarak görüldü
- Perl 5 pratiklik ve istikrarı, Perl 6 ise yenilik ve idealleri temsil ederek kültürel bir ikilik yarattı
- Perl 6 geliştirme süreci 15 yıldan fazla gecikti ve ‘en waterfall odaklı açık kaynak projesi’ olarak tanımlandı
- Bu dönemde Perl, yeni geliştiricilere karşı dostane değildi ve topluluk daha kapalı bir hal aldı
Rakip dillerin yükselişi
- Ruby, Perl'e benzer sözdizimiyle birlikte ‘geliştirici mutluluğu’ ve nezaketi temel değer yaptı
- Ruby on Rails, geliştirici dostu araçlar ve tutarlı bir yapı ile çarpıcı bir başarı yakaladı
- Perl, birçok benzer çerçeve geliştirse de, karşılıklı uyumluluk ve erişim kolaylığının eksikliği nedeniyle yaygınlaşmada başarısız oldu
- PHP, ‘kullanıcı merkezli bir dil’ olarak, kurulumu ve dağıtımı basit olmasından dolayı geniş kitlelere yayıldı
- WordPress gibi blog platformlarının temeli oldu ve web geliştirici kuşağının girdi dili konumunu aldı
- Python, akademik bir geçmişten doğup aşamalı evrim ve net tasarım ilkelerini korudu
- Google'ın benimsenmesinden sonra istikrarlı bir büyüme gösterdi ve ‘batteries included’ felsefesiyle pratikliği sağlamlaştırdı
Perl'in bugünü ve mirası
- Perl hâlâ birçok sistemde varsayılan olarak kurulu olan POSIX betik dili olarak varlığını sürdürüyor
- Sayısız eski sistemde ve otomasyon betiğinde hâlâ kullanılıyor
- Ancak yeni projelerin birincil seçimi olarak neredeyse kullanılmıyor
- Perl'in bıraktığı temel yenilikler
- Düzenli ifade entegrasyonu ve genişletilmiş sözdizimi
- CPAN ile internet tabanlı paket dağıtımı ve imza doğrulaması
- Otomatik test çerçevesi (TAP) ve CI kavramının yayılması
- POSIX özelliklerinin entegrasyonu ile kabuk ile sistem programlaması arasındaki sınırın kaldırılması
- POD belgeleme sistemi sayesinde dokümantasyon yeniliği
Sonuç: Kültürün yarattığı başarı ve düşüş
- Perl, 1990'ların erken web döneminde iki kültürü (UNIX yöneticileri ve web geliştiricileri) birleştirerek patlayıcı bir büyüme yaşadı
- Ancak muhafazakâr kültür ve kapalı topluluk değişime uyum sağlayamayıp ana akımdan düştü
- Yine de Perl, modern yazılım geliştirme temellerinden biri olarak değerlendirilmektedir
- Yazar, Perl'in ortadan kalkmayacağını ve POSIX var olduğu sürece Perl'in de var olacağını savunuyor
- Bugün Rust, TypeScript gibi yeni diller, geçmişte Perl'in yaşadığı kültürel geçiş yolunu yeniden izliyor
2 yorum
Bir yazıda Perl ile Ruby’nin sözdiziminin benzer olduğundan bahsediliyorsa, o yazının özgünlüğünden şüphe duyarım. Bu, klasik dönem Perl eleştiri yazılarından alıntı olarak kullanılan bir ifade; gerçek kullanımda ise bunun böyle olduğunu hiç hissetmedim. Sanki biraz içeriği doldurmak için eski yazıları kopyalayıp eklemişler ya da geri kalanını yapay zekaya bırakmışlar da, eski legacy Perl eleştiri yazıları eleştirel süzgeçten geçirilmeden kabul görmüş gibi geliyor bana.
Hacker News görüşü
Perl topluluğundaki “keşişler ve büyücüler” gibi kurgusal hava bana hep ağır gelirdi
Tek satırlık kodlarla zeki görünmeye çalışma kültürü de pek hoşuma gitmiyordu; Python ise çok daha ciddi ve “normal” hissettiriyordu
Sözdizimi sanki bilerek karmaşık tasarlanmış gibi ve belgeler olmadan anlamanın imkânsız olduğu pek çok kısım var
Elbette o dönemde kodun kısalığı önemliydi ama 2025'te bu fazlasıyla kullanıcı düşmanı
Sanki D&D'de birinin anlık fikri sonsuza kadar kural kitabına kazınmış gibi
Buna karşılık Python, “tek bir açık yöntem”i vurgulayarak temiz kodu teşvik etti
Perl de güzel yazılabiliyordu ama bunu geliştiricinin bilinçli olarak seçmesi gerekiyordu
Python ise girintiyi zorunlu kıldığı için yeni başlayanların bile belli bir okunabilirlik düzeyini yakalamasını sağladı
Ama dilin kendisi fazla ifade gücüne sahip olduğu için paylaşılan kod açısından bu bazen ters etki yarattı
Metin işleme konusunda Perl hâlâ en iyisi ama ekip çalışmasına uygun bir dil olmakta zorlanıyordu
Topluluğun abartılı imajının aksine, insani yönü etkileyiciydi
Perl'in oyuncu tavrı ise bana daha dürüst ve daha az kasvetli geldi
Ama sonunda ana akım olan Python oldu, Perl ise yavaş yavaş unutuldu
Bence Perl topluluğunun ukala kültürü dilin çöküşünü hızlandırdı
Bana zamanında Linux öğreten bir arkadaşım Perl fanatiğiydi; bilmeyene tepeden bakan RTFM tavrı yüzünden sonunda arkadaşlığımız bitti
Perl topluluğuyla neredeyse hiç temasım olmadı; sadece Google'layarak çözdüğümüz dönemde kullandım
@, % gibi semboller çok fazlaydı ve bu yüzden Ruby ya da Python'dan daha az erişilebilir geliyordu
Ruby en baştan nesne yönelimli bir dil olarak tasarlandığı için çok daha doğaldı
Python'un optional type hinting özelliği doğru olmadığında ise sadece kafa karıştırıyordu
Kesin olmak zorundaysa bu artık zorunlu tip sistemi olur, isteğe bağlı ipucu değil
90'larda IRC'de biri bana RTFM demişti ama sonradan bunun şaka ve yeni başlayanları karşılama etkinliği olduğunu anladım
Gerçekten Perl büyücüleriyle kahve içip mentorluk aldım ve bu deneyim programlama hayatımda bir dönüm noktası oldu
O zaman duyduğum sözü hâlâ hatırlıyorum — “Perl it forward!”
“Zorlanmanın sonunda dopamin alınca bunu iyi bir deneyim sanma” durumu bilgisayar sektörünün geneline yayılmış durumda
Her zaman kafa karıştırıcı ve sürekli “Bunu neden böyle yapmışlar?” sorusuyla dolu
Dürüst olmak gerekirse Perl, sadece başka diller daha iyi olduğu için yok oldu
Nasıl prototipleme kartıyla ürün yapılamazsa, Perl de deneylerin ürünüydü
Örneğin
@arraybir skaler olarak alındığında sadece uzunluğunu döndürmesi gibi bağlama bağımlı davranışlar vardıToyota vs Honda gibi, gerçekte bu daha çok zevk farkıydı
Perl'in referans sözdizimi, zahmetli OO yapısı, use strict; / use warnings; gibi tekrar eden ayarları yorucuydu
Rails çok daha kısa ve güvenliydi, ayrıca dönemin zamanlaması da kusursuzdu
Perl benim ilk göz ağrısı dillerimden biriydi ama 2012'de tamamen Python'a geçtim
Bugün bile legacy kod içinde Perl betikleri görünce “iyi ki geçmişim” diye rahatlıyorum
Perl kodunda neredeyse hiç yorum olmazdı ve düzenli ifade aşırı kullanımı yüzünden okunabilirlik berbattı
Artık bu tür kalıpları Python'un nesne yönelimli yaklaşımıyla çözüyorum
Perl'i çok kullandım ama sonunda CPAN'in kalite sorunları yüzünden Python'a geçtim
CPAN modülleri sık sık bozuluyordu ve çoğu zaman kendin düzeltip kullanman gerekiyordu
90'larda ve 2000'lerin başında bu fark epey büyüktü
Perl'in ölmesinin nedeni, diğer dillerin CPAN benzeri ekosistemler kurması
ve Perl'in esnek sözdiziminin ekip halinde çalışmaya uygun olmamasıydı
SWIG ya da karmaşık tip sihirleri olmadan modülleri kolayca dağıtabiliyordunuz
Ayrıca Perl 6'nın bitmek bilmeyen geliştirme gecikmeleri son darbeyi vurdu
işbirlikçi ortamlarda bilişsel yük katlanarak artıyordu
Python ise bu tartışmayı PEP sistemi ile dışsallaştırarak çok daha verimli davrandı