Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

Go Programlama Dili’ni Nasıl Öğrenebilirim?

3 min read

Her gün çevremde Go Programlama Dili‘ni merak eden ama nasıl ve nereden başlayacağını bilemeyen birçok kişiyle karşılaşıyorum. Twitter mesaj kutum da bu konuların sorulduğu mesajlarla dolu. Bu yazıyı da tam bu amaçla yani yeni başlayanlara yol göstermek için kaleme aldım. Tabi önce hangi öğrenme modelinin size uygun olduğunuzu bilmenizde fayda var. Kimisi kitap sever, kimisi videolu eğitim ile daha iyi anlar. Siz de kendinize uygun eğitim içeriğini seçecek başlayabilirsiniz. Aşağıdaki kaynaklar basitten zora doğru sıralanmıştır.

[Makale] Go Programlama Dili Üzerine

Go öğrenmeye Go Programlama Dili’ni tanıyarak başlamak gerektiğine inanıyorum. Hemen “Hello World” uygulamasıyla başlarsanız ve devam ederseniz temelleri öğrendikten sonra “peki ya şimdi ne yapacağım?” gibi bir soruyla baş başa kalabilirsiniz. İşte bu tanıma noktasında Oğuzhan Yılmaz‘ın Go Programlama Dili Üzerine başlıklı yazısını tavsiye ederim.

[İnteraktif] A Tour of Go (Go Tour)

Go Tour
Go’yu genel olarak tanıdınız ve artık söz dizimi ile örnek uygulamalara geçmek istiyorsunuz diyelim. Go Tour bu konuda kullanabileceğimiz en öncelikli araç/doküman diyebiliriz. Go’nun resmi etkileşimli eğitim dokümanı olan Go Tour, adım adım ilerleyen dersler ile birlikte bünyesinde online bir kod düzenleyici barındırıyor. Böylece her dersi hemen yanındaki düzenleyicide deneyebiliyorsunuz.

[Kitap] Go Programlama

Go Programlama Kitabıİleri aşamalarda İngilizce içerik okumak gerekecektir ancak başlangıçta hızlı ilerlemek için Dikeyeksen Yayıncılık tarafından yayımlanan Murat Özalp‘in Go Programlama kitabı‘nı okuyabilirsiniz. Okuduğunuzu kafanızda İngilizce’den Türkçe’ye çevirmek zorunda kalmayacağınız için hem daha hızlı ilerliyor, hem de kolay anlayabiliyorsunuz. Tabi ben zaten böyle bir çeviri yapmıyorum, İngilizce konusunda iyiyimdir diyorsanız aşağıdaki içeriklere atlayabilirsiniz.

[Eğitim] Go Bootcamp: Master Golang with 1000+ Exercises and Projects

Go Bootcamp
Udemy eğitimi sevenlere İnanç Gümüş tarafından hazırlanan Go Bootcamp: Master Golang with 1000+ Exercises and Projects eğitimini (içerik İngilizce) şiddetle tavsiye ederim. Sadece anlatımdan ziyade görsel olarak inanılmaz emek sarf edilmiş kaliteli bir eğitim. Ayrıca bu eğitimi destekleyici olarak hazırlanan ve 1000’den fazla örnek kod içeren Learn Go Github reposuna bakmanızı mutlaka tavsiye ederim.

[Kitap] Learning Go

Learning Go BookO’Reilly yayımlarından Jon Bodner‘in Learning Go kitabı en sevdiklerimden birisi. Konu anlatımları esnasında basit anlatım yerine konunun özüne iniyor ve hatta en doğru kullanım şekillerini (best practice) gösteriyor. Bununla birlikte konu başlıkları için kullandığı tabirler doğrudan aklınızda yer ediyor. Mesela “Implicit Interfaces Make Dependency Injection Easier” veya “Function Types Are a Bridge to Interfaces”.

[Kitap] The Go Programming Language

The Go Programming LanguageGo konusunda en çok tavsiye edilen ve referans gösterilen kaynaklardan birisi de Addison-Wesley yayımı olan ve Alan A. A. Donovan ile Brian W. Kernighan tarafından yazılan [Kitap] The Go Programming Language kitabıdır. Learning Go veya bu kitabı tercih edebilirsiniz okumak için.

[Doküman] Effective Go

Go’nun resmi dokümanlarından Effective Go başlangıç için biraz ağır kaçabilir ancak belirli bir seviyeye geldikten sonra mutlaka okunması gerekir. Go dilinin nasıl etkili bir şekilde kullanılacağını çok güzel anlatıyor. Ayrıca Go’nun resmi dokümanı olması doğal olarak bir geçerlilik/yasallık katıyor. Herhangi bir konuda çıkmaza girdiğinizde veya bir tartışmada doğrudan burayı kaynak gösterebilirsiniz. Şahsen ben öyle yapıyorum :) Ayrıca kitaplarda ve eğitimlerde değinilmeyen bir çok konuyu burada bulabilirsiniz. Mesela Interface checks başlığı altındaki şu satırı açıklayan başka herhangi bir doküman görmedim.
var _ json.Marshaler = (*RawMessage)(nil)

[Doküman] The Go Programming Language Specification

Go dilinin resmi spesifikasyonu Go Spec her şeyi temelini oluşturur. Dilin tüm yapısını, nasıl geliştirildiğini ve daha birçok detayı bu dokümanda bulabilirsiniz. Doğal olarak biraz ağır bir doküman ancak orta ve ileri seviyede mutlaka okunması gerekir.

Son Sözler

Bu yazımda bir çok kaynak belirttim ki bu işin en kolay kısmı. Zor olan kısmı ise;

  • Bu kaynakları okumak,
  • Bol bol pratik yapmak,
  • Örnek projeler geliştirmek,
  • Go topluluğunun bir üyesi haline gelerek diğer Go geliştiricileri ile etkileşime geçmektir.

Dave Cheney’nin The Zen of Go yazısından çok güzel bir söz var.

Idiomatic Go is not something you learn from a book, it’s something that you acquire by being part of a community.

Özetle doğru bir şekilde Go yazmayı ancak bir topluluğun üyesi olarak öğrenebilirsiniz. Sanırım size verebileceğim en önemli tavsiye bu olur.

İyi kodlamalar dilerim.

Diğer Kaynaklar

[Blog] Resmi Go Blogu
[Kitap] Go In Action
[Blog] Go 101 articles
[Makale] The Zen of Go
[Video] Gophercon’s Videos
[Topluluk] Ankara Gophers
[Topluluk] Go Türkiye
[Topluluk] Golang Nuts

Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

Go’da Empty Struct Karşılaştırma Problemi

Yazılım geliştirirken bazen anlam veremediğimiz durumlarla karşılaşırız. Her programlama dilinde olduğu gibi Go’da da özenle işlenmesi ve açıklanması gereken konular vardır. Bunlardan birisi de...
Erhan Yakut
2 min read