Alternatif Uygulama Sorunu
(pointersgonewild.com)Alternatif uygulamanın sorunu
Yazar, yazılım dünyasında tekrar tekrar ortaya çıkan alternatif uygulama sorunundan bahsediyor. Yazarın deneyimi ağırlıklı olarak dinamik tipli programlama dillerini optimize etmek üzerineydi.
- PyPy projesi, Python için gelişmiş bir JIT derleyicisi geliştirdi, ancak pratikte neredeyse hiç kullanılmadı. Python sürekli yeni özellikler ekleyip değiştiği için PyPy'nin buna yetişmesi zordu.
- LuaJIT çok takdir görüyor, ancak Lua dili yeni özellikler eklemeyi sürdürdükçe LuaJIT birkaç sürüm geride kalmış durumda.
- TruffleRuby JIT en etkileyici performansı sundu, ancak CRuby'ye kıyasla özellik uyumluluğu yetersizdi; bu yüzden dağıtımı sınırlı kaldı.
Ders: alternatif uygulamalar başarısız olmaya mahkum bir tercih olabilir
- Alternatif bir uygulama yapıldığında, resmi uygulamadaki değişimlere bağımlı hale gelmek kaçınılmazdır.
- Resmi uygulama projenin yönünü kontrol eder ve alternatif uygulama ise yalnızca onu takip edebilir.
- Geleneksel olarak yorumlayıcı diller için JIT uygulamaları yapılırken, yorumlayıcıya yeni özellik eklemek çok daha hızlı olduğu için resmi uygulama JIT'in önüne geçebilir.
YJIT: Ruby JIT derleyicisinin CRuby içinde uygulanması
- YJIT de başka bir Ruby JIT'i, ancak bunu doğrudan CRuby'nin içinde uygulamayı seçti.
- Bu sayede YJIT baştan itibaren tüm CRuby özellikleriyle %100 uyumlu olabildi.
- Bugün Ruby'nin resmi JIT'i haline geldi ve Shopify, Discourse, GitHub gibi yerlerde kullanılıyor.
Daha geniş açıdan çıkarılacak ders
- Mevcut dillere benzeyen ama onlarla uyumlu olmayan Crystal dili de ancak sınırlı bir başarı elde etti.
- Var olan dillere benziyor gibi görünüp uyumlu olmamak insanları sadece kafa karışıklığına sürüklüyor.
- Yeni bir programlama dili yapılırken, mevcut bir dilin alt kümesi olmaya çalışmak yerine kendi yolunu çizmek daha iyi.
- Böylece başka uygulamaların performansına, özelliklerine veya kütüphanelerine bağlı kalmadan kendi hızı ve yönüyle evrimleşebilir.
GN⁺ görüşü
- Yazıda anlatılan "alternatif uygulama sorunu", yalnızca programlama dilleri için değil, çeşitli yazılım ve donanım sistemleri tasarlanırken de dikkat edilmesi gereken bir konu.
- Yalnızca kararlılık ve uyumluluğa odaklanılırsa yenilik yapmak zorlaşabilir. Ancak gerçek kullanıcı açısından uyumluluk çok önemli bir unsur. Yeni teknolojiler ile kullanıcı dostuluğu arasında denge kurmak önemli.
- Uzun vadeli bakışla, yeni başlatılan bir projenin "kiminle uyumlu olduğu" ve "hangi yönde evrileceği" üzerinde yeterince düşünmek gerekiyor.
- Yeni bir programlama dili yapılırken yalnızca mevcut dillerin sözdizimine benzemek, kafa karışıklığını artırır. Bunun yerine kendi felsefesini ve yönünü netleştirmek daha doğru.
- Pazardaki rekabetten çok yaratıcı ve özgün çözümler ortaya koymanın uzun vadede başarı şansını artırdığı görülüyor.
1 yorum
Hacker News görüşü