Зеҳн
Алгоритмсозӣ ва барномасозӣ дар забони Go

Китоби таълимии забони Go барои мактабиён, донишҷӯён ва омӯзгорон: аз алгоритм ва блок-схемаҳо то веб-сервер ва боти Телеграм. Таҷдиди китоби А. П. Назаров «Алгоритмсозӣ ва барномасозӣ дар забони Бейсик» (2009).

Агенти Зеҳнӣ · 26 октябри 2026 · 15 саҳифа

МаорифБарномасозӣТехнология
Аз аввал хондан

Боби 1. Оғози кор бо Go

Боби 1. Оғози кор бо Go

Дар ин боб шумо бо таърихи мухтасари техникаи ҳисоббарор ва сабаби ба вуҷуд омадани забони Go шинос мешавед. Сипас муҳити кории Go-ро дар компютери худ насб карда, муҳаррири кодро омода месозед ва аввалин барномаи худро менависед.

Дар ин боб меомӯзем

  • Таърихи пайдоиши техникаи ҳисоббарор ва чаро ширкати Google забони Go-ро офарид.
  • Тарзи насби Go дар системаҳои амалиётии Windows, macOS ва Linux.
  • Истифодаи Go Playground барои санҷиши сареъ дар браузер.
  • Насб ва танзими муҳаррири коди VS Code.
  • Сохтори барномаи аввалин ва таҳлили сатр ба сатри он.
  • Иҷрои барнома бо фармонҳои go run ва go build.
  • Тарзи озода ва зебо нигоҳ доштани код бо ёрии go fmt.

Аз Абак то пайдоиши забони Go

Одамон аз замонҳои қадим ба ҳисоббарорӣ ниёз доштанд. Аввал барои ҳисоб аз ангуштони даст, сангчаҳо ва чӯбчаҳо истифода мебурданд. Баъдтар асбобҳои махсуси ҳисоб, аз ҷумла абак, пайдо шуданд. Абак ба чӯт шабоҳат дорад.

Дар асрҳои XVII–XIX олимони бузург мошинҳои механикиро офариданд:

  • Соли 1642 олими фаронсавӣ Блез Паскал мошини механикии ҷамъ ва тарҳро сохт, ки бо номи «Паскалина» маъруф шуд.
  • Соли 1673 риёзидони олмонӣ Готфрид Лейбнитс мошинеро муаррифӣ кард, ки амалҳои зарб ва тақсимро низ иҷро мекард.
  • Дар нимаи аввали асри XIX олими англис Чарлз Бэббиҷ нақшаи «Мошини таҳлилӣ»-ро кашид, ки нахустин намунаи компютери барномарезишаванда буд. Ҳамкори ӯ Ада Лавлейс аввалин барномаро барои ин мошин навишт ва дар таърих ҳамчун нахустин барномасози ҷаҳон сабт гардид.

Дар миёнаи асри XX мошинҳои электронии ҳисоббарор (МЭҲ) ба вуҷуд омаданд. Техникаи ҳисоббарор аз мошинҳои азими лампагӣ то компютерҳои транзисторӣ, системаҳои дорои схемаҳои интегралӣ ва компютерҳои фардии микропротсессорӣ рушд ёфт.

Чаро забони Go ба вуҷуд омад?

Бо гузашти вақт забонҳои зиёде пайдо шуданд: Fortran, Бейсик, Pascal, C, C++, Java, Python. Дар солҳои 1980–1990 забони Бейсик (BASIC) барои навомӯзон хеле машҳур буд, чунки навиштани барнома дар он осон менамуд. Аммо барномаҳои Бейсик бо мурури замон калон, нохоно ва печида мешуданд.

Дар асри XXI сахтафзори компютерҳо тағйир ёфт: протсессорҳо дорои якчанд ядро (multi-core) шуданд ва барномаҳо дар ҳазорон серверҳои шабакавӣ ба кор даромаданд. Компилятсияи лоиҳаҳои калон дар забони C++ даҳҳо дақиқа вақт мегирифт ва забонҳое мисли Python суръати баланди иҷроиш надоштанд.

Соли 2007 дар ширкати Google се мутахассиси шинохтаи соҳаи компютер — Роберт Грисемер (Robert Griesemer), Роб Пайк (Rob Pike) ва Кен Томпсон (Ken Thompson) — ба тарҳрезии забони нав оғоз карданд.

Ҳадафи онҳо чунин буд:

  1. Забон бояд синтаксиси бениҳоят сода ва тоза дошта бошад (мисли Python).
  2. Барномаҳо босуръат компилятсия ва самаранок иҷро шаванд.
  3. Кори ҳамзамон (concurrency) ва шабакавиро дар сатҳи олӣ дастгирӣ кунад.

Соли 2009 забони Go (ки ғайрирасмӣ онро Golang низ меноманд) ҳамчун лоиҳаи кушодаасос (open source) ба ҷаҳониён муаррифӣ шуд. Имрӯз Go яке аз бонуфузтарин ва маҳбубтарин забонҳои муҳандисони нармафзор дар саросари ҷаҳон ба шумор меравад.


Насби забони Go

Go барои системаҳои маъмули амалиётӣ, аз ҷумла Windows, macOS ва Linux, дастрас аст.

Windows

  1. Ба сомонаи расмии Go гузаред:
  2. Насбкунандаи Windows-ро бо пасванди .msi ва меъмории мувофиқи протсессори худ боргирӣ намоед. Номҳо ва натиҷаҳои фармонҳои дар поён овардашуда намунавӣ мебошанд; рақами версияро бо версияи боргирифтаатон мутобиқ кунед.
  3. Файлро кушоед ва тугмаи Next-ро пахш намуда, то охир насб кунед. Насбкунанда ба таври худкор роҳи Go-ро ба тағйирёбандаи системавии PATH илова мекунад.
  4. Барои санҷиш, сатри фармонро кушоед (пахши тугмаҳои Win + R, навиштани cmd ва пахши Enter) ва фармони зеринро ворид намоед:
C:\> go version
go version go1.27.3 windows/amd64

Агар рақами версия чоп шавад, Go бомуваффақият насб шудааст!

macOS

  1. Ба сомонаи равед ва насбкунандаи мувофиқро боргирӣ кунед:
    • Агар компютери шумо протсессори Apple Silicon (M1/M2/M3) дошта бошад: darwin-arm64.pkg.
    • Агар протсессори Intel дошта бошад: darwin-amd64.pkg.
  2. Файлро кушода насб кунед, сипас барномаи Terminal-ро боз карда санҷед:
$ go version
go version go1.27.3 darwin/arm64

Шумо ҳамчунин метавонед Go-ро тавассути мудири бастаҳои Homebrew насб кунед:

brew install go

Linux (Ubuntu / Debian / Fedora)

Роҳи беҳтарин — насби версияи навтарин аз сомонаи расмӣ. Бойгонии .tar.gz-ро аз боргирӣ карда, дар ҳамон ҷузвдоне, ки файл боргирӣ шудааст, онро ба ҷузвдони /usr/local кушоед:

sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.27.3.linux-amd64.tar.gz

Ва ба файли ~/.bashrc ё ~/.zshrc сатри зеринро илова намоед:

export PATH=$PATH:/usr/local/go/bin

Пас аз ин терминалро аз нав кушоед ва версияро санҷед:

$ go version
go version go1.27.3 linux/amd64

Ҳамчунин метавонед Go-ро аз анбори бастаҳои системаи худ насб кунед: дар Ubuntu/Debian — sudo apt install golang-go, дар Fedora — sudo dnf install golang. Аммо дар бисёр версияҳои Ubuntu ва Debian бо ин роҳ версияи кӯҳнаи Go насб мешавад (масалан, дар Ubuntu 22.04 — Go 1.18). Барои ин китоб Go 1.22 ё навтар лозим аст, бинобар ин пас аз насб ҳатман бо go version версияро санҷед.


Оғози сареъ бо Go Playground

Агар дар айни замон дар компютери худ имкони насб кардани нармафзорро надошта бошед ё бо телефони мобилӣ кор кунед, метавонед бевосита дар браузери худ барнома нависед!

Ба нишонии **** гузаред. Ин хизматрасонии расмии Go Playground мебошад. Дар он ҷо шумо метавонед коди Go-ро ворид кунед, тугмаи Run-ро пахш намоед ва натиҷаи иҷроро фавран дар поёни экран бинед.


Муҳаррири код: Visual Studio Code

Барои навиштани барномаҳо муҳаррири код истифода бурдан қулай аст. Дар ин китоб мо Visual Studio Code (VS Code)-ро истифода мебарем:

  1. VS Code-ро аз сомонаи расмии боргирӣ ва насб намоед.
  2. Пас аз кушодани барнома, ба бахши Extensions (Васеъкунандаҳо) равед (пахши тугмаҳои Ctrl + Shift + X дар Windows/Linux ё Cmd + Shift + X дар macOS).
  3. Дар сатри ҷустуҷӯ калимаи Go-ро нависед ва васеъкунандаи расмии ширкати Go Team at Google-ро пайдо карда, тугмаи Install-ро пахш кунед.

Ин васеъкунанда ба шумо имкон медиҳад, ки ҳангоми навиштани код хатоҳоро фавран бинед, кодро худкор пурра кунед (autocomplete) ва барномаро бо як пахши тугма иҷро намоед.


Аввалин барнома: «Салом, Ҷаҳон!»

Ҳоло вақти он расид, ки аввалин барномаи худро бинависед.

Дар компютери худ як ҷузвдони корӣ созед, масалан бо номи darsi-go. Дар дохили он терминали худро кушоед ва барои ташкили модули нави Go фармони зеринро ворид кунед:

go mod init darsi-go

Ин фармон файли go.mod-ро месозад, ки барои идораи лоиҳаи шумо хизмат мекунад.

Ҳоло дар муҳаррири VS Code файли наве бо номи main.go эҷод кунед ва коди зеринро дар он нависед:

package main

import "fmt"

func main() {
	fmt.Println("Салом, Ҷаҳон!")
}

Файлро сабт намоед (Ctrl + S ё Cmd + S).

Иҷрои барнома

Дар терминал, дар дохили ҳамон ҷузвдон, фармони зеринро ворид кунед:

$ go run main.go
Салом, Ҷаҳон!

Табрик мекунем! Шумо аввалин барномаи худро дар забони Go навиштед ва бомуваффақият иҷро кардед.


Таҳлили сохтори барнома

Биёед сатр ба сатр бубинем, ки дар ин барнома чӣ рух дод:

  1. package main — Ҳар як файли коди Go ба баста (package) тааллуқ дорад. Бастаҳо барои гурӯҳбандии код хизмат мекунанд. Эълони package main нишон медиҳад, ки файл қисми бастаи барномаи иҷрошаванда аст.
  2. import "fmt" — Калимаи калидии import китобхонаҳо ё бастаҳои дигарро ба барномаи мо пайваст мекунад. Бастаи "fmt" (кӯтоҳшудаи format) қисми китобхонаи стандартии Go буда, барои ворид кардан ва чоп намудани матну маълумот истифода мешавад.
  3. func main() { ... } — Ин функсияи асосӣ аст. Пас аз омодасозии бастаҳо Go функсияи main-ро даъват мекунад. Коди дохили қавсҳои фигурии { } баданаи функсия номида мешавад.
  4. fmt.Println("Салом, Ҷаҳон!") — Ин сатр функсияи Println-ро аз бастаи fmt даъват мекунад. Он матни дар дохили нохунак бударо дар экран чоп мекунад ва дар охир курсорро ба сатри нав мегузаронад (Println = Print Line).

[!NOTE] Дар охири сатрҳои забони Go гузоштани нуқта-вергул (;) шарт нест! Компилятори Go ҳангоми хондани код нуқта-вергулро худаш дар охири сатр мегузорад, агар сатр бо ном, адад, сатр, қавси пӯшанда ) ё } ва монанди инҳо анҷом ёбад. Маҳз барои ҳамин қавси кушодаи { бояд дар ҳамон сатре бошад, ки func main() навишта шудааст, на дар сатри нав.


Фармонҳои муҳими Go

Барои кор бо барномаҳои Go се фармони асосиро донистан муҳим аст:

1. go run

Фармони go run main.go барномаро ба файли муваққатӣ компилятсия карда, фавран иҷро мекунад. Ин фармон барои омӯзиш ва санҷиши зуди барномаҳо қулай аст.

2. go build

Фармони go build бастаи main-ро ба файли иҷрошаванда (binary / executable) табдил медиҳад. Дар ин мисол номи файл аз қисми охирини роҳи модул дар go.mod гирифта мешавад:

  • Дар Windows: файли darsi-go.exe сохта мешавад.
  • Дар macOS ва Linux: файли иҷрошавандаи darsi-go сохта мешавад.

(Агар фармонро ҳамчун go build main.go диҳед, файл бо номи main ё main.exe сохта мешавад.)

Файли ҳосилшударо метавон дар компютери дигаре бо системаи амалиётӣ ва меъмории мувофиқ иҷро кард. Одатан насби Go дар он компютер лозим нест, аммо вобастагиҳои берунии барнома, агар бошанд, бояд дастрас бошанд.

$ go build
$ ./darsi-go
Салом, Ҷаҳон!

Дар Windows барномаро бо фармони darsi-go.exe иҷро мекунед.

3. go fmt

Дар бисёр забонҳои дигар барномасозон баҳс мекунанд, ки фосилаҳоро чӣ тавр бояд гузошт ё қавсҳоро дар куҷо бояд кушод. Дар забони Go ин мушкил вуҷуд надорад! Воситаи расмии go fmt коди шуморо ба таври худкор аз рӯи қоидаҳои стандартии ҷаҳонии Go озода, баробар ва хоно мекунад.

Барои озода кардани коди файл фармон диҳед:

go fmt main.go

Дар VS Code бо васеъкунандаи Go ва танзими форматкунӣ ҳангоми сабт ин амал метавонад ба таври худкор иҷро шавад.


Худатон бисанҷед

1–1. Паёми шахсӣ: Барномаи main.go-ро тавре тағйир диҳед, ки ба ҷойи «Салом, Ҷаҳон!» ном ва насаби шумо ва шаҳре, ки дар он зиндагӣ мекунед, дар ду сатри алоҳида чоп шавад.

1–2. Се паём: Барномае нависед, ки бо се даъвати ҷудогонаи fmt.Println се мисраъ шеър ё се шиори дӯстдоштаатонро дар экран инъикос намояд.

1–3. Таҷриба бо хатогӣ: Номи Println-ро ба println_хато иваз кунед ё нохунаки охирро бардоред ва кӯшиш кунед онро бо go run иҷро намоед. Бубинед, ки компилятори Go чӣ гуна хатогиро баён мекунад. Ин ба шумо кӯмак мекунад, ки бо тарзи фаҳмидани паёмҳои хато шинос шавед.


Хулоса

Дар ин боб шумо бо таърихи инкишофи компютерҳо аз асбобҳои ибтидоӣ то забони муосири Go ошно шудед. Шумо муҳити Go-ро дар компютери худ насб кардед, VS Code-ро танзим намудед, аввалин барномаи иҷрошавандаро сохтед ва фаҳмидед, ки бастаҳо ва функсияи main чӣ гуна вазифа доранд.

Дар боби 2 мо ба мафҳуми асосии барномасозӣ — алгоритмҳо ва блок-схемаҳо — мегузарем ва тарзи дурусти таҳлили масъалаҳоро пеш аз навиштани код меомӯзем.

пешина
аз 15
навбатӣ