Tarkibga o'tish

Go dasturlash tili

go-lang.uz — Go dasturlash tilini o'zbek tilida bosqichma-bosqich o'rganish uchun qo'llanma.

Bu qo'llanmada Go tilining asoslaridan boshlab, amaliy dasturlar yozish uchun kerak bo'ladigan mavzular ketma-ket o'rganiladi.

Go nima?

Go — statik turlangan va kompilyatsiya qilinadigan dasturlash tili.

Go yordamida quyidagi turdagi dasturlarni yaratish mumkin:

  • backend tizimlar va API serverlar;
  • mikroservislar;
  • terminalda ishlaydigan dasturlar;
  • tarmoq dasturlari;
  • ma’lumotlarni qayta ishlaydigan xizmatlar;
  • avtomatlashtirish vositalari;
  • infratuzilmani boshqarishga mo'ljallangan dasturlar.

Go kodi bajarilishidan oldin kompilyator tomonidan mashina kodiga aylantiriladi. Natijada operatsion tizim bevosita ishga tushira oladigan bajariluvchi dastur hosil bo'ladi.

Go dasturi faqat biz yozgan koddan iborat emas. Dastur bilan birga Go tilining ichki boshqaruv qismi — runtime ham ishlaydi.

runtime dastur bajarilayotgan vaqtda bir qator muhim vazifalarni bajaradi. Masalan:

  • xotirani boshqarish va foydalanilmayotgan xotirani avtomatik tozalash;
  • goroutinelarni boshqarish;
  • stek bilan ishlash;
  • dastur bajarilishi uchun zarur bo'lgan boshqa ichki jarayonlarni boshqarish.

Go tilining asosiy xususiyatlari:

  • sodda va ixcham sintaksis;
  • statik turlash va kompilyatsiya vaqtida tekshiruv;
  • xotirani avtomatik boshqarish (garbage collection);
  • goroutine va channel yordamida concurrent dasturlar yozish imkoniyati;
  • tarmoq, HTTP, JSON va boshqa kundalik vazifalar uchun boy standart kutubxona;
  • kodni formatlash, testlash, modullarni boshqarish va kodni tahlil qilish uchun standart vositalar.

Go tarixi

Go tilini yaratish ishlari 2007-yilda Google kompaniyasida boshlangan.

Robert Griesemer, Rob Pike va Ken Thompson katta dasturiy loyihalarda uchraydigan ayrim muammolarni kamaytirish maqsadida yangi dasturlash tili ustida ishlay boshlagan.

Go 2009-yil noyabr oyida ochiq kodli loyiha sifatida ommaga taqdim etilgan.

Go 1 versiyasi esa 2012-yil mart oyida chiqarilgan.

Go nima sababdan ishlab chiqilgan?

2000-yillarning oxiriga kelib Googledagi dasturlar va ularning kod bazalari juda kattalashgan edi.

Ayrim loyihalarni kompilyatsiya qilish ko'p vaqt olar, bitta dastur ustida esa yuzlab dasturchilar birgalikda ishlardi.

C++, Java va Python kabi tillar ko'plab vazifalarni bajarish uchun kuchli vositalar bo'lsa-da, juda katta kod bazalari, katta jamoalar va server tizimlarida dastur ishlab chiqish jarayoni tobora murakkablashib borardi.

Bu davrda ko'p yadroli protsessorlar ham keng tarqala boshladi. Internet xizmatlari rivojlanishi natijasida bir vaqt oralig'ida ko'plab so'rovlarni boshqara oladigan dasturlarga talab oshdi.

Bir nechta vazifani birgalikda boshqarish, ya’ni concurrency bilan ishlash esa ko'plab mavjud loyihalarda ancha murakkab kod talab qilardi.

Go shu kabi muammolarni soddalashtirish maqsadida ishlab chiqilgan.

Tilni yaratishda quyidagi maqsadlar ko'zlangan:

  • katta loyihalarni tezroq kompilyatsiya qilish;
  • katta jamoalarda o'qilishi va tushunilishi oson kod yozish;
  • tarmoq va server dasturlarini yaratishni soddalashtirish;
  • bir nechta mustaqil vazifani concurrent tarzda boshqarishni qulaylashtirish;
  • dasturlarni turli muhitlarda ishlatishni osonlashtirish.

Go barcha dasturlash tillarining o'rnini bosish uchun yaratilmagan.

Uning asosiy yo'nalishlaridan biri katta dasturlar, server tizimlari va tarmoq xizmatlarini nisbatan sodda va tushunarli kod yordamida ishlab chiqishdir.

Info

Concurrency va parallelism bir xil tushuncha emas. Concurrency — bir nechta vazifani bir vaqt oralig'ida boshqarish usuli. Parallelism esa bir nechta vazifaning ayni vaqtda, masalan, turli CPU yadrolarida bajarilishini anglatadi. Goroutine concurrent dasturlar yozishni yengillashtiradi, lekin goroutinedan foydalanish dasturni avtomatik ravishda tezlashtirib yubormaydi.

Go yoki Golang?

Tilning rasmiy nomi — Go.

Golang esa boshqa dasturlash tili emas.

Bu nom Go tilining avvalgi rasmiy sayti golang.org manzilida joylashgani va qisqa Go so'zini internet orqali qidirish noqulay bo'lgani sababli keng tarqalgan.

Shuning uchun amaliyotda Go va Golang nomlarini uchratish mumkin, ammo tilning rasmiy nomi Go hisoblanadi.

Go qanday loyihalar uchun ishlatiladi?

Go ayniqsa server va tarmoq bilan bog'liq dasturlarda keng qo'llanadi.

Masalan:

  • veb-saytlarning backend qismi;
  • REST API va boshqa 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 xizmatlar.

Go kichik dasturlar va avtomatlashtirish vositalarini yaratishda ham ishlatiladi.

Ammo uning imkoniyatlari ko'plab so'rovlarni qayta ishlaydigan serverlar, bir nechta servisdan tashkil topgan tizimlar, tarmoq dasturlari va katta jamoalar ishlaydigan loyihalarda ayniqsa yaxshi namoyon bo'ladi.

Go ishlatiladigan kompaniya va loyihalar

Go real loyihalarda turli vazifalar uchun ishlatiladi.

Quyidagi misollar bunga misol bo'la oladi:

  • Google. Go’dan katta server va tarmoq tizimlarida foydalanadi.
  • Cloudflare. Go’dan DNS infratuzilmasi, HTTP bilan bog'liq xizmatlar, yuklama sinovlari va boshqa tarmoq vazifalarida foydalangan.
  • Uber. Real vaqt ma’lumotlarini tahlil qilish uchun yaratilgan AresDB tizimini Go’da ishlab chiqqan.
  • ByteDance. Go’dan mikroservislar yaratishda foydalanadi.

Go’da yozilgan mashhur ochiq kodli loyihalar orasida:

  • Docker;
  • Kubernetes;
  • Prometheus;
  • etcd;
  • Terraform

kabi loyihalar mavjud.

Bu vositalar konteynerlarni ishga tushirish, server va klasterlarni boshqarish, monitoring qilish hamda infratuzilmani sozlash kabi vazifalarda ishlatiladi.

Goning kuchli tomonlari

Kompaniyalar va dasturchilar Go’ni turli sabablarga ko'ra tanlaydi.

Ko'p uchraydigan sabablar quyidagilar:

  • til sintaksisi va qoidalarining nisbatan sodda bo'lishi;
  • kodning tez kompilyatsiya qilinishi;
  • tarmoq dasturlari yaratish uchun kuchli standart kutubxona;
  • goroutine va channel yordamida concurrent vazifalarni boshqarish imkoniyati;
  • mavjud loyihadagi kodni o'qish va tushunishning nisbatan osonligi;
  • dastur yaratish jarayonida kerak bo'ladigan ko'plab vositalarning Go bilan birga kelishi.

Biroq sodda sintaksis dasturning o'zi ham doimo sodda bo'ladi degani emas.

Ayniqsa concurrent dasturlarda quyidagi kabi muammolar paydo bo'lishi mumkin:

  • ma’lumotlar poygasi (data race);
  • noto'g'ri sinxronlash;
  • goroutinelarning kerakli vaqtda tugamasligi;
  • bir nechta goroutine bir xil ma’lumot bilan noto'g'ri ishlashi.

Go bunday muammolarni aniqlash va boshqarish uchun kerakli vositalarni beradi.

Ammo dastur arxitekturasini to'g'ri qurish, ma’lumotlar qanday boshqarilishini aniqlash va kodni tekshirish baribir dasturchining vazifasi hisoblanadi.

Goni o'rganish

Agar Go’ni endi o'rganishni boshlayotgan bo'lsangiz, Go darslariga kirish sahifasidan boshlang.

U yerda:

  • Go bilan ishlash uchun kerakli vositalarni o'rnatish;
  • birinchi Go dasturini yaratish;
  • darslardagi kod misollarini ishga tushirish;
  • keyingi mavzularni qanday tartibda o'rganish

haqida ma’lumot berilgan.

Darslardagi mavzular bir-biriga bog'langan.

Shuning uchun Go’ni birinchi marta o'rganayotgan bo'lsangiz, mavzularni navigatsiyada berilgan tartib bo'yicha o'rganish tavsiya etiladi.

Avval tilning asosiy sintaksisi va ma’lumot turlari o'rganiladi. Keyingi darslarda esa funksiyalar, structlar, ko'rsatkichlar, interfeyslar, xatolar bilan ishlash, concurrency va boshqa muhim mavzularga bosqichma-bosqich o'tiladi.

Manbalar