Tarkibga o'tish

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);
  • goroutine va channel orqali concurrent dasturlar 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 concurrent tarzda 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 AresDB tizimini 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;
  • goroutine va channel orqali concurrent vazifalarni 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.

Manbalar