İçeriğe atla

Go (programlama dili)

Go
ParadigmasıDerlenen, emirli, yapısal
İlk çıkışı10 Kasım 2009 (14 yıl önce) (2009-11-10)
TasarımcıKen Thompson
Robert Griesemer, Rob Pike
GeliştiriciGoogle Inc.
Kararlı sürüm1.23[1] (6 Şubat 2024)
EtkilendikleriAlef, APL,[2] BCPL,[2] C, CSP, Limbo, Modula, Newsqueak, Oberon, occam, Pascal,[3] Python, Smalltalk[4]
PlatformuLinux, OS X, Windows, bazı BSD ve Unix versiyonları
İşletim sistemiÇapraz platform
LisansBSD lisansı stili
Olağan dosya uzantıları.go
Web sitesigo.dev
Go'nun önceki, Amerikan yer sincabı maskotlu logosu.

Go, statik tipli, derlenen, yüksek seviyeli bir programlama dilidir. Robert Griesemer, Rob Pike ve Ken Thompson tarafından Google'da 2007 yılından itibaren geliştirilmeye başlanmıştır.[5] Sözdizimi C'ye benzerdir fakat hafıza erişimi güvenlidir, kullanılmayan hafıza kaynakları sisteme otomatik olarak geri verilir, interface veri tipleri sayesinde yapısal (özellik bazlı) tip sistemini (structural type system) destekler ve eşzamanlı (concurrent) çalışan işlemlerin (process) ortak hafıza kullanabilmelerinin yanında birbiriyle iletişim kurmalarını (communicating sequential processes) sağlayan ögelere sahiptir. Eski alan adı golang.org olduğundan sık sık golang ismiyle anılır ama asıl adı Go'dur.[6]

Go derleyicisi "gc" açık kaynaktır ve 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

Dil, Kasım 2009'da duyurulmuştur. Google'ın bazı ürünlerinin sistemlerinde olduğu gibi diğer firmalar tarafından da kullanılmaktadır.[7]

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:[8]

  • 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ı[9]
  • 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.[10][11][12]

Go 1.0, Mart 2012'de yayınlanmıştır.[13]

Go'nun şu anki güncel sürümü 13 Ağustos 2024'te yayınlanan Go 1.23'tür.[14]

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:[15]
  • 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.[16]
  • Uzak paket yöneticisi (go get)[17] ve online paket dökümantasyonu.[18]
  • 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ö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.

  1. ^ "Release History - The Go Programming Language". go.dev. 22 Kasım 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Eylül 2024. 
  2. ^ a b Pike, Rob (24 Nisan 2014). "Hello Gophers". 10 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Mart 2016. 
  3. ^ "Language Design FAQ". golang.org. 16 Ocak 2010. 2 Ocak 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Şubat 2010. 
  4. ^ "The Evolution of Go". 16 Ocak 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Eylül 2015. 
  5. ^ "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. 
  6. ^ "Frequently Asked Questions (FAQ)". 22 Kasım 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Kasım 2022. 
  7. ^ "Go FAQ: Is Google using Go internally?". 7 Ocak 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Mart 2013. 
  8. ^ 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..
  9. ^ "Frequently Asked Questions (FAQ) - The Go Programming Language". golang.org. 25 Şubat 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Şubat 2016. 
  10. ^ 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. 
  11. ^ Pike, Rob (2012). "Less is exponentially more". 21 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Şubat 2017. 
  12. ^ Robert Griesemer (2015). "The Evolution of Go". 5 Eylül 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Şubat 2017. 
  13. ^ "Release History". 17 Şubat 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Şubat 2017. 
  14. ^ "Go 1.23 is released - The Go Programming Language". go.dev (İngilizce). 15 Eylül 2024 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Eylül 2024. 
  15. ^ Pike, Rob. "The Go Programming Language". YouTube. 11 Şubat 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Temmuz 2011. 
  16. ^ Rob Pike (10 Kasım 2009). The Go Programming Language (flv) (Tech talk). Google. 7 Mart 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Şubat 2017. 8:53 
  17. ^ 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
  18. ^ "GoDoc". godoc.org. 3 Şubat 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Mart 2020. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">C++</span> bir programlama dili

C++, Bjarne Stroustrup tarafından 1979 yılında Bell Laboratuvarları'nda geliştirilmeye başlanmış, C'yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir.

Kenneth Lane Thompson Amerikalı bir bilgisayar bilimcisi.Thompson, kariyerinin büyük bir bölümünde orijinal Unix işletim sistemini tasarlayıp uyguladığı Bell Labs'ta çalıştı. Ayrıca C programlama dilinin doğrudan selefi olan B programlama dilini de icat etti. Bununla beraber Plan 9 işletim sisteminin yaratıcılarından ve ilk geliştiricilerinden biriydi. Thompson, 2006'dan beri Go programlama dilini birlikte icat ettiği Google'da çalışmaktadır.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

<span class="mw-page-title-main">D (programlama dili)</span> çoklu paradigma programlama dili

D programlama dili, C++ dilinden daha yüksek seviyede ve hedef alınan işletim sistemiyle donanımlara göre uygulama yazılmasını kolaylaştıran bir "sistem ve uygulama" dilidir.

<span class="mw-page-title-main">Dennis Ritchie</span> Amerikalı bilgisayar bilimci

Dennis MacAlistair Ritchie, uzun süre birlikte çalıştığı arkadaşı Ken Thompson ile birlikte C programlama dilini ve Unix işletim sistemini yazan saygın Amerikalı bilgisayar bilimcisi. 1983'te Turing Ödülü'nü, 1999'de Ulusal Teknoloji Madalyası ödülünü aldı. 12 Ekim 2011'de ölmüştür.

<span class="mw-page-title-main">Brian Kernighan</span>

Brian Wilson Kernighan, Kanadalı bilgisayar bilimcisidir.

Ruby, nesneye yönelik, dinamik, reflektif ve esnek bir programlama dilidir. Ruby dili, Yukihiro Matsumoto tarafından Japonya'da tasarlanmaya ve geliştirilmeye başlanmıştır.

Google Genel DNS 3 Aralık 2009'da Google tarafından hizmete sokulmuş ücretsiz bir DNS hizmetidir. Google'ın daha hızlı web projesi kapsamında planlanmıştır.

Swift, Apple tarafından iOS ve macOS platformlarına iOS ve Mac uygulamaları geliştirmek için oluşturulan, derlenerek çalışan güçlü ve kullanımı kolay, nesne yönelimli bir programlama dili.

<span class="mw-page-title-main">Rust (programlama dili)</span> sistem programlama dili

Rust; açık kaynak kodlu, çoklu paradigmalı, ilk olarak Mozilla tarafından dizayn edilen ve Rust Foundation tarafından geliştirilmekte olan; performansa, güvenliğe ve eş zamanlı işlem yapabilmeye odaklanmış bir sistem programlama dilidir. Rust, söz dizimi olarak C++ diline benzemektedir. Rust, "güvenli, pratik ve hızlı" bir dil ortaya koymak amacı ile tasarlanmıştır.

Samoaca, çoğunlukla Samoa Adaları'nda konuşulan Malaya-Polinezya dillerine ait bir dildir.

Kotlin, Java sanal makinesi (JVM) üzerinde çalışan ayrıca JavaScript kaynak koduna veya LLVM ile makine koduna derlenebilen, statik tipli bir programlama dilidir. İlk geliştirme Sankt-Peterburg, Rusya merkezli JetBrains programcıları tarafından yapılmıştır. İsmi Kotlin Adası'ndan gelmektedir. Java ile uyumlu sözdizimi olmasa da, Kotlin Java kodu ile birlikte çalışmak üzere tasarlanmıştır. Kotlin, Apple'ın Swift diline benzemektedir.

<span class="mw-page-title-main">Arjantin'in En İyi Uluslararası Film Akademi Ödülü başvuruları</span> Vikimedya liste maddesi

Arjantin, 1961'den beri Yabancı Dilde En İyi Film Akademi Ödülü dalında Akademi Ödülleri'ne başvurmaktadır. Ödül, Amerika Birleşik Devletleri Sinema Sanatları ve Bilimleri Akademisi tarafından İngilizce diyalogları olmayan ve ABD dışındaki ülkelerde üretilen uzun metrajlı filmlere her yıl verilmektedir. Ödül, 1956'daki Akademi Ödülleri'ne kadar yoktu ve İngilizce olmayan filmler için oluşturuldu ve her yıl verilmeye başlandı.

Şili, ilk kez 1990 yılında Yabancı Dilde En İyi Film Akademi Ödülü dalında Akademi Ödülleri'ne başvurmuştur. Ödül, Amerika Birleşik Devletleri Sinema Sanatları ve Bilimleri Akademisi tarafından İngilizce diyalogları olmayan ve ABD dışındaki ülkelerde üretilen uzun metrajlı filmlere her yıl verilmektedir. Ödül, 1956'daki Akademi Ödülleri'ne kadar yoktu. İngilizce olmayan filmler için oluşturuldu ve her yıl verilmeye başlandı.

<span class="mw-page-title-main">APL (programlama dili)</span>

APL 1960'larda Kenneth E. Iverson tarafından geliştirilmiş bir programlama dilidir. Adını A Programming Language adlı kitaptan almıştır. Çok boyutlu dizilerin ana ekseni oluşturduğu dilde çoğu işlev ve işleç belirli simgelerle tanımlanmaktadır. Hesap çizelgeleri ve işlevsel programlamayı etkilemiştir.

<span class="mw-page-title-main">TensorFlow</span>

TensorFlow, makine öğrenimi için ücretsiz ve açık kaynaklı bir yazılım kütüphanesidir. Bir dizi görevde kullanılabilir, ancak derin sinir ağlarının eğitimi ve çıkarımına özel olarak odaklanmaktadır.

James E. Rumbaugh, Nesne Modelleme Tekniği ve Birleşik Modelleme Dilini (UML) oluşturmadaki çalışmaları ile tanınan Amerikalı bir bilgisayar bilimcisi ve nesne yönelimli metodologdur.

BCPL, prosedürel bir programlama dilidir.

<span class="mw-page-title-main">Zig (programlama dili)</span>

Zig, Andrew Kelley tarafından tasarlanmış, imperatif, genel amaçlı, statik türlü, derlenen bir sistem programlama dilidir. C programlama dilinin ardılı olma amacını taşır ve bunu yaparken daha basit ve daha fonksiyonel olmayı hedefler.