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

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.

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.

Tanlash (Selection)

Visual rejimlar:

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.

Sanoqlar (Counts)

Siz otlar va fe’llarni marta (count) soni yordamida birlashtirishingiz mumkin va bu harakat bir necha bor takrorlanadi.

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.

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:

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

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:

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.

Mashqlar

  1. 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.
  2. VimGolf platformasidagi challlenjelarni bajaring.
  3. 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).
  4. O’zingiz qiziqqan biror IDE kengaytmasi orqali shug’ullaning o’rganing.

Sahifani tahrirlash.

CC BY-NC-SA asosida litsenziyalangan.