THT DUYURU

Golang Google’a ait insan diline en yakın olan dillerdendir, projelerin ve dökümanların paylaşım alanıdır

chat
Seçenekler

GOLang Nedir, Nerede Kullanılır ?

kondanta - ait Kullanıcı Resmi (Avatar)
Geliştirici
Üyelik tarihi:
07/2017
Nereden:
CNCF
Mesajlar:
912
Konular:
36
Teşekkür (Etti):
33
Teşekkür (Aldı):
264
Ticaret:
(0) %
14-07-2018 12:22
#1
Post
GOLang Nedir, Nerede Kullanılır ?

Eminim ki hepiniz bir şekilde bu dili duymuşsunuzdur. GoLang ( konunun geri kalanında go diye belirteceğim ) 2007 yılında Robert Griesemer, Rob Pike, and Ken Thompson liderliğinde Google tarafından gelişitirilmiş çok amaçlı bir yazılım dilidir.

Burada vurgulamak istediğim şey, dilin geliştirilme tarihi. 2007. Yani multi-core architecturelara çoktan geçtiğimiz dönemler. Goyu Go yapan şey, goroutine denen özel bir tür multi threading aracı. Neyse oraya da geleceğiz.

Öncelikle obligatory hello world'ümüzü paylaşalım:
Kod:
package main
import (
    "fmt"
)
func main() {
    fmt.Println("Hello World!")
}
Şimdi biraz daha detaya girelim.

Şahsi deneyimim olarak, Goyu REST servisleri yazarken kullanıyorum, ki şuan aktif olarak yürttüğüm bir pojenin tüm backendi denebilir. Neden Goyu tercih ettiğimi özetlemem gerekirse, benchmarklarda en optimal sonucu veren kütüphaneler Goya ait. [ Gerçi şuan bakıldığında C h20 ile yok ediyor ortalığı ama ] Saniyede 50.000 isteğe cevap verebilme kapasitesinden bahsediyoruz, overheade sebep olmadan.

Bunun haricinde, Gonun syntaxı C ile hemen hemen aynı, ki Rust gibi C uyumluluğuna da sahip. Hatta go c diye bir komutla c de yazılmış api callarına gidip gelmenizi kolaylaştırmış yazarlar. Tabi ki C dediğimizde, önümüze pointerlar geliyor. Goda da fazlaca kullanıyoruz bu pointerları. Zaten performansının büyük bir kısmını buradan alıyor. Örneğin
Kod:
myVar := *[]collector.BaseModel
gibi. Bu kod, myVar değişkenini içerisinde collector paketinde bulunan basemodel objelerini tutan bir arraye çeviriyor. Ve evet fark edebileceğiniz üzere, syntaxı ters.
Kod:
// Alışık olduğumuz
BaseModel bm [] ;
// Go versiyonu
bm := []BaseModel
Son olarakta channel ve goroutineler ile ilgili bir örnek vereyim:
Kod:
package main
import "fmt"

func f(from string) {
    for i := 0; i < 3; i++ {
        fmt.Println(from, ":", i)
    }
}

func main() {
    f("direct")
    go f("goroutine")
}
Output, Direct 1-2-3 diye genişlerken, go ile yazılmış fonkisyonda, ouput goroutine 1-2-3 diye printlenecek buraya kadar tamamız. Ama, f(direct)i gorouitne den sonra çağırmış olsaydık
goroutine1, direct1-2 gouroutine2 direct3 gibi bir output alacaktık.
Go rutini verilen fonskiyonu alıp izole eder, daha sonra kendisine ait bir threadde çalıştırır. Threat içerisinde sonucu aldıkta channel yardımıyla tekrar çağrıldığı yere döner.


Özetle,  Tobias Lütke'nin de dediği gibi, Go geleceğin server dilidir. Nerde ne zaman kullanayım sorusu ise, eğer hedefiniz aynı anda birden fazla isteği, birden fazla kullanıcı için handle etmekse, performansı önemsiyorsanız (aksini iddia ediyorsanız bu işi zaten bırakın, performansı önemsemeyen şirket/geliştirici yanlış alandadır) ve derlenen bir dil ile uğraşmak istiyorsanız Go sizlik. İstediğiniz gibi kullanabilirsiniz.


Tabii ki performans açısından en iyi demiyorum. Şu aralar benchmark bazında C herkese toz yutturuyor yukarıda da belirttiğim ve beklenen üzere. Ama Rust'ında ondan pek aşağı kalır yanı yok. Burada yapacağınız trade off, sizin için neyin daha önemli olduğudur.


Not: Konuya resim, copy paste metinler & kodlar eklemiyorum, ilginizi çektiyse, dil, küçük bir google araştırması yapın. Amacım sadece dili tanıtmak.
---------------------

DevOps Engineer
Konu KeyLo99 tarafından (14-07-2018 15:23 Saat 15:23 ) değiştirilmiştir.
BufGix, siberdrone15, 'Insider, k3~, CH4M3 Teşekkür etti.
theokeleS - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
05/2018
Mesajlar:
1.358
Konular:
31
Teşekkür (Etti):
68
Teşekkür (Aldı):
354
Ticaret:
(0) %
14-07-2018 13:59
#2
Elinize Sağlık.
TeamRound - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2018
Nereden:
Uzay
Mesajlar:
1.569
Konular:
104
Teşekkür (Etti):
504
Teşekkür (Aldı):
323
Ticaret:
(0) %
14-07-2018 14:02
#3
Elinize SAĞLIK
---------------------
Akıl ve mantığın halledemeyeceği mesele yoktur.

Yanlış bildiğin yolda; hеrkеslе yürüyеcеğinе, doğru bildiğin yolda; tеk başına yürü…

TeamRound
MrTarget - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2017
Mesajlar:
211
Konular:
28
Teşekkür (Etti):
47
Teşekkür (Aldı):
19
Ticaret:
(0) %
14-07-2018 14:14
#4

Bilmediğimiz bir konuyu daha öğrenmiş olduk
Eline sağlık
k3~
k3~ - ait Kullanıcı Resmi (Avatar)
Özel Üye
Üyelik tarihi:
10/2015
Mesajlar:
2.877
Konular:
202
Teşekkür (Etti):
1743
Teşekkür (Aldı):
3401
Ticaret:
(0) %
14-07-2018 15:22
#5
Elinize sağlık

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler