Evet Google sonunda bu işe de el attığını, uzun süredir üzerinde
çalıştığı programlama dili olan Google Go'nun çalışan bir sürümünü
kullanıcılarla paylaşarak resmi olarak duyurmuş oldu.
Google bu dil ile yazılmış programların daha hızlı derlendiğini,
daha hızlı çalıştığını, daha güvenli olduğunu iddia ediyor. Python gibi
dinamik bir programlama dili ile çalışmanın hızı ile, C++ gibi bir
dilin performans ve güvenilirliğini birleştiriyormuş (Vay be iddiaya
bak!). Go'nun göze çarpan diğer özellikleri ise şöyle:
- Açık kaynaklı olması.
- Garbage collection'a sahip olması. Yani kullanılan bellek alanlarını geri verme derdi yok (Java ve C#'ta olduğu gibi).
- Çok işlemcili sistemlere yönelik yazılım geliştirmeyi kolaylaştıracak yapılara sahip olması.
- C++ kadar yüksek performansa sahip olması.
- Basit olması.
Şu an için Windows üzerinde çalışan bir versiyonu olmayan ve daha
emekleme aşamasında olan Google Go'nun ne kadar yaygınlaşacağını zaman
gösterecek. Bu yazıda dil hakkında genel bilgi vereceğim. Detaylı bilgileri bu adresten öğrenebilirsiniz.
Dil daha çok C++ kullanıcılarını hedefliyor gibi. Ancak C++ ile
arasında hem yapı hem de sentaks olarak çok fark var. Bunlardan
bazıları şunlar:
- Go'da yapıcı ve yıkıcı metodlara sahip sınıflar yok. Sınıf metodları, sınıflar arasında kalıtım ve sanal fonksiyonlar yerine burada açıklanmış olan interface'ler getirilmiş. Bu interface'ler aynı zamanda C++'daki template özelliği yerine de kullanılıyor.
- Go'da işaretçiler var ancak işaretçilerle aritmetik işlem yapma imkanı yok.
- Go'da hazır string yapıları var ancak bir kere yaratıldıktan sonra bir daha değiştirilmeleri mümkün değil.
- Çok thread'li çalışma ve thread'ler arasındaki haberleşme doğrudan dil ile birlikte gelen yapılar ile gerçekleştirilebiliyor.
- Go
header dosyaları kullanmıyor. Her kaynak kod dosyası bir paketin
parçası olarak düşünülüyor ve paket içerisinde yaratılmış olan değişken
ve fonksiyonlar bu paketi import eden tüm dosyalar içerisinden
görülebiliyor. Bu biraz Java'ya benzeyen bir özellik aslında.
- Go'da türler arasında çeviri yapmak için casting yapmak şart, çeviri hiçbir zaman otomatik olarak yapılmıyor.
- Go'da ne fonksiyonları ne de operatörleri overload etmek mümkün değil.
Dilin neye benzediğini görmek açısından klasik bir "Merhaba Dünya" programının nasıl yazıldığına bakmak yeterli olur sanırım.
package main
import "fmt"
func main() {
fmt.Printf("Merhaba Dünya\n")
}
Buradan bakıldığında dil C++ ile Java karışımıymış gibi duruyor ancak verdiğim adresten detaylarına bakarsanız her ikisinden de çok farklı olduğunu görebilirsiniz.
Dil ile ilgili araştırma yaparken karşılaştığım ilginç bir bilgi de, Go adında bir dilin zaten daha önceden var olduğu. McCabe diye bir şahsiyet 2004 yılında kendi geliştirdiği Go! adındaki bu dil ile ilgili bilimsel bir makale, 2007 yılında da bir kitap yayınlamış. Kendisi şimdi de doğal olarak Google'ın geliştirdiği dilin adını değiştirmesi gerektiğini savunuyor. Konu ile ilgili haberi buradan okuyabilirsiniz.