Ana Sayfa

Go Neden Favori Dilim Değil: Hata Yönetimine Eleştirel Bakış

1 dk okuma

“Why Go is not my favourite language” başlıklı makale, Go programlama dilinin hata yönetimi ve kapsam sonu işlemleri konusundaki eksikliklerini eleştirel bir bakış açısıyla inceliyor. Yazar, Go topluluğunda yaygın olanın aksine, panic ve recover mekanizmalarının aslında diğer dillerdeki istisnalara (exceptions) eşdeğer olduğunu savunuyor. Bu durumun, Go geliştiricilerini istisna güvenli (exception-safe) kod yazmaya zorladığını, ancak dilin bu özelliği inkar etme eğiliminde olduğunu belirtiyor. Makale, panic/recover'ın Python, C++ ve Java'daki istisnalarla aynı işlevselliğe sahip olduğunu, hatta encoding/json gibi standart kütüphanelerin bile dahili olarak bu mekanizmaları kullandığını örneklerle açıklıyor. Yazar, Go'nun hem hata dönüş değerlerini hem de istisna benzeri panic mekanizmasını bir arada kullanmasının karmaşıklık yarattığını vurguluyor. Bir geliştirici recover kullanmasa bile, HTTP işleyicileri gibi framework'lerin panic durumlarını yakalayarak programın tamamen çökmesini engellediğini ve bu durumun tüm kodun istisna güvenli olmasını zorunlu kıldığını ifade ediyor. Bu durumun, Erlang gibi dillerdeki süreçlerin çökmesine izin veren yaklaşımdan farklı olduğunu belirtiyor. Ayrıca, defer anahtar kelimesinin kaynakları serbest bırakmak için önemli olduğunu ancak kapsam sonu işlemlerini yönetmek için her zaman yeterli olmadığını, özellikle döngüler gibi karmaşık senaryolarda eksik kaldığını dile getiriyor. Makale, Go'nun hata yönetimi yaklaşımının, geliştiricilerin istisna güvenliğini sürekli göz önünde bulundurmasını gerektiren, ancak dilin bu gerçeği kabul etmekten kaçındığı bir çelişki yarattığını öne sürüyor. Bu durumun, daha az öngörülebilir ve potansiyel olarak daha fazla hataya açık bir sistemle sonuçlanabileceği uyarısında bulunuyor.

İçgörü

Go'nun `panic/recover` mekanizmalarının gerçekte istisna olduğunu ve bu durumun Go geliştiricilerini istisna güvenli kod yazmaya mecbur bıraktığını, yaygın kanının aksine iddia ediyor.

Kaynak