O Zaman , Let’s Go! Go Diline Genel Bir Bakış

Şeniz Akbulut
6 min readMay 28, 2022

--

Go, diğer adıyla Golang giderek ünlenen ve çoğu programcının bir an önce öğrenmesi gereken, Google tarafından desteklenen değerli ve açık kaynak kodlu bir programlama dilidir.

Go, çok çekirdekli ağ bağlantılı makineler ve büyük kod tabanları çağında programlama üretkenliğini artırmak için 2007'de Google’da oluşturuldu. Bugün, 2009'da kamuya duyurulmasından bu yana 10 yılı aşkın bir süre sonra, Go’nun Google içindeki kullanımı muazzam bir şekilde arttı.

Go nun ortaya çıkışı hakkında mimarlarımızdan Robe Pike’ın Go diline ait web sayfasındaki açıklaması şu şekildedir:

Go, Eylül 2007'de Robert Griesemer, Ken Thompson ve benim, Google’daki meslektaşlarımızın ve bizim günlük çalışmalarımızda karşılaştığımız mühendislik zorluklarını ele almak için yeni bir dili tartışmaya başladığımız zaman başladı.

Kasım 2009'da Go’yu ilk kez halka sunduğumuzda, dilin geniş çapta benimsenip benimsenmeyeceğini veya gelecekteki dilleri etkileyip etkilemeyeceğini bilmiyorduk. 2020'den geriye bakıldığında Go, her iki şekilde de başarılı oldu: Google’ın içinde ve dışında yaygın olarak kullanılıyor ve ağ eşzamanlılığı ve yazılım mühendisliğine yönelik yaklaşımları, diğer diller ve araçları üzerinde gözle görülür bir etki yarattı.

Go, beklediğimizden çok daha geniş bir erişime sahip oldu. Sektördeki büyümesi olağanüstü oldu ve Google’da birçok projeye güç verdi.

— Rob Pike

Neden Go?

Google’ın programalama dili olması nedeniyle Google Go olarak adlandırılsa da dilin resmi adı Go programlama dilidir. Geliştiriciler arasında karışıklığa neden olmaması için ayrıca “Golang” olarak Go programlama dilinin kısaltılmasıyla karşılaşabilirsiniz. Google’ın Go programalama dilini geliştirmesinin ardında yatan birçok önemli neden var. En önemli nedeniyse performansı yüksek ve modern bir programlama dili ortaya çıkarmaktır.

Go Nasıl Doğdu ?

Go programlama dili geliştirilmeye başlandığı tarihten itibaren uzun bir test sürecine tabii tutuldu. Onlarca Google mühendisinin dahil olduğu projenin ilk meyveleri 2012 yılında Go’nun kararlı sürümü olarak yayınlanan Go 1.0 ile birlikte toplanmaya başlandı. Sunucu tarafındaki avantajları ve kolayca öğrenilebiliyor olması, Go’nun kısa sürede büyük bir kitle tarafından kabul görmesine yardımcı oldu. Adobe, BBC, IBM, Intel ve Medium gibi birçok tanınmış şirket, Go programlama dilini kullanmaya başlayarak Go’nun avantajlarından faydalandı. Peki, Google’ın programlama dili Go’yu diğer programlama dillerinden farklı kılan ve dev firmaların açık kaynaklı ve ücretsiz bu programlama diline yönelmesine neden olan şey neydi?

Donanım dünyasında son 20 yılda dev atılımlar görmüş olsak da, son 10 yılın önceki 20 yıla oranla daha durağan geçtiğini kabul edebiliriz. İlk Pentium 4 işlemci 3.0 GHz hızıyla 2004 yılında Intel tarafından yayınlanmıştı. Bugün kullandığımız işlemci mimarilerinde hala 3.0 GHz baraj hızıdır ve çoğu zaman bu sınırı aşmak adına daha çok çekirdekli işlemcilere ihtiyaç duyulur. Sunucu tarafında performansı arttırmak adına bu aşamada karşımıza iki farklı sorun çıkıyor; yazılım ve donanımsal sorunlar. Google’ın Go programlama dilinin yardım eliyle bunları iplik söküğü gibi kolayca halledebilme avantajına sahip oluyoruz.

Eğer bir sunucunun veya sistemin işlemci performansını arttırmak zorunda kalıyorsanız yapabileceğiniz yalnızca birkaç şey vardır. En önemli yükseltmelerden biri işlemci için daha çok çekirdekli modelleri tercih etmektir. Hyper-thread teknolojisinin yanı sıra işlemciler için cache (önbellek) uygulaması yaparak performansı maksimuma çıkarabiliriz. Donanımsal ve yazılımsal açıdan bu sorunlar çoğu kez kendi içinde limitlere sahiptir. Sistemin işlemcisinde daha çok çekirdek kullanmak demek, daha fazla maliyet ve fazladan elinizi cebinize atmak demek. Cache’den elde edebileceğiniz verim ise yalnızca kullandığınız Cache’in boyutuyla orantılı olacaktır. Cache’in boyutu arttıkça performansın düşüşü kaçınılmazdır.

Tüm bunların dışında, Go’yu diğer programlama dillerinden ayıran önemli farklılık var. Bugün modern programlama dili olarak kabul ettiğimiz dillerin (Java ve Python gibi) genellikle 90’lı yıllarda geliştirildiğini tek dişli işlemeler yaptıklarını görüyoruz. Sonradan bu dillere çoklu işleme desteği (multi-threading) eklenmiştir fakat bu destek dillere sonradan kazandırılmıştır. Go dili ise 2012 yılında sahneye çıkmış, çağın gerekliliklerine uygun ve kendiliğinden Multi-threading olarak tasarlanmış bir programlama dilidir.

Google’ın programlama dili Go’yu diğer dillerden farklı kılan tüm bu donanım ve yazılım sorunlarına kendi bünyesinde çözümler üretmeyi başarması, güvenli ve performansı yüksek sistemler oluşturmaya yardımcı olmasıdır. Bunu ne şekilde yaptığı ve Go programlama dilinin özellikleri hakkında dahasına ihtiyacınız varsa bir alt başlığımızdan devam edebilirsiniz.

Go’yu Farklı Kılan Değerler Nelerdir ?

C ve C++ gibi programlama dillerinin Java ve Python gibi programlama dillerine oranla daha yüksek performanslı olmasının nedeni, bu dillerin derlenmesi sırasında yorumlayıcıların kullanılmayışından kaynaklanır. Örneği Java dilinde yazılan bir byte kodu, önce sanal makineler yardımıyla Binary koduna dönüştürülür ve ardından işlemciye ulaştırılır. Go, tıpkı C ve C++ gibi arada bir yorumlayıcı kullanılmadan doğrudan derlenir ve donanımla iletişim kurar. Fakat Go C ve C++ arasında önemli bir fark vardır. Bu dillerde yazılan kodlar doğrudan insanların okuyabileceği kodlar olamazken, Go’da yazılan kodlar insanların okuyabileceği şekilde dizayn edilmiştir. Bu sayede Go, kendisiyle çalışmayı daha kolay ve verimli kılmaktadır.

Go programlama dilindeki esas, bir dilin gereksiz tüm bütünlerini ayırıp onu sadece en yararlı özelliklerle donatmaktır. Google’ın ve dolayısıyla Go programlama dilinin bu felsefesi, Go’yu öğrenmeyi katbekat kolaylaştırır. Google, Go’yu yalnızca dışarıya dönük ihtiyaçlar için hazırlamamıştır. Go’yu başta kendi sunucuları, sonrasında ise tüm internet dünyası için düşünerek geliştirmiştir. Google’da bir kodun üzerinde onlarca mühendisin çalışabilmesi için kodların anlaşılabilir olması ve yazılımcılarının yazdığı kodlarının birbiriyle uyum içinde çalışması gerekir. Go’nun basit ve kurallı bir Syntax’e sahip olmasının nedeni budur. Bir programlama dilinde istediğiniz bir şeyi meydana getirmenin birden fazla yolu olabilir. Ancak söz konusu olan Go ise sadece tek bir doğru vardır ve diğer istisnalar kabul edilemez. Böylece kod dosyası üzerinde değil onlarca, yüzlerce yazılımcı çalışsa bile birbirlerinin hazırladıkları kodlar daima uyum içinde çalışacaktır.

Go programlama dilinin diğer diller karşısındaki farklılıkları bu kadarla sınırlı değil. Go, diğerlerinin aksine “Classes” adını verdiğimiz Sınıflar yapısını kullanmıyor ve bunun yerine her şey paketlerin içine yerleştiriliyor. Sınıflar yerine Google Go’da “yapılar” ön plana çıkıyor. Modern programlama dillerinden alışkın olduğumuz inheritance desteği, constructors, açıklama metinleri (annotations) de Go’nun yapısında yer almayan diğer tuhaflıklardan ibaret.

Google Go programlama diliyle tek yapmanız gereken ihtiyacınız olanı düşlemek ve birkaç satır kod yazarak modern ve hızlı kabul edilen programlama dillerinden daha başarılı işler çıkartmak. Ardında Google’ın yer aldığı Go’nun yıldızının her geçen yıl parladığı kesin. Shopify’ın kurucu başkanı Tobias Lütke’un dediği gibi “Go, geleceğin sunucu dili olacaktır.” İddiasının gerçekçiliğiniyse ancak gelecekte görebileceğiz.

Go Dili ile Neler Yapılabilir

  • Go dilinin birincil amacı sistem programlamalarının yapılmasıdır. Aktif biçimde sunucu tarafında kullanılması için geliştirilen Go’yu, sunucu ve alt sistemler geliştirmek için harika bir dil olarak görebiliriz.
  • Go web için hem hızlı geliştirme hem de yüksek performansıyla kaliteli projeler üretmenizi sağlayabilir.
  • Henüz kısıtlı örneklerle karşımıza çıkıyor olmasına rağmen Google’ın, Go’yu mobil işletim sistemi Android’de kullanma planı vardır. Gelecekte Go’yu bilen geliştiriciler sadece sunucu ve sistem tarafındaki işleri halletmekle kalmayarak, kendi Android mobil uygulamalarını da Go ile verimli biçimde geliştirebilecekler.
  • Go gömülü sistemlerde kullanılan bir programlama dili olarak da karşımıza çıkabilir. Geliştirici topluluğunun büyük bir bölümü buna inanıyor olsa bile, gömülü sistemlerde hali hazırda süregelen C ve C++ haçlı savaşları nedeniyle bunu şimdilik kestirmek tam olarak mümkün olmayabilir.

Go ile neler yapabileceğiniz kadar neler yapamayacağınızı bilmek de önemli. Go’yu bir betik dili olarak kafanızda resmetmelisiniz. Go’nun geliştirilmesinin amacı her ne kadar daha modern olsa da Java veya Python’u tahtından indirip, kendini tahta çıkarmak değildir. Go daha ziyade C ve Python gibi dillerle birlikte çalışarak başarılı, güçlü, modern ve verimli sistemler oluşturmak amacıyla geliştirilmiştir.

Her programlama dilinde olduğu gibi başlangıç ateşini yakmadan bu yazının bitmesini beklemiyordunuz değil mi :)

O zaman Let’s GO!

package main
import "fmt"
func main() {
fmt.Println("Merhaba Dünya!")
}

--

--

Şeniz Akbulut

Şeniz fullmoonborn of the House Akbulut, first of her name.The Princess of Her Father, Diva Queen of her mother , breaker of hearth , mother of Fadıls.