Go dasturlash tili
go-lang.uz — Go dasturlash tilini o‘zbek tilida o‘rganish uchun qo‘llanma.
Go nima?
Go — statik turli va kompilyatsiya bo'ladigan dasturlash tili. Goda backend tizimlar, terminal dasturlari, tarmoq uchun dasturlar yoki ma’lumotlarni qayta ishlaydigan dasturlar yozish mumkin.
Go kompilyatori yozilgan kodni operatsion tizim tushunadigan mashina kodiga aylantiradi. Natijada tayyor bajariladigan dastur hosil bo‘ladi.
Go dasturi ichida faqat biz yozgan kod emas, balki Go’ning ichki yordamchi qismi ham bo‘ladi. Bu qism runtime deb ataladi.
runtime dastur ishlayotgan vaqtda xotirani avtomatik tozalash, goroutinelarni boshqarish va stek bilan ishlash kabi
muhim vazifalarni bajaradi.
Go tilining asosiy xususiyatlari:
- sodda sintaksis;
- statik turli va kompilyatsiya vaqtida tekshiruv;
- xotirani avtomatik boshqarish (
garbage collection); goroutinevachannelorqaliconcurrentdasturlar yozish imkoniyati;- tarmoq, HTTP, JSON va boshqa kundalik vazifalar uchun boy standart kutubxonalar;
- formatlash, testlash, modul boshqaruvi va kod tahlili uchun standart vositalar.
Go tarixi
Go 2007-yilda Googleda boshlangan. Robert Griesemer, Rob Pike va Ken Thompson katta dasturiy loyihalarda uchraydigan muammolarni kamaytirish uchun yangi dasturlash tili ustida ishlay boshlagan.
Go 2009-yil noyabr oyida ochiq kodli loyiha sifatida ommaga taqdim etildi. Go 1 versiyasi esa 2012-yil mart oyida chiqarilgan.
Go nima sababdan ishlab chiqilgan?
2000-yillarning oxiriga kelib Googledagi dasturlar va ularning kod bazasi juda kattalashgan edi. Ayrim loyihalarni kompilyatsiya qilish ko‘p vaqt olar, bitta dastur ustida esa yuzlab dasturchilar ishlardi. C++, Java va Python kabi tillar foydali bo‘lsada, katta jamoa va katta server tizimlarida ish jarayoni murakkablashib borardi.
Shu paytda kompyuterlarda ko‘p yadroli protsessorlar keng qo'llanila boshlangan. Internet xizmatlari ham ko‘payib, bir
vaqtning o‘zida ko‘plab so‘rovlarni boshqaradigan dasturlarga talab oshdi. Mavjud loyihalarda concurrency bilan ishlash
ko‘pincha ko‘p va murakkab kod talab qilardi.
Go quyidagi maqsadlarni ko'zlab ishlab chiqilgan:
- katta loyihalarni tezroq kompilyatsiya qilish;
- katta jamoada o‘qilishi oson kod yozish;
- tarmoq va server dasturlarini yozishni soddalashtirish;
- bir-biridan mustaqil vazifalarni
concurrenttarzda boshqarish; - tayyor dasturni turli muhitlarda ishlashini ta'minlash.
Go barcha dasturlash tillarining o‘rnini bosish uchun ishlab chiqilmagan. Uning asosiy yo‘nalishi katta dasturlar, serverlar va tarmoq xizmatlarini sodda usulda ishlab chiqish edi.
Info
Concurrency va parallelism bir xil tushuncha emas. Concurrency bir nechta vazifani bir vaqt oralig‘ida boshqarish usuli.
Parallelism esa vazifalarning ayni paytda bir nechta CPU yadrosida bajarilishi. Goroutine concurrent kod yozishni
yengillashtiradi, lekin har qanday dasturni avtomatik ravishda tezlashtirmaydi.
Go yoki Golang?
Tilning rasmiy nomi — Go. Golang boshqa dasturlash tili emas. Bu nom avvalgi rasmiy sayt manzili golang.org
bo‘lgani va qisqa Go so‘zini internetdan qidirish qiyin bo‘lgani sababli ommalashgan.
Go qanday loyihalar uchun ishlatiladi?
Go ko‘proq server va tarmoq bilan bog‘liq loyihalarda ishlatiladi. Masalan:
- veb-saytlarning backend qismi va API serverlar;
- mikroservislar;
- bulutli infratuzilmani boshqarish vositalari;
- konteyner va orkestratsiya tizimlari;
- monitoring va kuzatuv xizmatlari;
- proksi, DNS va boshqa tarmoq dasturlari;
- terminalda ishlaydigan dasturlar;
- navbatlar va hodisalarni qayta ishlaydigan tizimlar;
- katta hajmdagi ma’lumotlarni qayta ishlaydigan dasturlar.
Go kichik dasturlar va avtomatlashtirish vositalari uchun ham ishlatiladi. Lekin uning afzalliklari ko‘plab so‘rovlarli, tizimlar, bir nechta mikroservislar yoki katta jamoa bilan ishlaydigan loyihalarda ko‘proq bilinadi.
Go ishlatiladigan kompaniya va loyihalar
Quyidagi misollarda Goning haqiqiy loyihalarda qanday vazifalarda qo'llanilishi keltirib o'tilgan:
- Google. Godan k8s va ko'p so'rovli tizimlarida foydalanadi.
- Cloudflare. Godan DNS infratuzilmasi, HTTP ulanishlarini siqish(gzip), SSL, yuklama sinovlari va boshqa tarmoq xizmatlarida foydalangan.
- Uber. Real vaqt ma’lumotlarini tahlil qiladigan
AresDBtizimini Goda ishlab chiqqan. - ByteDance. Goda mikroservislar qurishda foydalanadi.
Goda yozilgan ochiq kodli loyihalar orasida Docker, Kubernetes, Prometheus, etcd va Terraform bor. Bu loyihalar konteynerlarni ishga tushirish, serverlarni boshqarish, monitoring qilish va infratuzilmani sozlash kabi vazifalarda ishlatiladi.
Goning kuchli tomonlari
Kompaniyalar Goni turli sabablarga ko‘ra tanlaydi. Ko‘p uchraydigan sabablar quyidagilar:
- til qoidalarining kam va tushunarli bo‘lishi;
- kodning tez kompilyatsiya qilinishi;
- tarmoq dasturlari uchun standart kutubxonalar;
goroutinevachannelorqaliconcurrentvazifalarni boshqarish imkoniyati;- yangi dasturchining mavjud loyihani tushunib olishi nisbatan osonligi.
Sodda sintaksisli dasturning ham muammolari sodda bo‘ladi degani emas. Concurrent kodda ma’lumotlar poygasi (data race),
noto‘g‘ri sinxronlash va goroutinening tugamay qolishi kabi xatolar yuz berishi mumkin. Go bu muammolarni boshqarish
uchun kerakli vositalar beradi, ammo to‘g‘ri arxitektura va tekshiruv baribir dasturchining vazifasi bo‘lib qoladi.
Goni o‘rganish
Boshlash uchun Go darslariga kirish sahifasiga o‘ting. U yerda kerakli vositalarni o‘rnatish va darslardagi misollar bilan ishlash tartibi berilgan. Mavzular bir-biriga bog'langanligi sababli yangi boshlayotgan o'rganuvchiga darslarni navigatsiyadagi tartibda o‘rganish tavsiya qilinadi.