-
Yazar bir ornitorenk
- Eleştirileri görmezden gelmek için yazarı yetersiz diye nitelemek tembelce bir yaklaşımdır.
- Junior geliştiriciler sorunlara yeni bir bakış açısıyla yaklaşabilir ve bu da onları işe almanın önemli nedenlerinden biridir.
- Yazar junior bir geliştirici değildir; çeşitli deneyimleri sayesinde dil tasarımı konusunda bir anlayışa sahiptir.
-
Annem sigara içiyor, o zaman sorun yoktur
- Diğer şirketlerin kullandığı teknolojileri sorgulamadan takip etmek verimsizdir.
- Teknik bloglar, şirketin imajını daha iyi göstermek amacı da taşır.
- Tailscale'in blogu dürüsttür, ancak Go'nun sorunlarını çözmek için çok fazla çaba gerekir.
-
İyi tarafları
- Go'nun asenkron çalışma zamanı ve çöp toplayıcısı çok iyidir.
- Paket yönetimi, refactoring ve cross-compiling gibi araçları kullanımı kolaydır.
- Ancak Go'nun dezavantajları göz ardı edilemez ve dil tasarımının tesadüfen şekillenmiş olması bir sorundur.
-
Go bir adadır
- Go'nun diğer dillerle birlikte çalışabilirliği zayıftır.
- Go araç zinciri kendine özgüdür ve mevcut assembly dilleri ya da debugger'lar kullanılamaz.
- Go ile entegrasyonun en kolay yolu bunu ağ sınırları üzerinden yapmaktır.
-
Ya hep ya hiç (bu yüzden de hiçbir şey yapılmıyor)
- Go, başlatılmamış struct alanlarını geride bırakabilir.
- Sıfır değerin anlam taşıdığı fikri safçadır ve birçok durumda sorun yaratır.
- Go kültürü, sorunları çözmekten çok dikkatli olun demeye dayanır.
-
"Rust mükemmel ve hepiniz aptalsınız"
- Rust kademeli olarak benimsenebilir ve diğer dillerle iyi entegre olur.
- Rust'ın başarısı kısmen güvenli dillere geçişin mümkün olmasından gelir.
- Rust'ın da sorunları vardır, ancak bunlar zaman içinde kademeli olarak çözülmektedir.
-
Go'yu prototip/başlangıç dili olarak kullanmak
- Go, öğrenmesi kolay bir dil olarak görülür, ancak gerçekte çok fazla deneyim gerektirir.
- Kodun yanlış olduğunu açıkça gösteren özellikler yetersizdir.
- Go'nun dezavantajları zamanla ortaya çıkar ve kolayca terk edilebilecek bir dil değildir.
-
Golang'ı kullanmaya devam etme nedenlerimizle ilgili yalanlar
- Başkaları kullanıyorsa bizim için de iyi olacağı düşüncesi
- Dil tasarımındaki kusurları bireysel ya da toplu olarak kabul edilebilir görmek
- Dikkatli olursak sorunların üstesinden gelebileceğimiz düşüncesi
- Yazması kolaysa production yazılım geliştirmek de kolaydır düşüncesi
- Dil basitse her şeyin de basit olduğu düşüncesi
- İstediğimiz zaman sonradan yeniden yazabileceğimiz düşüncesi
2 yorum
Go diliyle çok kısa ama yoğun bir süre geçirmiş bir amatörün yazı bırakması ne kadar uygun emin değilim ama... Go dilinin artıları ve eksileri gerçekten çok net; bu yüzden onu seçenlerin de kaçınanların da belli nedenleri var gibi görünüyor. Bana kalırsa bunu Rust ile değil, Kotlin(Java) ile karşılaştırmak daha doğru.
Go'nun goroutine'leri gerçekten harika, ama sihir değil. Özellikle backend tarafında sadece tek bir MySQL kullanan küçük projelerde bu eşzamanlılık meselesini yönetmek gerçekten zor. JS/TS runtime'larında çok da dert etmediğiniz MySQL kaynak tükenmesi ya da pool yönetimi, düşündüğünüzden daha zor olabiliyor. Sonuçta bu durumda darboğaz DB olduğu için Go dilinin eşzamanlılık avantajı kısmen soluyor. (JS/TS runtime'larının asenkron I/O'su ya da event loop'u hatta daha uygun olabilir.) Bunu
heygibi bir araçla-c 100verip denediğinizde hemen anlayabilirsiniz.Ayrıca iyi bir GC var diye, nesneleri gelişigüzel sadece pointer geçirerek kullanıp temizliği tamamen akışına bırakamazsınız. Her şeyde olduğu gibi burada da trade-off var; Go dilinde de mümkünse küçük nesneleri doğrudan değer kopyasıyla aktarmak ve fonksiyon biter bitmez işlerinin kapanmasını sağlamak daha iyi. Belki eski düşünce tarzına saplanmış olabilirim ama, C/C++ dillerindeki verimlilik bakışıyla pointer'lara kolayca yaklaşmamak gerekiyormuş.
Fonksiyondan
errordönerken neredeyse her seferinde geri döndürmek ve onu her seferindeif err != nil {}ile kontrol etmek gerçekten yorucu, ama bu bir avantaj. Çünkü maliyetitry catch'ten daha düşük. Ayrıcafinally {}benzeri bir rol üstlenendeferanahtar sözcüğü de harika. Kaynağın ne zaman serbest bırakılacağını düşünmek zorunda kalmamak güzel. Sadece standart kütüphane ile bile gayet iyi bir backend sunucu yapısının hemen kurulabilmesi de güzel (1.23 ve üzeri). Hepsinden önemlisi, hedef OS'e göre build edildiğinde başka bir runtime'a ya da ön kurulumlara ihtiyaç duymaması bence en büyük artısı.Go dilini uzun süre kullanmadım ama fazla kişisel bir görüşü uzatıyormuşum gibi hissettiğim için burada keseyim. haha Ben Go dilini de seviyorum, diğer dilleri de!
Hacker News görüşü
Go dilinin dezavantajları hakkında birçok eleştiri var, ancak açık hata işleme bunlardan biri değil. İstisna işleme, hata yapmayı fazla kolaylaştıran "sihirli" bir katman ekliyor. Kişisel projelerde Rust'ı tercih ediyorum, ancak farklı seviyelerde geliştiricilerin katıldığı büyük projelerde Go'nun felsefesi modern dünyadaki en makul hata işleme yaklaşımı.
Rust ve Go çok farklı ve insanların istediği orta nokta şu anda mevcut değil.
Basit dilleri seviyorum. Teknolojide her zaman ödünleşimler vardır, bu yüzden dengeli eleştiri önemli.
Bir dili eleştirmenin neden bu kadar önemli olduğunu merak ediyorum. Eleştiriler yapıcı bir üslupla yazılmıyor.
Go'ya yönelik eleştirileri her okuduğumda, yine de Go kullanmaya devam edeceğim.
Başka diller kullandıkça Go'ya geri dönmek istiyorum.
Daha iyi bir Python arıyordum. Go bariz seçimdi ama söz dizimini sevmiyorum.
Go ve Rust'ın neden sık sık karşılaştırıldığını anlamıyorum. Java ile karşılaştırmak daha uygun.