Go (ba’zan Golang deb ham ataladi) — Google kompaniyasida Rob Payk, Ken Tompson va Robert Grizemer tomonidan ishlab chiqilgan, 2009-yilda ochiq manba sifatida taqdim etilgan statik tiplangan dasturlash tili. Til Google’ning ichki infratuzilmasidagi katta hajmli C++ loyihalarini kompilyatsiya qilishning sekinligi va murakkab bog’liqliklar bilan bog’liq muammolarga javob sifatida yaratilgan.
Yaratilish sababi
2000-yillar oxirida Google muhandislari ulkan C++ kod bazasini kompilyatsiya qilish uchun daqiqalab kutishga majbur bo’lishgan. Go loyihasi ataylab soddalashtirilgan sintaksis, tez kompilyatsiya va ozgina kalit so’zlar (atigi 25 ta) bilan yaratildi, shu bilan birga zamonaviy tizimlar uchun zarur bo’lgan bir vaqtda bajarilish (concurrency) qo’llab-quvvatlanadi.
Goroutine va concurrency modeli
Go’ning eng mashhur xususiyati — go kalit so’zi orqali ishga tushiriladigan goroutine’lar bo’lib, ular an’anaviy operatsion tizim iplariga (thread) qaraganda ancha yengil resurs sarflaydi. Goroutine’lar orasidagi ma’lumot almashinuvi channel deb ataladigan maxsus tuzilma orqali amalga oshiriladi, bu esa “xotirani ulashish orqali aloqa qilmang, aloqa orqali xotirani ulashing” tamoyiliga asoslanadi.
Kompilyatsiya tezligi va soddalik
Go bitta ijro etiladigan binar faylga kompilyatsiya qilinadi, unda barcha kerakli bog’liqliklar mavjud bo’ladi — bu joylashtirish (deployment) jarayonini sezilarli darajada osonlashtiradi. Til qasddan kichik tutilgan: unda meros olish (inheritance), generics uzoq yillar mavjud emas edi (2022-yilda Go 1.18 bilan qo’shildi) va istisnolar o’rniga xatolarni qiymat sifatida qaytarish uslubi qo’llaniladi.
Qo’llanilish sohalari
Docker va Kubernetes — zamonaviy konteynerlashtirish va orkestratsiya dunyosining ikkita asosiy vositasi — aynan Go tilida yozilgan. Bu holat tilni bulutli infratuzilma, mikroservislar va tarmoq vositalarini yaratishda amaldagi standartga aylantirgan.
Cheklovlari
Generics’ning kech qo’shilishi yillar davomida ko’plab dasturchilarni kod takrorlashga yoki interface{} orqali murakkab yechimlarga murojaat qilishga majbur qilgan. Bundan tashqari, Go’ning xato qaytarish uslubi (if err != nil konstruksiyasining tez-tez takrorlanishi) ba’zi dasturchilar tomonidan ortiqcha so’zlashuvchan deb tanqid qilinadi.
Bog’liq tushunchalar
Goroutine, Docker, Kubernetes, Concurrency, Kompilyator, Google, Mikroservis