Go (programlama dili)
Go (diğer adıyla golang), Google'da 2007 yılından itibaren geliştirilmeye başlayan açık kaynak programlama dilidir.[4] Daha çok sistem programlama için tasarlanmış olup, derlenmiş ve statik tipli bir dildir. Kasım 2009'da çıkmıştır. Go derleyicisi "gc", açık kaynak yazılım olarak, Linux, OS X, Windows, bazı BSD ve Unix versiyonları, ve ayrıca 2015'ten itibaren akıllı telefonlar için geliştirilmiştir.
Paradigması | Derlenen, emirli, yapısal |
---|---|
İlk çıkışı | 10 Kasım 2009) |
Tasarımcı |
Ken Thompson Robert Griesemer, Rob Pike |
Geliştirici | Google Inc. |
Kararlı sürüm |
1.15.5 (12 Kasım 2020) ) |
Tip sistemi | Statik |
Etkilendikleri | Alef, APL,[1] BCPL,[1] C, CSP, Limbo, Modula, Newsqueak, Oberon, occam, Pascal,[2] Python, Smalltalk[3] |
Platformu | Linux, OS X, Windows, bazı BSD ve Unix versiyonları |
İşletim sistemi | Çapraz platform |
Lisans | BSD lisansı stili |
Olağan dosya uzantıları | .go |
Web sitesi | golang.org |
Tarihçe
Dil, Kasım 2009'da duyrulmuştur. Google'ın bazı ürünlerinin sistemlerinde olduğu gibi diğer firmalar tarafından da kullanılmaktadır.[5]
Go, Google mühendisleri Robert Griesemer, Rob Pike, ve Ken Thompson tarafından bir deney olarak ortaya çıkarılmış, diğer dillerin bilinen eleştirilerini çözecek ve olumlu özelliklerini koruyacak şekilde tasarlanmıştır. Yeni dil aşağıdaki özellikleri içermekteydi:[6]
- Statik yazılmış, büyük sistemlere ölçeklenebilir olması (Java ve C++ gibi)
- Üretken ve okunabilir olması, çok fazla zorunlu anahtar kelime ve tekrarlamaların kullanılmaması[7]
- Tümleşik geliştirme ortamına ihtiyaç duymaması ancak desteklemesi
- Ağ (networking) ve çoklu işlemleri (multiprocessing) desteklemesi
Yapılan röportajlarda bu üç dil tasarımcısının yeni dili yapmalarındaki motivasyonun, C++'daki karmaşıklığı beğenmedikleri için geldiğini belirtmişlerdir.[8][9][10]
Go 1.0, Mart 2012'de yayınlanmıştır. En son Ağustos 2018'de Go 1.11 sürümü yayınlanmıştır.[11]
Dil tasarımı
Go, C'nin bilinen özelliklerini taşımaktadır ancak yapılan değişiklikler dili basit, kısa ve güvenli hale getirmiştir. Aşağıda Go'yu kısaca tanımlayan özellikler yer almaktadır:
- Söz dizimi ve çevresel kalıpları benimsemesi daha çok dinamik dillere benzemektedir:[12]
- Belirli problemlere ayırt edici yaklaşımlar:
- Dahili eş zamanlılık ilkelleri: light-weight process'lar (goroutines), kanallar, ve
select
ifadesi. - Varsayılan olarak statik olarak bağlanmış native binary'ler, ekstra bağımlılıklara ihtiyaç duyulmadan üretilir.
- Dahili eş zamanlılık ilkelleri: light-weight process'lar (goroutines), kanallar, ve
Söz dizimi
Go'nun söz dizimi, C'den yapılan değişiklikleri içerir, kodu kısa ve okunabilir kılmayı amaçlar. Birleştirilmiş declaration ve başlatma operatörü, programcılara i := 3
ya da s := "bazı kelimeler"
yazarak, herhangi bir tür belirtimine ihtiyaç duyulmadan değişken tanımlamasını sağlar. Noktalı virgüller hala ifadeleri sonlandırır fakat satır sonlarında kullanılmasına gerek yoktur. Fonksiyonlar birden fazla değerler döndürebilir (return result, err
).
Örnek kullanım
Go ile Merhaba dünya programı
package main
import "fmt"
func main() {
fmt.Println("Merhaba dünya!")
}
Kaynakça
Bu makale, Creative Commons Attribution 3.0 lisansına sahip resmi Go eğitselinden Let's Go1 Temmuz 2016 tarihinde Wayback Machine sitesinde arşivlendi. alıntılar içermektedir.
- Pike, Rob (24 Nisan 2014). "Hello Gophers". 10 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Mart 2016.
- "Language Design FAQ". golang.org. 16 Ocak 2010. 2 Ocak 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Şubat 2010.
- "The Evolution of Go". 16 Ocak 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Eylül 2015.
- "Google's Go: A New Programming Language That's Python Meets C++". 7 Ocak 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 13 Kasım 2009.
- "Go FAQ: Is Google using Go internally?". 7 Ocak 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Mart 2013.
- Pike, Rob (28 Nisan 2010). "Another Go at Language Design". Stanford EE Computer Systems Colloquium. Stanford University. 12 Haziran 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Şubat 2017. Video available 25 Kasım 2016 tarihinde Wayback Machine sitesinde arşivlendi..
- "Frequently Asked Questions (FAQ) - The Go Programming Language". golang.org. 25 Şubat 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Şubat 2016.
- Andrew Binstock (18 Mayıs 2011). "Dr. Dobb's: Interview with Ken Thompson". 27 Temmuz 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Şubat 2014.
- Pike, Rob (2012). "Less is exponentially more". 21 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Şubat 2017.
- Robert Griesemer (2015). "The Evolution of Go". 5 Eylül 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Şubat 2017.
- "Release History". 17 Şubat 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Şubat 2017.
- Pike, Rob. "The Go Programming Language". YouTube. 11 Şubat 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Temmuz 2011.
- Rob Pike (8:53). The Go Programming Language (flv) (Tech talk). Google. Tarih değerini gözden geçirin:
|tarih=
(yardım) - Download and install packages and dependencies - go - The Go Programming Language 12 Mart 2017 tarihinde Wayback Machine sitesinde arşivlendi.; see godoc.org 7 Ekim 2020 tarihinde Wayback Machine sitesinde arşivlendi. for addresses and documentation of some packages
- "GoDoc". godoc.org. 3 Şubat 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Mart 2020.
Dış bağlantılar
- Go Resmi Sitesi9 Temmuz 2011 tarihinde Wayback Machine sitesinde arşivlendi. (İngilizce)
- Go Türkiye Topluluğu5 Haziran 2016 tarihinde Wayback Machine sitesinde arşivlendi. (Türkçe)
- Go Turu1 Temmuz 2016 tarihinde Wayback Machine sitesinde arşivlendi. (Türkçe)
- YouTube'da The Go Programming Language (İngilizce)
- Mailing list / Newsgroup17 Kasım 2009 tarihinde Wayback Machine sitesinde arşivlendi. (İngilizce)
- /r/golang - Reddit Sayfası14 Kasım 2009 tarihinde Wayback Machine sitesinde arşivlendi. (İngilizce)