Dasturlash muhiti va vositalar
Dasturlash muhiti (development environment) dasturiy ta’minot ishlab chiqish uchun yordamchi vositalar to’plamidir. Dasturlash muhitining markazida matn tahrirlash funksiyasi, shuningdek, sintaksisni yoritish (syntax highlighting), turni tekshirish (type checking), kodni formatlash va avtoto’ldirish kabi qo’shimcha imkoniyatlar yotadi. VS Code kabi integratsiyalashgan dasturlash muhitlari (IDE’lar) bu funksiyalarning barchasini bitta ilovada birlashtiradi. Terminalga asoslangan dasturlash jarayonlari tmux (terminal multipleksori), Vim (matn muharriri), Zsh (shell) kabi vositalarni hamda Ruff (Python linter’i va kodni formatlovchisi) va Mypy (Python uchun turni tekshiruvchi) kabi tilga xos buyruqlar satri vositalarini o’zida birlashtiradi.
IDE’lar va terminalga asoslangan jarayonlarning har biri o’zining kuchli va zaif tomonlariga ega. Masalan, grafik interfeysli IDE’larni o’rganish osonroq bo’lishi mumkin va bugungi IDE’lar odatda AI avtoto’ldirish kabi o’zida tayyor o’rnatilgan SI integratsiyalariga ega; boshqa tomondan, terminalga asoslangan jarayonlar yengil va grafik interfeysga ega bo’lmagan yoki dastur o’rnata olmaydigan muhitlarda yagona tanlovingiz bo’lishi mumkin. Biz har ikkalasi bilan ham har qalay tanishishni va kamida bittasini mukammal o’zlashtirishni tavsiya qilamiz. Agar sizda hali sevimli IDE bo’lmasa, VS Code bilan boshlashni tavsiya qilamiz.
Ushbu ma’ruzada biz quyidagilarni ko’rib chiqamiz:
- Matn tahrirlash va Vim
- Kod intellekti va til serverlari
- Sun’iy intellekt yordamida dasturlash
- Kengaytmalar va boshqa IDE funksiyalari
Matn tahrirlash va Vim
Dasturlash jarayonida vaqtingizning aksariyat qismi fayllarni yuqoridan pastgacha uzluksiz o’qish yoki uzun kodlar yozish bilan emas, balki kod bo’ylab harakatlanish, kodning ayrim qismlarini o’qish va kodga o’zgartirishlar kiritish bilan o’tadi. Vim aynan shu vazifalarni taqsimlash uchun optimallashtirilgan matn muharriridir.
Vim falsafasi. Vim o’zining negizida ajoyib bir g’oyaga ega: uning interfeysining o’zi matn bo’ylab harakatlanish va tahrirlash uchun mo’ljallangan dasturlash tilidir. Tugmalar (mnemonik nomlar bilan) buyruqlar bo’lib xizmat qiladi va bu buyruqlarni bir-biri bilan birlashtirish mumkin. Vim sichqonchadan foydalanishdan qochadi, chunki u juda sekin; Vim hatto yo’nalish tugmalaridan (arrow keys) foydalanishdan ham qochadi, chunki bu ortiqcha harakatni talab qiladi. Natija: miya-kompyuter interfeysiga o’xshaydigan va fikrlash tezligingizga mos keladigan muharrir.
Boshqa dasturlarda Vim’ni qo’llab-quvvatlash. Uning asosidagi g’oyalardan foydalanish uchun bevosita Vim‘ning o’zidan foydalanishingiz shart emas. Har qanday matn tahrirlash bilan bog’liq bo’lgan ko’plab dasturlar “Vim rejimi” (Vim mode)ni ichki funksiya yoki plagin sifatida qo’llab-quvvatlaydi. Masalan, VS Code’da VSCodeVim plagini, Zsh’da Vim emulyatsiyasi uchun ichki yordam, va hatto Claude Code’da Vim muharriri rejimi uchun ichki yordam mavjud. Katta ehtimol bilan, matn tahrirlashni o’z ichiga olgan siz ishlatadigan har qanday vosita qaysidir ma’noda Vim rejimini qo’llab-quvvatlaydi.
Rejimlardagi tahrirlash (Modal editing)
Vim rejimli muharrir (modal editor) hisoblanadi: u turli toifadagi vazifalar uchun turli xil ishlash rejimlariga ega.
- Normal: fayl bo’ylab harakatlanish va o’zgartirishlar kiritish uchun
- Insert (Kiritish): matn kiritish uchun
- Replace (O’zgartirish): matnni o’zgartirish uchun
- Visual (oddiy, qator yoki blok): matn bloklarini tanlash uchun
- Command-line (Buyruqlar satri): buyruqni ishga tushirish uchun
Tugmalar turli ishlash rejimlarida farqli ma’nolarni anglatadi. Masalan, Insert rejimida x harfi shunchaki “x” belgisini kiritadi, lekin Normal rejimda u kursor tagidagi belgini o’chiradi, Visual rejimda esa tanlangan qismni o’chiradi.
Standart sozlamalarda, Vim joriy rejimni pastki chap burchakda ko’rsatadi. Dastlabki/standart rejim Normal rejimdir. Odatda siz vaqtingizning ko’p qismini Normal rejim va Insert rejimida o’tkazasiz.
<ESC> (escape tugmasi) bosish orqali ixtiyoriy rejimdan Normal rejimga qaytishingiz mumkin. Normal rejimdan turib Insert rejimiga i, Replace rejimiga R, Visual rejimiga v, Visual Line rejimiga V, Visual Block rejimiga <C-v> (Ctrl-V, ba’zan ^V deb ham yoziladi) va Command-line rejimiga : orqali o’tasiz.
Vim’dan foydalanganda <ESC> tugmasidan juda ko’p foydalanasiz: Caps Lock tugmasini Escape’ga o’zgartirishni ko’rib chiqing (macOS uchun qo’llanma) yoki oddiy tugmalar ketma-ketligi bilan <ESC> uchun muqobil bog’lash qilib oling.
Asoslar: matn kiritish
Normal rejimdan Insert rejimiga o’tish uchun i tugmasini bosing. Endi Vim xuddi boshqa har qanday matn muharriri kabi ishlaydi, toki siz <ESC> ni bosib Normal rejimga qaytmaguningizgacha. Bularning barchasi va yuqoridagi asoslar Vim bilan fayllarni tahrirlashni boshlash uchun yetarli (agar butun vaqtingizni asosan Insert rejimida o’tkazmoqchi bo’lsangiz unchalik samarali emas, albatta).
Vim interfeysi – bu dasturlash tili
Vim interfeysi xuddi dasturlash tili kabi ishlaydi. Tugmalar (mnemonik nomlar bilan) buyruqlar bo’lib, ular bir-birini to’ldiradi (compose). Bu tezкор harakatlanish va o’zgartirishlar kiritish imkonini beradi, ayniqsa klaviaturingizni o’rgangandan so’ng xuddi mushaklar xotirasi kabi ishlaydi.
Harakatlanish (Movement)
Siz vaqtingizning aksariyat qismini fayllar bo’ylab harakatlanish uchun Normal rejimda o’tkazishingiz kerak. Vim’dagi harakatlanishlar ham “otlar” (nouns) deyiladi, chunki ular matn bo’laklarini ifodalaydi.
- Asosiy harakatlar:
hjkl(chap, past, tepa, o’ng) - So’zlar:
w(keyingi so’z),b(so’zning boshi),e(so’zning oxiri) - Qatorlar:
0(qator boshi),^(birinchi bo’sh bo’lmagan belgi),$(qatorning oxiri) - Ekran:
H(ekranning yuqori qismi),M(ekranning o’rta qismi),L(ekranning pastki qismi) - Skrolling:
Ctrl-u(tepaga),Ctrl-d(pastga) - Fayl:
gg(faylning boshi),G(faylning oxiri) - Qator raqamlari:
:{number}<CR>yoki{number}G({number} qatoriga)<CR>enter tugmasi vazifasini bildiradi
- Turli xil:
%(mos keladigan juftlik, qavs va hakazo) - Izlash (Find):
f{belgi},t{belgi},F{belgi},T{belgi}- joriy qatorda {belgini} oldinga/orqaga qarab qidirish
- natijalar bo’ylab yurish uchun
,/;
- Qidiruv (Search):
/{regulyar ifoda}, mosliklar orasida yurish uchunn/N
Tanlash (Selection)
Visual rejimlar:
- Visual:
v - Visual qator (Visual Line):
V - Visual blok (Visual Block):
Ctrl-v
Tanlash uchun harakatlantirish tugmalaridan foydalansangiz bo’ladi.
Tahrirlash (Edits)
Ilgari sichqoncha bilan qilingan barcha amallarni endi klaviatura orqali, harakatlantirish amallariga biriktirilgan holda amalga oshirasiz. Aynan shu yerda Vim interfeysi dasturlash tiliga o’xshashni boshlaydi. Vim’ning tahrir amallari “fe’llar” (verbs) deyiladi.
iInsert rejimga o’tish- lekin matnni o’chirish/manipulyatsiya qilishda sizga backspace’dan ko’proq narsa kerak bo’ladi
o/Opastda / yuqorida yangi qator ochishd{motion}{motion} bo’yicha o’chirish- masalan,
dw- so’zni o’chirish,d$- qatorning oxirigacha,d0- boshigacha o’chirish
- masalan,
c{motion}{motion} qismini o’zgartirish- masalan,
cwso’zni o’zgartirish d{motion}keyin esaikabi ishlaydi
- masalan,
xbelgini o’chirish (budlekvivalenti)sbelgini almashtirish (buclekvivalenti)- Visual rejim + manipulyatsiya
- matnni tanlang, o’chirish uchun
do’zgartirish uchuncbosing
- matnni tanlang, o’chirish uchun
uortga qaytarish,<C-r>qayta bajarishynusxalash yoxud “yank” (dkabi boshqa amallar ham nusxa oladi)pjoylashtirish (paste)- Ko’proq o’rganish uchun: masalan,
~harfning registrini o’zgartiradi,Jqatorlarni birlashtiradi
Sanoqlar (Counts)
Siz otlar va fe’llarni marta (count) soni yordamida birlashtirishingiz mumkin va bu harakat bir necha bor takrorlanadi.
3w3 ta so’z oldinga yurish5j5 qator pastga siljish7dw7 ta so’zni o’chirish
Modifikatorlar (Modifiers)
Otlarning ma’nosini o’zgartirish uchun modifikatorlardan foydalanishingiz mumkin. Bular “ichki” degan ma’noni beruvchi i yoki “atrofi” degan ma’noni anglatuvchi a kabi belgilar.
ci(qavslar ichidagi qatorni o’zgartiradici[to’rtburchak qavslar ichidagi qatorni o’zgartiradida'bitta tirnoqli string’ni (qo’shtirnoqlarsiz stringni o’zi bilan) uzilish bilan o’chiradi
Hammasini bir joyga jamlaganda
Bu yerda xato ishlangan fizz buzz realizatsiyasi keltirilgan:
def fizz_buzz(limit):
for i in range(limit):
if i % 3 == 0:
print("fizz", end="")
if i % 5 == 0:
print("fizz", end="")
if i % 3 and i % 5:
print(i, end="")
print()
def main():
fizz_buzz(20)
Ishni Normal rejimdan boshlab muammolarni bartaraf qilish uchun biz quyidagi ketma-ketlikdan foydalanamiz:
- Main umuman chaqirilmagan
- Fayl oxiriga sakrash uchun
G - Pastroqda yangi qator ochish uchun o (open)
if __name__ == "__main__": main()deb yozing- Muharriringizda Python tiliga ega bo’lsangiz o’zi surib to’g’irlab qo’yishi mumkin
- Normal rejimga qaytish uchun
<ESC>
- Fayl oxiriga sakrash uchun
- U 1 o’rniga 0 dan boshlanyapti
/orqasidanrangeva qidirish uchun<CR>- Ikki so’z oldiga yurish uchun
ww(shuningdek,2wishlatsa ham bo’ladi) - Kiritish (insert) rejimi uchun
i, ustiga1,yozish - Normal rejimga qaytish uchun
<ESC> - Keyingi so’zning oxiriga o’tish (end) uchun
e - Qo’shish (append) qilib boshlash uchun
abosiladi, qatorga+ 1qo’shiladi - Normal rejimga qaytish uchun
<ESC> - 5 karrali qismi “fizz” qaytaryapti
- 6-qatorga borish uchun
:6<CR> - Qo’shtirnoqni ichini (i) almashtirish (change)
ci", uni"buzz"deb o’zgartiramiz - Normal rejimga qaytish uchun
<ESC>
Vim’ni o’rganish
Vim’ni o’rganishning eng yaxshi usuli uning asoslarini tushunib olish, keyin esa barcha dasturlaringizda Vim rejimini yoqish va uni amalda qo’llashdan iboratdir. Sichqoncha va ko’rsatkich tugmalaridan voz kechish juda foydali bo’ladi.
Qo’shimcha manbalar
- Kursning o’tgan safargi nashridan Vim ma’ruzasi — biz u yerda yana ham batafsil o’tdik
vimtutorbu Vim o’rnatilganda keladigan darslik — agar Vim o’rnatilgan bo’lsa uni terminalda ishga tushirish mumkin- Vim Adventures bu Vim’ni o’yinda o’rganish
- Vim Tips Wiki
- Vim Advent Calendar Vim hiylalari asosan
- VimGolf Vim UI orqali qilingan kod golfi.
- Vi/Vim Stack Exchange
- Vim Screencasts
- Practical Vim (kitob)
Kod intellekti va til serverlari
IDE’lar odatda Language Server Protocol protokoliga asoslangan interfeyslarni, ya’ni IDE kengaytmalari va til serverlarini amalga oshirishni taklif etadi. Ularda kodning semantik anglashini talab qiluvchi tilga xos amallar amalga oshiriladi. Masalan, VS Codedagi Python kengaytmasi bevosita Pylance yordamida yoki Go kengaytmalari orqali ishlatilishi mumkin va h.k. O’zingiz ishlaydigan tillar bo’yicha serverlarni ulab kod yozganingizda, avtoto’ldirish singari ba’zi afzalliklarga erishasiz:
- Kodni to’ldirish. Avtoto’ldiruvchi kabi (object. yozilgan zahoti siz uni davomini ko’rasiz).
- Inline documentation (Ichki hujjatlar). Sichqonchangizni u yerga olib borsangiz ko’rish mumkin.
- Jump-to-definition (O’rnatish nuqtasiga o’tish). Qaysidir field qa’yerdan olingan bo’lsa huddi shu yerga sakrab o’tish imkonini beradi.
- Find references (Bog’liqliklar qidiruvi). Eng osoni kod qayerlarda ishlatilayapti ko’rsatib turadi.
- Import bilan yordam. O’chirib yuborilgan yoki yangi importlarni aytadi.
- Kod sifati. Avtomatik formatlashni berishi kabi afzalliklari bor. Bularning barchasini Kod sifati bo’limida yana ko’rib o’tamiz.
Til serverlarini sozlash
Ba’zi tillar o’z-o’zidan sozlanadi. Boshqalari esa ishqalanish yuzaga keltirishi mumkin. Masalan, Python qanday ishlatilishini va qay manzilda paketlar bog’langanligini ko’rsatish darkor. Bu kabi mavzuni o’zimizning dastur yetkazib berish darslarida ko’proq yoritamiz.
Tilga qarab turli xil sozlamalar mavjud bo’lishi mumkin. Masalan, Python type-checking shart bo’lmasa uni o’chirib qo’yishni taklif etadi.
SI yordamida dasturlash
GitHub Copilot e’lon qilingandan buyon dasturlashda LLM’lar ishlatilishni boshladi. Ayni paytda uchta eng ommabop variant bor: avtoto’ldirish, ichki suhbat (inline chat) va dasturlash agentlari (coding agents).
Avtoto’ldirish (Autocomplete)
SI orqali to’ldirish an’anaviy kod muharrirlarida xuddi shunday formatga egaki, kursorni oldinga olgan sari u variantlarni chiaraveradi. Masalan, buni izohlardan orqali prompt’lar bilan boshqarsh oson.
Masalan skript yozmoqchimiz deylik:
import requests
def download_contents(url: str) -> str:
Model qolganini davom ettiradi:
response = requests.get(url)
return response.text
Siz izohlarda tushuntirish kiritishingiz mumkin:
def extract(contents: str) -> list[str]:
Bunga bunday natija beradi:
lines = contents.splitlines()
return [line for line in lines if line.strip()]
Biz o’z sharhlarimizni izohlarga kiritsak bo’ladi:
def extract(content: str) -> list[str]:
# contentdan barcha Markdown havolalarinig oling
Bu marta esa yaxshiroq natija olamiz:
import re
pattern = r'\[.*?\]\((.*?)\)'
return re.findall(pattern, content)
Bu modelni aybi shu yerda ko’rinadi - faqatgina kursorda aytilgan joyini u ko’rishi mumkin xolos va module bo’limlariga ta’sir qilmaydi. Shuning uchun ham amaliyotda odatda eng asosiysi funksiyalarni aniq ravan nomlar, misol uchun extract_links qilib nomlash va docstrings qo’shish kabi qulay bo’ladigan tarzda xizmat ko’rsatishlari shart bo’ladi.
Va bu hamma narsani tugatadi:
print(extract(download_contents("https://raw.githubusercontent.com/missing-semester/missing-semester/refs/heads/master/_2026/development-environment.md")))
Ichki chat (Inline chat)
Block ko’rnishini ajratib olib sun’iy intellekt modelidan ushbu joriy amallarni tahrir qilishni taklif qilish mumkin. Masalan aytaylik siz har qanday qatorlarni to’g’rilamoqchisiz.
Davomi sifatida ko’rsak biz requests o’rniga boshqasini ishlata qolamiz. Satrni tanlaymiz va shunday yozamiz:
use built-in libraries instead
Model shuni beradi:
from urllib.request import urlopen
def download_contents(url: str) -> str:
with urlopen(url) as response:
return response.read().decode('utf-8')
Dasturlash agentlari (Coding agents)
Bular chuqur ravishda Agentic dasturlash bo’limida o’rnatilgan.
Tavsiya qilinadigan dastur
Mashxur IDE kengaytmalar orasidan GitHub Copilot yoki Cursor ni ayta olamiz. Talabalar uchun GitHub platformasida talabalik va ustozlar uchun bepul beriladi. Bu joy uzluksiz integratsiya qilinadigan muhit.
Kengaytmalar va boshqa IDE funksiyalari
Bu muhitlarni aynan kengaytmalar (extensions) kuchaytirib beradi. Va ularga o’xshagan asosan qilinadigan ishlarga oqimning VS Code kengaytmalar ommabopligi kiritilgan.
- Dasturlash muhiti konteynerlari: VS Code da saqlanadigan o’rnatma va boshqalr hammasi bor. Shuningdek konteynerlarda kodni yetkazish yaxshi yorilib berilgan.
- Masofaviy dasturlash (remote serverlar) asosida ishlar (Masofaviy SSH) ko’rsatib o’tilgan va bu orqali masalan GPU li katta qutulishli qismlarga kirishishingiz mumkin.
- Hamkorlikda (collaborative) tahrirlash kabi bir vaqtni ichida ishlash qismi ham plagin tufayli ta’minlanadi, masalan Live Share.
Mashqlar
- Barcha dasturlaringiz va ish instrumentlaringiz, masalan, fayllaringiz yoki shell, ichida Vim rejimini o’rnating, hamma tahrirlashda shundan bir oy davomida foydalaning. Agar nimadir sizni ko’proq qiynamoqchi bo’lsa, uni internet orqali tekshirish mumkin.
- VimGolf platformasidagi challlenjelarni bajaring.
- O’zingiz kiritadigan loyihalar uchun qandaydir kengaytma o’rnating. U ishlashini bilish misol masalan bog’lanishlarga (dependencies) o’tib ko’ring. Agar kodingiz yo’q bo’lsa buni mana bunday ochiq kodli base ustida qilshingiz mumkin (misol, mana buni).
- O’zingiz qiziqqan biror IDE kengaytmasi orqali shug’ullaning o’rganing.
CC BY-NC-SA asosida litsenziyalangan.