3 puan yazan GN⁺ 2024-01-05 | 1 yorum | WhatsApp'ta paylaş

Go dilinin açık kaynak proje olarak yayımlanışının 14. yılı vesilesiyle

  • Go dilinin ortak yaratıcılarından biri, 10 Kasım 2023'te Sidney'de düzenlenen GopherConAU konferansında son konuşmasını yaptı.
  • Konuşmada, Go dilinin açık kaynak bir proje olarak yayımlanmasının 14. yılı anılırken, bu süre boyunca elde edilen başarılar ve üzerinde düşünülmesi gereken noktalar ele alındı.
  • Konuşmacı, Go ekibini ya da Google'ı temsilen değil, kişisel görüşlerini paylaştığını belirtti ve Go dilinin başarısına katkıda bulunan topluluğa teşekkür etti.

Go dilinin başarı etkenleri ve iyileştirme alanları

  • Go dilinin başlangıçtaki hedefi yeni bir programlama dili yapmak değil, yazılım geliştirme biçimini iyileştirmekti.
  • Go dili; bağımlılık yönetimi, büyük ekiplerle iş birliği, bakım kolaylığı, verimli test etme, çok çekirdekli CPU'ların ve ağ iletişiminin etkili kullanımı gibi modern sunucu yazılımı geliştirmenin karmaşıklıklarını çözmeyi amaçladı.
  • Go dili yalnızca bir programlama dili değil, üretim yazılımını daha kolay ve daha verimli biçimde inşa etmeyi hedefleyen bir projedir.

Go dilinin maskotu, gopher

  • Go dilinin maskotu olan gopher, Go dilinin başarısında önemli bir rol oynadı.
  • Gopher, Go programcılarının simgesi ve topluluğun bayrağı olarak projenin büyümesi için vazgeçilmezdi.
  • Gopher tasarımının Creative Commons Attribution lisansı ile paylaşılması topluluk ruhunu güçlendirmeye yardımcı oldu, ancak telif hakkı sorunlarından kaynaklanan zorluklar da yaşandı.

Go dilinin teknik başarı etkenleri

  • Resmî belirtimin yazılması, birden fazla uygulamanın bulunması, taşınabilirlik, uyumluluk güvencesi, zengin kütüphaneler, araç geliştirme kolaylığı ve otomatik kod biçimlendirme aracı olan gofmt, Go dilinin başarısına katkı sağladı.
  • gofmt, genel olarak programlama topluluğunu etkileyerek çoğu dilin standart bir formatter edinmesine zemin hazırladı.

Eşzamanlılık (Concurrency) ve arayüzler

  • Go dili, eşzamanlılığı dilin temel bileşenlerinden biri haline getirerek sunucu yazılımı yapısını sadeleştirmeye katkı sağladı.
  • Arayüzler, Go dilinin ayırt edici fikirlerinden biri olarak nesne yönelimli tasarıma Go'nun verdiği yanıt oldu ve standart kütüphane ile bağımlılık yönetiminde önemli rol oynadı.

Generics ve derleyici

  • Arayüzlerin varlığı, Go diline generics eklenmesinin uzun sürmesinin nedenlerinden biriydi.
  • İlk Go derleyicisinin C ile yazılmış olması programlama dili topluluğunda tartışma yarattı, ancak Go dilinin gelişimi açısından uygun bir seçimdi.

Proje yönetimi ve paket yönetimi

  • Go dili açık kaynak bir proje olmasına rağmen geliştirme sürecinin ilk döneminde kapalı yürütüldü; ancak kamuya açıldıktan sonra topluluk katkıları patlayıcı biçimde arttı.
  • Paket yönetiminin geliştirilme süreci sorunsuz değildi ve toplulukla nasıl iş birliği yapılacağı konusunda yeterli anlayış yoktu.

Dokümantasyon ve örnekler

  • Go dilinin ilk dönem dokümantasyonu topluluğun beklentilerini karşılayamadı, ancak web üzerinde çalıştırılabilir örnekler sunulması gibi iyileştirmeler yapıldı.

GN⁺ görüşü

  • Go dilinin başarısı; güçlü standart kütüphane, eşzamanlılık desteği, arayüz temelli tasarım, net paket yönetimi, hızlı build ve test araçları, tutarlı kod biçimlendirme, okunabilirliğe verilen önem ve uyumluluk güvencesi gibi unsurlardan kaynaklanıyor.
  • Go dili, yalnızca bir programlama dili olarak değil, yazılım geliştirme biçimine yenilik getiren bir yaklaşım olarak da öne çıktı; bunda topluluğun çeşitliliği ve desteği belirleyici oldu.
  • Go dilinin geliştirilme süreci ve buna dair öz değerlendirmeler, açık kaynak projeleri yürütme konusunda önemli dersler sunuyor.

1 yorum

 
GN⁺ 2024-01-05
Hacker News görüşleri
  • Proje değerlendirmesine zaman ayıran kilit isimlere duyulan minnettarlık

    • Sisteme yakın programlamaya odaklanan dil kısıtları
    • Belirsizliği ve amacı farklı tasarım israfını önlemek için dilin ve ilkelerin net tanımlanması
    • Sorunları dağıtımdan önce çözmenin tüm paydaşlar için daha ucuz olması nedeniyle kalitenin önceliklendirilmesi
    • Toplulukla paylaşım ile sıkı dil ve sürüm yönetimi arasında dengenin korunması
    • Google'ın müdahil olmamasının Go'nun başarısına katkı sağladığı ve bunun başka projelerde de mümkün olup olmadığının sorgulanması
    • Go'nun sunucu tarafı yazılımları Java'dan yerel container'lara taşımada kilit teknoloji olduğu ve son 10 yılda web uygulaması altyapısının büyük bölümünü desteklediği
  • Go dili ve topluluğuna duyulan sevgi

    • 2012'de bir Python geliştiricisi olarak Go ile tanışıp bit işlemlerinin kolaylığına şaşırma
    • 10 yıl sonra bile Go'nun özelliklerinin çoğunun hâlâ iyi çalışmasına şaşırma
    • Rob, Ian, Russ ve diğerlerinin Go için yaptıklarına ve toplulukla yaşanan "yoldaki pürüzler" konusunda dürüst olmalarına teşekkür
    • Paket yönetimi sorunlarına eleştirel bakış olsa da şu anda iyi bir çözüme ulaşıldığının düşünülmesi
  • Go'nun paket yönetim sistemiyle ilgili eleştirel bir deneyim paylaşımı

    • 10 yıl önce go-nuts'ta Go'nun paket yönetimi yaklaşımını eleştirdiğinde Rob Pike tarafından görmezden gelinme deneyimi
  • Go diline eleştirel bakış

    • Dilin derin sorunlarının yeterince kabul edilmediği görüşü
    • Tip sistemi, hata işleme, güvensiz eşzamanlılık ve basit sözdizimi nedeniyle Go'nun tavsiye edilmemesi
    • Ana dil olarak Rust kullanıldığı ve Go'nun sahip olmadığı vizyonun Rust'ta bulunduğu düşüncesi
  • Ken Thompson'ın C derleyicisini kullanma kararına dair ilgi çekici nokta

    • LLVM yerine Ken Thompson'ın C derleyicisinin kullanılmasına yönelik memnuniyetsizlik ve ilk sürümlerde optimize edilmemiş kod üretimine değinilmesi
    • Bu karar sayesinde segmented stack'in hızlıca uygulanabilmesi
  • gofmt'nin başarılı şekilde benimsenmesine vurgu

    • Projenin başından itibaren kod biçimlendirme tartışmalarını tamamen ortadan kaldırarak büyük değer sağlaması
    • Birçok yeni dilin gofmt'yi taklit etmesi veya benzer araçlar geliştirmesi
  • GopherConAU organizatörü olarak tüm oynatma listesini paylaşma

    • Oynatma listesinin neden herkese açık olamayacağının bilinmemesi
  • Go ile monorepo'ları kolayca kurabilme ve uygulamaları hızlı derleyebilmenin avantajları

    • Go ile CLI araçları oluşturmanın kolay olması ve Unix pipeline'ının bir parçası olarak kullanılabilmesi
    • Go'nun büyük hacimli log analizi gibi işlerde faydalı olması
  • Go'nun birlikte çalışabilirliği ve C FFI tercihlerine yeterince değinilmemesi

    • "Go ile yeniden yaz" yanıtının diğer seçenekleri dışlaması
  • Derleyiciyi kendi diliyle yazma konusunda görüş

    • Kendi dilinde derlenemeyen bir dilin derleyici yazmak için uygun olup olmadığı sorusunun ortaya atılması
    • Derleyiciye uygun bir dilin başka uygulamalar için uygun olmayacağı imasının anlaşılamaması ve daha fazla bağlam talep edilmesi