8 puan yazan GN⁺ 2023-12-19 | 1 yorum | WhatsApp'ta paylaş

Programcının mutluluğunu hedeflemek

  • Ruby, programcının mutluluğunu hedefleyen bir dildir ve bu yüzden başka topluluklar tarafından zaman zaman alay konusu da olur.
  • Ruby kullanmak keyif verir; bu, dilin kendisine, gems ekosistemine ve topluluğun geneline işlemiş bir değerdir.
  • Ruby kodu yazarken, kötü kısımlarda bile keyif alınır.

İfade gücünü teşvik etmek

  • Ruby muhtemelen yeryüzündeki en ifade gücü yüksek programlama dilidir.
  • Metaprogramlama özellikleri ve kültürel deyimleri sayesinde programcılar, niyetlerini açıkça ifade eden kodlar yazabilir.
  • Örneğin RSpec’in DSL’i, test etmek istediğiniz şeyi adeta bir insanın konuşması gibi okunur hale getirir.

Sanki yalnızca benim için yapılmış bir dil

  • Birçok Ruby geliştiricisi, Ruby ve Rails’in kendi düşünme biçimlerine tam oturduğunu hisseder.
  • Metot adları ve imzaları sezgisel olarak tahmin edilebilir; yanlış olduğunda ise argümanların sırasını değiştirmeyi deneyebilirsiniz.
  • Dokümantasyonu okumadan önce, sezgiye dayanarak bir şeyi denemeyi hızlıca öğrenirsiniz.

Topluluk ve değerler

  • Ruby topluluğu, dilin ne olduğunun ve bu dili kullanmanın nasıl bir his verdiğinin şekillenmesinde önemli rol oynar.
  • Kent Beck, "Yazılım tasarımı insan ilişkileri pratiğidir" demişti; bu, topluluk ve değerler için de geçerlidir.
  • Ruby topluluğu, insanı içine alan, nazik ve birbirini destekleyen harika bir gruptur.
  • Ruby’nin neşe ve topluluk gibi temel özelliklere sahip olması büyük bir avantajdır.

GN⁺ Görüşü

  • Ruby dilinin en önemli özellikleri, programcı mutluluğunu önemsemesi ve ifade gücü yüksek kod yazımını mümkün kılmasıdır.
  • Ruby topluluğunun güçlü bağlılığı ve karşılıklı destek kültürü, bu dili kullanan geliştiricilere büyük bir gurur ve tatmin duygusu verir.
  • Bu yazı, Ruby’yi seven bir geliştiricinin bakış açısından Ruby’nin cazibesini aktarırken, bir programlama dilinin yalnızca bir araç olmanın ötesine geçip topluluk ve kültür oluşturabileceğini göstermesiyle ilgi çekici ve etkileyicidir.

1 yorum

 
GN⁺ 2023-12-19
Hacker News görüşleri
  • Ruby dilinin ifade gücü hakkında görüş ayrılığı var

    Ruby, ekosisteminin içinde ya da ekosistemin beklediği işleri yaparken harika, ancak standart dışı bir şey yapmaya çalıştığınızda oldukça uğraştırıcı olabiliyor. Yardımcı yöntemler 5 katmanlı bir soyutlamanın bir yerinde tanımlanmış olabiliyor ve bazen de bir kütüphanenin metaprogramming yapısının parçası olduğu için LSP bunları işaret edemeyebiliyor. Ruby, örtük olanı yücelten bir ekosisteme sahip ve bu da bazen insanı deli edebiliyor. Ortaya çıkan kod şık ve okunabilir olsa bile bu her şeyi çözmüyor.

  • Geliştirici deneyiminin önemini kabul etmekle birlikte Ruby’nin en iyisi olmadığı görüşü

    Geliştirici deneyiminin birçok programlama dili ya da framework’te küçümsendiğine katılıyorum, ancak Ruby’nin bu alanda en iyisi olduğunu düşünmüyorum. Sözdizimi ilk başta hoş görünebilir ama tip bilgisinin yokluğu ve metaprogramming, Ruby’yi kullanmayı zorlaştırıyor. Ayrıca bir programlama dili seçerken runtime performansı gibi başka etkenleri de hesaba katmak gerekir. Statik tiplemenin olmaması ve benzeri nedenlerle Ruby’nin gözden düştüğünü düşünüyorum. Benim için programlama dillerinde ideal nokta Kotlin. Kotlin kısa ve okunması kolay bir dil; dünya çapında araç desteği, statik tipleme, JVM’in güçlü performansı ve Java ekosistemindeki her şeyi sunuyor.

  • Ruby diline sevgi ifade ederken neden Python’u tercih ettiğini anlatan görüş

    Ruby’yi seviyorum ve Python’dan daha çok tercih ediyorum. Özellikle fonksiyonel işlemlerin zincirlenmesi çok temiz ve ifade gücü yüksek. Java stream’lerine benzeyen yanını seviyorum. Kütüphane ekosistemi de harika; Python’a benzer şekilde kütüphaneler çok pratik. Ama bakım gerektiren işler için Python’u, performansın az da olsa önemli olduğu durumlarda ise Java’yı seçiyorum. Ruby ile Python arasında ise kademeli tiplemeye yaklaşımları farklı olduğu için sürekli Python’u seçiyorum. Python 3, tipleri programın bir parçası olarak eklemenize izin veriyor, ancak Ruby’de tipler ayrı dosyalarda tutulma eğiliminde. Bu daha çok kütüphaneler için gibi görünüyor; JavaScript kütüphanelerinin yanında TypeScript tip dosyaları sunmasına benziyor. Ama ben kişisel olarak tipleri doğrudan kullanmak istiyorum. Elbette Sorbet diye bir araç var, ancak bunun bir gem olması ve sözdiziminin parçası değil de dilin içinde çalışan bir şey olması hoşuma gitmiyor. Stripe’ta iyi çalıştığını gördüm ama kişisel olarak sevmiyorum; yerleşik type hinting’e sahip Python 3’ün tiplemeyi Ruby’ye göre daha kolay uygulanabilir kıldığını düşünüyorum. Ruby’yi gerçekten çok seviyorum ama type hinting tarafının gelişmesini isterdim.

  • Çeşitli dillerdeki deneyimini paylaşarak Ruby’ye düşük bir yakınlık duyduğunu belirten görüş

    Çeşitli dilleri denedim ve bir dönem ağırlıklı olarak Rails kullandığım için Ruby’ye epey daldım. Ama Ruby muhtemelen en sevmediğim dil. Ruby’yi benzersiz kılan özelliklerin çoğu, bana işlevsel eğlence aradığımda F#’a yönelmeyi, macera istediğimde C++ kullanmayı, dinamik bir dil istediğimde ise Scheme/Racket’e gitmeyi düşündürüyor. Programlama dillerinin ifade gücü için genel kabul gören nicel bir tanım olup olmadığını merak ediyorum. Burada yazarın ifade gücünü doğal dile yakınlıkla eş tuttuğu anlaşılıyor. Deneyimime göre Ruby kodu yazması kolay, ancak kod tabanına ve onun deyimlerine aşina değilseniz takip etmesi zor. Anlamak için gereken bilginin büyük kısmı örtük bağlamla aktarılıyor.

  • Ruby’ye karşı güçlü bir hoşnutsuzluk ifade ederken şu anda ana dili olarak kullandığını söyleyen görüş

    Ruby’den tutkuyla nefret ediyorum ama şu anda en çok kullandığım dil o. Sorun Ruby’nin kendisinin makul bir dil olmamasından çok, ekosistemde yaygın olan kalıplar. Kod paylaşımı için inheritance kullanılması, global mutable state’in her yere yayılması ve metaprogramming’in aşırı kullanımı başlıca sorunlar. Bunlar dilin dayattığı şeyler değil, toplulukta yaygın ama nadiren sorgulanan alışkanlıklar.

  • Ruby bakımının zorluğundan yakınarak başka dillere geçmeye çalışan görüş

    Ruby bakımı bana kâbus gibi geliyor ve o cehennemden çıkmaya çalışıyorum. Kişisel projelerde Ruby’yi seviyorum ama başkalarıyla birlikte çalışıldığında çok daha hızlı dağılabiliyor; böyle olunca Ruby’nin “önüne çıkmama” avantajı da ortadan kalkıyor. Kod içinde yerel muhakeme yapabilme yetisini yok etmesi temel sorun olarak görülüyor.

  • Ruby’den Rust’a geçiş deneyimini paylaşırken Ruby’ye sevgisini koruyan görüş

    10 yıl Ruby kullandıktan sonra 4 yıl önce Rust’a geçtim ve geri dönmeyi düşünmüyorum. Buna rağmen Ruby’ye karşı hâlâ bir sevgim var. İyi bir tip sistemi olmadan artık yapamayacağımı hissediyorum; sanırım Rust’a alıştım. Yine de Ruby’nin güçlü reflection yeteneklerini özlüyorum.

  • Keyifli programlama dillerinin çoğu zaman küçük bir iş piyasasına sahip olmasının ironisine dikkat çeken görüş

    En keyifli programlama dillerinin çoğu zaman en küçük iş piyasasına sahip olması, programlamanın ironilerinden biri. Bütün gün Elixir ile programlama yapabilsem meslek hayatım çok daha iyi olurdu, ancak Elixir işleri TypeScript, Python ve Java’ya kıyasla neredeyse yok denecek kadar az. Ruby buna bir istisnaydı ama artık Rails tabanlı çalışan çok az insan var; onun yerine React ve NextJS tabanlı çalışanlar çoğaldı. Bu daha çok full-stack uygulama piyasasıyla ilgili; sistemler için Rust kullananlar ya da veri/yapay zeka için Python kullananlar açısından durum farklı olabilir.

  • Ruby ekosistemi ve kültürünün programlamaya etkisini vurgulayan görüş

    Dilin kendisi hakkında çok konuşuluyor ama Ruby ekosistemi ve onun oluşturduğu kültür, Ruby’de kalmaya devam etmemin asıl nedeni. Makale de buna işaret ediyor. Ruby çevresindeki programlama topluluğu kadar teşvik edici ve nazik başka bir topluluk henüz görmedim.

  • Ruby’den keyif alan yazara olumlu yaklaşan ve kişisel deneyimini paylaşan görüş

    Yazarın Ruby’den keyif almasına sevindim; Ruby konusunda sınırlı deneyimi olan biri olarak bu alıntılar özellikle dikkatimi çekti. Bir dilin kullanmasının keyifli olması, iyi yazılmış Ruby kodunun doğal dil gibi okunabilmesi ve programlama yapılan dil tarafından “tanındığını” hissetmenin gücü önemli noktalar. Ayrıca Kent Beck’in yazılım tasarımının insan ilişkileri pratiği olduğu yönündeki sözüne de katılıyorum. Derleyici, dokümantasyon, standart kütüphane, üçüncü taraf kütüphaneler, paket yöneticisi, framework, formatter, profiler gibi dili destekleyen tüm bileşenler özellikle önemli.