Go Programlama Diline Giriş : Özellikler

Mislina ÇETİNER
Turk Telekom Bulut Teknolojileri
4 min readAug 3, 2023

Google çalışanları tarafından geliştirilen ve 13 yaşında olan Go dili veri merkezlerinden bulut altyapısına, mikroservis mimarilerinden web uygulamalarına kadar birçok alanda tercih ediliyor.

Go’nun sadeliği, eş zamanlı işlem yetenekleri ve etkileyici derleme hızı, onu çeşitli endüstriler ve projeler için ideal bir seçenek haline getiriyor. Bu yazıda Go dilinin, yukarda sıraladığım özellikleri ve diğer dillerden farklarını inceleyeceğiz.

Go, dosya işleme, ağ oluşturma, test etme gibi birçok temel görevi yerine getirebilen geniş bir standart kütüphaneye sahiptir.

Bu bize ne fayda sağlar?

Üçüncü parti kütüphane, bağımsız geliştiriciler tarafından yazılmış kod koleksiyonlarıdır.

  • Standart kütüphanenin geniş olması, bir projede ihtiyaç duyulan çoğu işlevi zaten sunar, böylece geliştiriciler bu üçüncü parti kütüphanelere daha az bağımlı hale gelirler.
  • İhtiyaç duyulan işlevlerin standart kütüphanede bulunması, geliştirme sürecini hızlandırabilir.
  • Dosya okuma/yazma, HTTP sunucuları oluşturma, JSON ile çalışma, regular expressions kullanma gibi bir dizi farklı görevi gerçekleştirebilirsiniz.
  • Dilin çok yönlü olmasına ve geniş bir uygulama yelpazesiyle kullanılmasına olanak tanır.

Go kaynak kodları derlendiğinde, tüm bağımlılıklar (kütüphaneler, modüller vb.) dahil edilir ve tek bir bağımsız çalıştırılabilir binary dosya oluşturulur. Tüm uygulamanız bu tek dosyada paketlenir.

Bu bize ne fayda sağlar?

  • Farklı sunucular veya hatta farklı işletim sistemleri arasında bile kolayca hareket etmenizi sağlar.
  • Tüm bağımlılıkların binary dosyanın içine gömülü olması, başka bir sistemde çalıştırırken versiyon uyumsuzluğu veya eksik kütüphane sorunlarıyla karşılaşmamanız anlamına gelir.
  • Mesela Windows üzerinde Linux için bir binary dosya derleyebilirsiniz. Bu, çok platformlu uygulamaların geliştirilmesini oldukça basit bir hale getirir.
  • Kullanıcılar, ek kütüphaneler veya bağımlılıklar yüklemek zorunda kalmazlar bu da kurulum kolaylığı sağlar.

Go’nun hızlı derleme özelliği, dilin genel tasarım felsefesinin bir parçasıdır. Go, basitlik, etkinlik ve hızlı geliştirme süreçlerini desteklemek amacıyla tasarlanmıştır. Derleyicisi, kodun bağımlılıklarını ve bağlantılarını etkin bir şekilde yönetir, böylece sadece değişen kısımların yeniden derlenmesi gerekir.

Bu bize ne fayda sağlar?

  • Diğer dillere göre derleme süresinde ciddi bir performans kazancı sağlayabilir, bazen süreyi yarı yarıya düşürebilir.
  • Yazılımın daha hızlı test edilmesine, düzeltilmesine ve iyileştirilmesine imkan tanır.
  • Ürünün daha hızlı piyasaya sürülmesi ve geliştirme maliyetlerinin düşürülmesi gibi stratejik avantajlar sağlayabilir.

Go, otomatik hafıza yönetimi özelliğine sahiptir. Programcının, kullanılmayan nesneleri manuel olarak serbest bırakması gerekmez. Bunun yerine, dilin garbage collector’ı bunu sizin için yapar.

Garbage collector (çöp toplayıcı), kullanılmayan hafızayı otomatik olarak serbest bırakan bir mekanizmadır. Yani, bir program içinde artık kullanılmayan nesneleri belirler ve bunların hafızasını serbest bırakır.

Bu bize ne fayda sağlar?

  • Dilin kullanımını kolaylaştırır ve daha güvenli hale getirir.
  • Manuel hafıza yönetiminin karmaşıklığını ve risklerini ortadan kaldırır, böylece geliştiricilerin daha hızlı ve etkili bir şekilde çalışmalarına olanak tanır.

Go, kod yazarken belirli bir disiplin ve düzeni teşvik eder. Söz dizimi(syntax) kuralları oldukça katıdır.

Go’nun bu söz dizimi kurallarını yönetmek için bir aracı vardır: go fmt.

Bu araç, kodunuzu otomatik olarak düzenler ve Go’nun söz dizimi standartlarına uygun hale getirir. Bu, geliştiricilerin kodlarının düzenli ve tutarlı olmasını sağlamalarına yardımcı olur.

Go’da bir değişkeni tanımladıysanız veya bir paketi içe aktardıysanız, bunları kodunuzda kullanmanız gerekir. Aksi takdirde, derleme aşamasında hata alırsınız.

Bu bize ne fayda sağlar?

  • Kullanılmayan kod parçacıklarının ortaya çıkmasını önler ve böylece kodun temiz ve etkili olmasını sağlar.
  • Hafıza ve performans yönetimi üzerinde de olumlu bir etkiye sahiptir. Kullanılmayan değişkenler veya paketler, gereksiz hafıza kullanımına yol açabilir.
  • Go’nun bu tür gereksiz kullanımları engellemesi, daha etkili bir hafıza kullanımı sağlar.

Go’nun kendi mimarisini kullanarak, araya ekstra bir framework koymadan yani dil seviyesinde eş zamanlı programlamayı (Concurrency) destekler.

Bu bize ne fayda sağlar?

  • Eş zamanlı programlama, birden fazla işlemin aynı anda çalışmasına olanak tanır. Bu, özellikle I/O beklemesi gibi bloke edici işlemlerde veya çok çekirdekli işlemcilerde programın daha hızlı çalışmasına yardımcı olabilir.
  • Go’nun goroutine ve channel gibi özellikleri, eş zamanlı işlemlerin kolayca yaratılmasına ve yönetilmesine imkan tanır. Bu, eş zamanlı uygulamaların geliştirilmesinin daha düzgün ve hata riskinin daha düşük olmasına yardımcı olur.
  • Sistem kaynaklarını daha etkin bir şekilde kullanmaya olanak tanır. Bir işlem bloke olursa, diğer işlemler hala yürütülebilir, böylece CPU’nun daha etkin kullanılmasını sağlar.
  • Özellikle büyük, dağıtık sistemlerde veya ağ uygulamalarında çalışırken ölçeklenebilir çözümler geliştirmeyi kolaylaştırır.
  • Kodun daha anlaşılır ve bakımı daha kolay olmasını sağlar. goroutine'lerin kullanımı, karmaşık iş parçacığı yönetimi ihtiyacını ortadan kaldırabilir.
  • Go, modern çok çekirdekli işlemcilerin tüm gücünden yararlanabilir, böylece daha yüksek performans ve verimlilik sağlayabilir.
  • Go’nun channel'ları sayesinde, eş zamanlı işlemler arasında veri paylaşımı ve hata iletişimi daha güvenli ve etkin bir şekilde gerçekleştirilebilir.

Bahsettiklerimi ve daha fazlasını Go’nun kendi web sitesindeki dokümanlardan daha detaylı öğrenebilir, inceleyebilirsiniz. :)

--

--