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’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
İ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
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
O’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
Go 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)
[E-kitap] Learn Go with Tests
Bu dilin en güzel yanlarından birisi test yazmak için sunmuş olduğu kolaylıklar. Bu sayede daha ilk günden günümüzün olmazsa olmazı “unit test” yazmaya başlayabiliyorsunuz. Learn Go with Tests tam da bu düşünceyle ortaya çıkmış bir proje. Adından da anlaşılacağı üzere Go’yu test yazarak anlatıyor. Tabi konuya bir de şu açıdan bakmak lazım. Hem Go’nun sunduğu bu kolaylıklar, hem de günümüz yazılım geliştirme süreçlerinde test’e gösterilen önem nedeniyle Go geliştiricilerinin yazdığı her kodun yanında mutlaka testinin de olması bekleniyor. Bu açıdan Learn Go with Test, Go öğrenmeye başlamak için güzel bir adım olabilir.
Not: Bu içerik ayrıca Türkçe’ye de çevrilmiş. Çeviride emeği bulunanların ellerine sağlık.
https://halilkocaoz.gitbook.io/go-programlama-dilini-ogren/
[E-kitap] Go 101
Go 101 (go101.org) en sevdiğim kaynaklardan birisi. Go üzerine makalelerden oluşan websitesindeki dilerseniz e-kitap olarak da indirebiliyorsunuz. Bu sitenin güzel yanı makalelerin kalitesi. Her ne kadar ismi Go 101 olsa da normal Go eğitim dokümanlarında göremeyeceğiniz bir derinlikte ele alıyor konuları. Sitedeki tanıtım paragrafından da bu farklı yaklaşımı görebilirsiniz. Belki başlangıç seviyesinde bir miktar ağır gelebilir yazılar ancak orta ve ileri seviyede mutlaka okunması gerektiğine inandığım bir kaynak.
Go 101 is a book focusing on Go syntax/semantics and all kinds of runtime related things and tries to help gophers gain a deep and thorough understanding of Go. This book also collects many details of Go and in Go programming. Many of these details could not be found in official Go documentations. It is expected that this book is helpful for both beginner and experienced Go programmers.
[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
[Makale] The Zen of Go
[Video] Gophercon’s Videos
[Topluluk] Ankara Gophers
[Topluluk] Go Türkiye
[Topluluk] Golang Nuts