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

Китоби таълимии забони Go барои мактабиён, донишҷӯён ва омӯзгорон: аз алгоритм ва блок-схемаҳо то веб-сервер ва боти Телеграм. Таҷдиди китоби А. П. Назаров «Алгоритмсозӣ ва барномасозӣ дар забони Бейсик» (2009).
Агенти Зеҳнӣ · 26 октябри 2026 · 15 саҳифа
Муқаддима
Муқаддима
Дар бораи ин нашр. Ин китоб таҷдид ва бозсозии куллии дастури таълимии Назаров Аҳтам Пулотович бо номи «Алгоритмсозӣ ва барномасозӣ дар забони Бейсик» (Душанбе, соли 2009; тавсияи Маркази методии шуъбаи маорифи шаҳри Ваҳдат) мебошад. Забони таърихии Бейсик (GW-BASIC), ки солҳои зиёд дар мактабҳо ва коллеҷҳо таълим дода мешуд, имрӯз комилан кӯҳна шуда, ба талаботи технологияҳои муосир ҷавобгӯ нест. Ин нашр пояҳои мантиқӣ ва алгоритмии он китобро ҳифз намуда, онҳоро дар заминаи яке аз пешрафтатарин ва серталабтарин забонҳои барномасозии муосир — Go (Golang) — аз нав пешниҳод мекунад.
Ҳар касе, ки ба дунёи технологияҳои иттилоотӣ ворид мешавад, рӯзе бо аввалин забони барномасозии худ шинос мегардад. Дар охири асри гузашта ва ибтидои асри ҷорӣ барои бисёр хонандагону донишҷӯён чунин забон Бейсик (BASIC) буд. Дар GW-BASIC сатрҳо рақамгузорӣ мешуданд (10, 20, 30...) ва барои гузариш байни онҳо фармони GOTO истифода мешуд. Истифодаи зиёди чунин гузаришҳо хондан ва нигоҳдории барномаҳои калонро душвор мекард. Барои сохтани сомонаҳо, ботҳо ва хидматҳои шабакавии муосир абзорҳои дигар мувофиқтаранд.
Имрӯз бисёр нармафзорҳо аз чанд ҷузъи ба ҳам пайваст иборатанд. Миллионҳо компютер ва телефони ҳушманд тавассути интернет бо ҳам ва бо хидматҳои абрӣ мубодилаи маълумот мекунанд. Барои чунин муҳит забони сода, босуръат ва боэътимод лозим аст. Ширкати Google соли 2007 ба таҳияи забони Go оғоз кард ва соли 2009 онро ба ҷаҳониён пешниҳод намуд.
Go ҳам барои омӯзиши барномасозӣ ва ҳам барои сохтани нармафзори амалӣ истифода мешавад: бо он хидматҳои шабакавӣ, абзорҳои инфрасохтори абрӣ ва пойгоҳҳои додаҳо месозанд.
Дар забони Go чӣ гуна лоиҳаҳо сохтан мумкин аст?
Бисёр навомӯзон барномасозиро бо ҳисоб кардани як формулаи оддӣ дар экрани сиёҳи терминал (CLI) оғоз мекунанд ва баъзан мепурсанд: «Оё барномасозӣ танҳо ҳамин аст? Бо ин забон чӣ гуна лоиҳаҳои воқеӣ сохта метавонам?»
Забони Go маҳз барои он офарида шудааст, ки шумо битавонед маҳсулоти воқеӣ ва амалӣ эҷод кунед. Дар ин ҷо машҳуртарин самтҳо ва лоиҳаҳоеро, ки имрӯз дар ҷаҳон бо Go сохта мешаванд, дида мебароем:
1. Веб-серверҳо ва сомонаҳои интерактивӣ (Web Applications)
Дар забони Go китобхонаи дарунсохти net/http вуҷуд дорад, ки ба шумо имкон медиҳад бе насб кардани ягон нармафзори беруна (мисли Apache ё Nginx) веб-сервери воқеӣ созед. Шумо метавонед сомонаҳои интерактивӣ офаред, ки бо корбар муколама мекунанд, шаклҳои воридотии HTML-ро қабул менамоянд, маълумотро коркард мекунанд ва натиҷаро дар браузер нишон медиҳанд. Дар боби 12 мо чунин серверро аз сифр месозем.
2. Хидматрасониҳои REST API ва пуштибонии барномаҳои мобилӣ (Backend)
Ҳангоми истифодаи барномаи бонкӣ, таксӣ, мағозаи интернетӣ ё шабакаи иҷтимоӣ барномаи телефон одатан бо сервер (Backend) мубодилаи маълумот мекунад. Яке аз форматҳои маъмули ин мубодила JSON мебошад. Бо Go метавон REST API ва микросервисҳое сохт, ки чунин дархостҳоро коркард мекунанд.
3. Ботҳои паёмрасон (Telegram, Discord, Slack)
Имрӯз дар Тоҷикистон ва минтақа паёмрасони Телеграм хеле машҳур аст. Бо ёрии Go шумо метавонед ботҳои бениҳоят босуръат ва пуриқтидор созед, ки метавонанд дар як вақт ба ҳазорон корбар посух диҳанд: ботҳои омӯзишӣ, ботҳои қабули фармоиш, ботҳои санҷиши обу ҳаво ва хабаррасонӣ.
4. Барномасозии ҳамзамон ва шабакавӣ (Concurrency & Goroutines)
Go воситаҳои қулайи барномасозии ҳамзамон дорад. Бо калимаи go пеш аз даъвати функсия горутина оғоз мешавад. Горутинаҳо метавонанд чанд вазифаро ҳамзамон пеш баранд, масалан, файлҳоро боргирӣ кунанд ё сомонаҳоро санҷанд. Агар захираҳои иҷро дастрас бошанд, онҳо метавонанд дар чанд ядрои протсессор низ ба таври параллелӣ иҷро шаванд. Ҳамзамонӣ ҳатман маънои иҷрои параллелиро надорад.
5. Инфрасохтори абрӣ ва DevOps (Cloud Infrastructure)
Бисёре аз абзорҳои маъруфи идораи инфрасохтори абрӣ бо Go навишта шудаанд:
- Docker: Абзори маъруф барои сохтан ва иҷро кардани контейнерҳо.
- Kubernetes (K8s): Платформа барои идора кардани барномаҳои контейнерӣ дар маҷмӯи серверҳо.
- Terraform ва Prometheus: Абзорҳои асосии муҳандисони DevOps барои идораи инфрасохтор (Terraform) ва мониторинги серверҳо (Prometheus).
6. Пойгоҳҳои додаҳои насли нав
Барои нигоҳдорӣ ва коркарди ҳаҷми зиёди додаҳо низ аз Go истифода мебаранд. Намунаҳо: CockroachDB, TiDB ва etcd.
7. Бозиҳои 2D ва барномаҳои графикӣ (Desktop GUI)
Бо муҳаррикҳои муосири Go, аз ҷумла Ebitengine (ebitengine.org), метавон бозиҳои зебои 2D сохт, ки ҳам дар компютер ва ҳам дар телефон кор кунанд. Бо китобхонаи Fyne (fyne.io) бошад, метавон барномаҳои равзанагии мизи корӣ бо тугмаҳо, ҷадвалҳо ва менюҳои муосир таҳия кард.
Ин китоб барои кист?
Ҳадафи асосии ин китоб на танҳо ёд додани қоидаҳои синтаксис, балки парвариши тафаккури муҳандисӣ ва омода кардани насли нави барномасозон аст:
- Барои мактаббачагон ва навомӯзон: Агар шумо ҳеҷ гоҳ барнома нанавишта бошед ва мехоҳед аз сифр тарзи фикрронии алгоритмиро омӯзед, ин китоб қадам ба қадам роҳнамои шумо хоҳад буд.
- Барои омӯзгорони фанни технологияи иттилоотӣ (информатика): Дастури мазкур метавонад ҳамчун маводи асосии таълимӣ дар синфҳои болоии мактабҳои таҳсилоти умумӣ, литсейҳо, коллеҷҳо ва донишгоҳҳо истифода шавад. Он барномаи таълимиро аз мисолҳои кӯҳнаи солҳои 1980 ба замони муосир интиқол медиҳад.
- Барои онҳое, ки мехоҳанд вориди бозори меҳнати IT шаванд: Донистани Go барои кор дар таҳияи хидматҳои серверӣ, барномаҳои шабакавӣ ва абзорҳои абрӣ муфид аст.
Барои хондани ин китоб дониши пешакии барномасозӣ талаб карда намешавад. Танҳо донистани асосҳои риёзиёти мактабӣ ва завқи эҷодкорӣ кифоя аст.
Аз ин китоб чӣ меомӯзед?
Китоб аз ду пояи мустаҳкам иборат аст: тафаккури алгоритмӣ ва маҳорати амалии лоиҳасозӣ бо Go.
Дар бахши алгоритмсозӣ:
- Фаҳмидани мафҳуми алгоритм ва сохтани блок-схемаҳои стандартӣ.
- Тақсим кардани масъалаҳои мураккаб ба қисмҳои сода ва мантиқӣ.
- Ҳалли даҳҳо масъалаи ҷолиб аз фанҳои риёзиёт, ҳандаса ва физика.
Дар бахши забони Go ва лоиҳаҳо:
- Насби Go ва VS Code, инчунин истифодаи Go Playground дар браузер.
- Кор бо тағйирёбандаҳо, навъҳои дақиқи додаҳо ва собитҳо.
- Воридот ва содироти маълумот, истифодаи бастаи
mathва чопи касбӣ боfmt.Printf. - Қабули қарор бо сохторҳои шартии
ifваswitch. - Даврҳои пуриқтидори
for, ҷамъбасти қаторҳо ва алгоритмҳои назарияи ададҳо. - Массивҳо ва буришҳои динамикӣ (slice,
[]T), функсияиappendва давриfor range. - Коркарди матн ва сатрҳо бо назардошти алифбои тоҷикӣ дар стандарти ҷаҳонии Юникод (
rune). - Офаридани функсияҳо бо бозгашти якчанд қимат ва идораи боэътимоди хатоҳо (
error). - Моделсозии сохторҳои ҷаҳони воқеӣ бо
structва ҷустуҷӯи зуд бо харитаҳо (map). - Графикаи компютерӣ: сохтани расмҳои воқеии PNG ва графикҳои вектории SVG.
- Лоиҳаҳои воқеӣ: сохтани веб-сервер бо шакли воридоти HTML, хидматрасонии REST API бо JSON, офаридани боти Телеграм ва санҷиши босуръати ҳамзамони сомонаҳо бо горутинаҳо.
Сохтори китоб
Китоб аз 13 боби пайдарпай ва замима (боби 14) иборат аст:
- Боби 1. Оғози кор бо Go — таърихи компютер ва забони Go, насби абзорҳо ва аввалин барномаи «Салом, Ҷаҳон!».
- Боби 2. Асосҳои алгоритмсозӣ ва блок-схемаҳо — мафҳуми алгоритм, қоидаҳои сохтани блок-схемаҳо ва се сохтори бунёдӣ: хаттӣ, шоханок ва даврӣ.
- Боби 3. Тағйирёбандаҳо ва навъҳои додаҳо — хотираи компютер, эълон бо
varва:=, навъҳоиint,float64,bool,string, қиматҳои пешфарз ва собитҳо. - Боби 4. Амалҳои арифметикӣ ва воридоту содирот — тақсими бутун ва касрӣ, бастаи
math, воридот боfmt.Scanва чопи форматшуда боfmt.Printf. - Боби 5. Сохторҳои шартӣ — амалҳои муқоиса ва мантиқӣ, қабули қарор бо
if,else, оператори интихобиswitchва ҳалли мукаммали муодилаи квадратӣ. - Боби 6. Даврҳо дар Go — ягона даври пуриқтидори
for, идоракунӣ боbreakваcontinue, ҳисоби факториал, пайдарпайии Фибоначчӣ ва ҷадвали зарб. - Боби 7. Массивҳо ва буришҳо (Slices) — сохторҳои додаҳо, буришҳои динамикӣ, функсияи
append, давриfor range, ёфтани min/max ва матритсаҳо. - Боби 8. Кор бо сатрҳо ва рамзҳо — матн, байтҳо, рамзҳои Юникод (
rune), дастгирии ҳарфҳои тоҷикӣ, бастаҳоиstringsваstrconv. - Боби 9. Функсияҳо (Зербарномаҳо) — эълони функсияҳо, параметрҳо, бозгашти якчанд қимат, коркарди бехатари хатоҳо бо
errorва масъалаҳои геометрӣ. - Боби 10. Сохторҳо ва харитаҳо — муттаҳид кардани додаҳо бо
struct, пайваст кардани методҳо ва ҷустуҷӯи босуръат бо харитаҳо (map). - Боби 11. Графика ва тасвир дар Go — кашидани графикҳои функсияҳо дар консол ва тавлиди расмҳои воқеии рақамии PNG ва SVG.
- Боби 12. Лоиҳаҳои воқеӣ: Аз барномаҳои оддӣ то веб ва ботҳо — офаридани веб-сервер, сомонаи интерактивӣ, хидматрасонии REST API бо JSON, боти Телеграм ва барномасозии ҳамзамон (concurrency).
- Боби 13. Маҷмӯаи масъалаҳои амалӣ — 19 масъалаи амалӣ бо ҳалҳои пурра бо Go.
- Боби 14. Замима — ҳамаи 25 калимаи калидии Go, функсияҳои дарунсохт, бастаҳои асосӣ ва Луғати сезабонаи истилоҳот (Тоҷикӣ — Англисӣ — Русӣ).
Аз Бейсик ба Go
Агар шумо китоби аслиро дар забони Бейсик хонда бошед, ҳамаи мафҳумҳои шинос — тағйирёбанда, шарт, давр, массив ва зербарнома — дар ин китоб низ боқӣ мондаанд. Танҳо шакли навишти онҳо муосир ва тартибноктар шудааст:
| Дар Бейсик (GW-BASIC) | Дар Go | Дар кадом боб |
|---|---|---|
Рақамгузории сатрҳо (10, 20, 30...) | Блокҳои код дар дохили { } | Боби 1 |
LET A = 5, A$ = "Салом" | a := 5, s := "Салом" (навъи дақиқ: int, string) | Боби 3 |
INPUT A, B | fmt.Scan(&a, &b) | Боби 4 |
PRINT USING "###.##"; X | fmt.Printf("%6.2f", x) | Боби 4 |
IF ... THEN ... ELSE, GOTO | if, else, switch | Боби 5 |
FOR I = 1 TO N ... NEXT I | for i := 1; i <= n; i++ { ... } | Боби 6 |
DIM A(10) | массив [10]int ё буриш []int | Боби 7 |
GOSUB ... RETURN, DEF FN | функсияҳо (func) | Боби 9 |
Аз ҳама муҳим: дар Go фармони GOTO барои сохтани даврҳо ва шохаҳо лозим нест — сохторҳои if ва for барномаро аз боло ба поён хоно ва фаҳмо нигоҳ медоранд.
Чаро маҳз забони Go?
Забони Go барои ин китоб бо чанд сабаб интихоб шудааст:
- Содагӣ: Синтаксиси нисбатан мухтасар ва абзорҳои стандартии Go навиштану хондани кодро осон мекунанд.
- Суръати иҷро: Барномаҳои Go ба коди мошинӣ компилятсия мешаванд. Суръати воқеии онҳо ба алгоритм, тарзи навиштани код ва муҳити иҷро вобаста аст.
- Санҷиши навъҳо: Компилятор бисёр хатоҳоро пеш аз иҷро ошкор мекунад, масалан, кӯшиши ҷамъ кардани адад бо сатр ё эълони тағйирёбандаи маҳаллии истифоданашуда.
- Аҳамияти амалӣ: Шумо на танҳо барномасозиро ёд мегиред, балки якбора забонеро аз худ мекунед, ки дар бузургтарин ширкатҳои ҷаҳонӣ барои сохтани лоиҳаҳои воқеӣ истифода мешавад.
Биёед омӯзишро якҷоя оғоз намоем!

Барномасозӣ
Олами Афсонаҳо
Ахбор
Дунё