Go programlama dili tek bir amaçla oluşturuldu; büyük bir ziyaretçi kitlesi için, büyük bir ekip içinde ölçeklenebilir web uygulamaları geliştirmek. Dilin mümkün olduğunda standartlaştırılmış olmasının nedeni budur, dolayısıyla gofmt
aracı ve sık kullanım yönergeleri geliştirici tabanında gruplaşmalarının bulunmaması içindir. Diğer programlama dillerinde 'parantezin nerede açılacağı' hususunda dini savaşlar verilmektedir.
public static void main() {
}
veya
public static void main()
{
}
veya python için, 4 boşluk, 6 boşluk, bir tab veya iki tab veya diğer kullanıcı ayarlarını mı kullanmalıyız?
Bu biraz sığ bir problem gibi görünse de, kod tabanı büyüdükçe ve daha fazla insan aynı projede çalışırken kodu 'güzel' tutmak zordur. Eğer python biliyorsanız zarif kodu nasıl yazacağınız hakkında bir dizi kural olan PEP8'in farkında olmalısınız. Robotların araba kullanabildiği bir dünyada yaşıyoruz, sadece kod yazmamalıyız, kodu zarif yazmamız gerekiyor.
Diğer dillerde iş kod yazmaya gelince bir çok değişken var, her programlama dili bu kullanım olarak iyidir fakat Go bu konuda biraz özel çünkü internet ile eşanlamlı bir şirkette tasarlandı. Tipik olarak kod yazım akışı Python'dan Java'ya, Java'dan C++'a optimizasyon amacıyla gider. Problem ise şu anda yaygın olan dillerin tamamı onlarca yıl önce 1GB depolama alanının şimdiye oranla çok yüksek bir fiyata sahip olduğu yıllardan geldi. Bilgisayarlar işlemcilerinin çekirdek sayılarını katlarken "eski diller" bunların üzerinde eşzamanlı olarak koşamıyor. Fakat bu diller kötü oldukları için değil, basitce bu diller gelişirken kullanım bu şekilde değildi.
Böylece, Google şu an kullandığı araçlarıyla karşılaştığı tüm sorunları hafifletmek için, şu an GO adını verdikleri sistem dilini yazdılar. Golang kullanmanın bir çok avantajı var fakat bazen paranın iki tarafı da dezavantajlı olabilir. Ancak bazı kısımlarda iyileştirmeler yapıldı, kod iyileştirme gibi. Dili kod biçimlendirme konusunda savaşlar olmayacak şekilde tasarladılar. Yazılan go kodu ('gofmt' kullandıklarını var sayarsak) dünyanın her yerinde tam olarak aynı şekilde görünüyor. Bu bir ekip içinde çalışmaya başlayıncaya kadar önemsiz görünebilir. Kod standart bir formata ve yazım kurallarına sahip değilse, şirketin otomatik kod incelemesi veya başka bir fantazi teknik kullanması durumunda sıçabilir, fakat Go'da bu olmaz.
Go concurrency (eşzamanlılık) göz önüne alınarak geliştirildi, lütfen şunu not edin; paralelizm != eşzamanlılık. Şurada bulabileceğiniz, konu konu hakkında Rob Pike tarafından yazılmış şahana bir yazı var; blog.golang.org, okuduğunuza değecek.
Go ile uygulamalar geliştirmeden önce, nasıl basit programlar yazabiliriz onu öğrenelim. Temeli atmadan koca bir bina inşa edemezsiniz. Bu yüzden, bu bölümde basit bir program yazarak söz dizimini öğreneceğiz.
Uluslararası geleneklere göre, bir programlama dilini öğrenmeye başlarken genelde "Merhaba dünya" ile kodlanmaya başlanır.
Hazır mısınız? Öyleyse başlayalım!
package main
import "fmt"
func main() {
fmt.Printf("Merhaba, dünya ya da 你好,世界 ya da καλημ ́ρα κóσμ ya da こんにちは世界\n")
}
Aşağıdaki cümleyi ekrana basacaktır.
Merhaba, dünya ya da 你好,世界 ya da καλημ ́ρα κóσμ ya da こんにちは世界
Bilmeniz gereken ilk şey Go programları package
(paket)'lerden meydana gelir.
package <paketİsmi>
(Bu örnekte package main
) satırı bize bu programın main
paketine ait olduğunu, ve main
kelimesi ise bu programın uzantısı .a
olan bir kütüphane olarak değil bir yazılım olarak derleneceğini söylüyor.
Her çalıştırılabilir program sadece bir main
paketi içerebilir, ve main
adında argüman almayan ve bir değer dönemeyen fonksiyona sahip olamalıdır.
Merhaba, dünya…
yazdırabilmek için, Printf
adında bir fonksiyon çağırdık. Bu fonksiyon fmt
paketinden geliyor, import "fmt"
satırı ile gerekli paketi çağırmış olduk.
Go'daki paket mantığı Python dili ile benzer, ve birkaç avantajı var: Modülerlik (prograını bir çok parçaya ayırabilirsiniz) ve tekrar kullanabilme (her modul başka ugulamalar için kullanılabilir). Paket konseptinden biraz bahsetmiş olduk, daha sonra kendi paketimizi oluşturacağız.
Beşinci satırda, func
kelimesi main
fonksiyonumuzu tanımladık. Fonksiyon gövde {}
parentezlerin arasında; C, C++ ve Java'da olduğu gibi.
Gördüğünüz gibi, herhangi bir arguman almıyor. Argüman alan, belirli bir değer dönen ve birden fazla dönüş değeri olan fanksiyonlar yazmasını öğrenceğiz.
Altıncı satırda, fmt
paketinden Printf
fonksiyonunu çağırdık. Çağırma işlemi <paketİsmi>.<fonskiyonismi>
şeklinde Pthyon'da olduğu gibi.
1.ünitede bahsettiğimiz gibi, peket ismi ve paket dosyalarını içerin dizinin ismi farklı olabilir. Burada <paket ismi>
package <paket ismin>
den geliyor, diznin isminden değil.
Yukarıdaki örneğin ASCII olmayan karakterler içerdiğini fark etmişsinizdir. Buradan da anlayacağınız üzeri Go UTF-8'i ön tanımlı olarak destekliyor. Herhangi bir UTF-8 karakterini programınızda kullabilirsiniz.
Go package
(Python'daki modüller gibi) mantığını kullanarak programları organize ediyor. main.main()
(bu fonksiyon main
paketinde olmalı) fonksiyonu programınızın başlangıç noktası. Go öntanımlı olarak UTF-8 destekliyor, zaten Go'nun oluşturanlardan biri UTF-8 yaratan kişi, bu yüzden Go ilk çıktığınadn beri çoklu dil desteğine sahip.
- İçerik
- Önceki bölüm: Temel go bilgisi
- Sonraki bölüm: Go Temelleri