Go (programlama dili)

Vikipedi, özgür ansiklopedi
Şuraya atla: kullan, ara
Go
Golang.png
Go'nun Amerikan yer sincabı maskotu.
Paradigması Derlenen, emirli, yapısal
İlk çıkışı 10 Kasım 2009 (7 yıl önce) (2009-11-10)
Tasarımcı Ken Thompson
Robert Griesemer, Rob Pike
Geliştirici Google Inc.
Kararlı sürüm

1.8

(16 Şubat 2017 (4 ay önce) (2017-02-16))
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

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.

Tarihçe[değiştir | kaynağı değiştir]

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 Şubat 2017'de Go 1.8 sürümü yayınlanmıştır.[11]

Dil tasarımı[değiştir | kaynağı değiştir]

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:

  • Değişken tanımındaki tür belirtimi isteğe bağlıdır. (int x = 0; yerine x := 0;).
  • Hızlı derleme süresi.[13]
  • Uzak paket yöneticisi (go get)[14] ve online paket dökümantasyonu.[15]
  • 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.

Sözdizimi[değiştir | kaynağı değiştir]

Go'nun sözdizimi, 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[değiştir | kaynağı değiştir]

Go ile Merhaba dünya programı

package main

import "fmt"

func main() {
    fmt.Println("Merhaba dünya!")
}

Kaynakça[değiştir | kaynağı değiştir]

Bu makale, Creative Commons Attribution 3.0 lisansına sahip resmi Go eğitselinden Let's Go alıntılar içermektedir.

  1. 1,0 1,1 Pike, Rob (2014-04-24). "Hello Gophers". 10 Ekim 2016 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20161010184756/https://talks.golang.org/2014/hellogophers.slide. Erişim tarihi: 2016-03-11. 
  2. ^ "Language Design FAQ". golang.org. 16 January 2010. 2 Ocak 2013 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20130102205822/http://golang.org/doc/go_faq.html. Erişim tarihi: 27 February 2010. 
  3. ^ "The Evolution of Go". 16 Ocak 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170116214316/https://talks.golang.org/2015/gophercon-goevolution.slide. Erişim tarihi: 2015-09-26. 
  4. ^ Google's Go: A New Programming Language That's Python Meets C++
  5. ^ "Go FAQ: Is Google using Go internally?". http://golang.org/doc/faq#Is_Google_using_go_internally. Erişim tarihi: 2013-03-09. 
  6. ^ Pike, Rob (28 April 2010). "Another Go at Language Design". Stanford EE Computer Systems Colloquium. Stanford University. 12 Haziran 2014 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20140612224454/http://www.stanford.edu:80/class/ee380/Abstracts/100428.html.  Video available.
  7. ^ "Frequently Asked Questions (FAQ) - The Go Programming Language". golang.org. 25 Şubat 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170225155234/https://golang.org/doc/faq. Erişim tarihi: 2016-02-26. 
  8. ^ Andrew Binstock (18 May 2011). "Dr. Dobb's: Interview with Ken Thompson". 27 Temmuz 2016 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20160727150831/http://www.drdobbs.com:80/open-source/interview-with-ken-thompson/229502480. Erişim tarihi: 2014-02-07. 
  9. ^ Pike, Rob (2012). "Less is exponentially more". 21 Mart 2016 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20160321021201/http://commandcenter.blogspot.mx/2012/06/less-is-exponentially-more.html. 
  10. ^ Robert Griesemer (2015). "The Evolution of Go". 5 Eylül 2015 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20150905160128/https://sourcegraph.com/blog/live/gophercon2015/123645585015. 
  11. ^ "Release History". 17 Şubat 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170217063007/https://golang.org/doc/devel/release.html. 
  12. ^ Pike, Rob. "The Go Programming Language". YouTube. 11 Şubat 2013 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20130211163704/http://www.youtube.com/watch?v=rKnDgT73v8s&feature=related. Erişim tarihi: 2011-07-01. 
  13. ^ Rob Pike (10 November 2009) (flv). The Go Programming Language (Tech talk). Google. Olayın gerçekleşme zamanı: 8:53. https://www.youtube.com/watch?v=rKnDgT73v8s#t=8m53. 
  14. ^ Download and install packages and dependencies - go - The Go Programming Language; see godoc.org for addresses and documentation of some packages
  15. ^ "GoDoc". godoc.org. 3 Şubat 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170203181150/https://godoc.org/. 

Dış bağlantılar[değiştir | kaynağı değiştir]