12-dars: Abstraksiya minorasi
3-blokProtsessor9–12 darslar
Nega bu muhim
“Nega bu muhim” bo'limiga havola10-darsda uch qatorli oddiy ish uchun sakkiz qator assembler yozdingiz. Endi tasavvur qiling: Instagram millionlab qator koddan iborat. Assemblerda uni yozish — imkonsiz. Ammo protsessor faqat mashina kodini tushunadi. Qanday qilib?
Javob — abstraksiya minorasi: odam yuqori qavatda qulay tilda yozadi, maxsus dasturlar esa uni qavatma-qavat pastga, bitlargacha o’girib beradi. Bu dars blokning yakuni: siz minoraga to’liq bir qarash tashlaysiz — eng tepadan eng pastgacha.
Bu darsdan keyin siz
- yuqori va past darajali til farqini aniq misolda ko’rsata olasiz
- kompilyator nima qilishini tushuntira olasiz
- bitta qator kod nechta buyruq va bitga aylanishini kuzatasiz
- “abstraksiya” so’zini shu moduldagi barcha qavatlar bilan bog’lay olasiz
Nazariya
“Nazariya” bo'limiga havolaUchinchi qavat: yuqori darajali til
“Uchinchi qavat: yuqori darajali til” bo'limiga havolayigindi = a + b — bu yozuvda registr ham, manzil ham, opkod ham yo’q. Faqat niyat: ikki sonni qo’sh. Qolgan ishni mashina o’zi hal qilsin.
yuqori darajali tilhigh-level language
Odamning fikrlash tarziga yaqin dasturlash tili: o’zgaruvchilar, ifodalar, funksiyalar. Python, JavaScript, C — shular jumlasidan. Protsessor tafsilotlari yashirilgan.
Yuqori til — qulaylik uchun to’langan soliq emas, aksincha: dasturchi xatosi kamayadi, kod boshqa protsessorlarga ham mos bo’ladi, million qatorli tizimlarni jamoa bo’lib yozish mumkin bo’ladi.
Kompilyator: qavatlar orasidagi tarjimon
“Kompilyator: qavatlar orasidagi tarjimon” bo'limiga havolaYuqori tildagi matnni mashina kodiga o’giruvchi dastur kompilyator deb ataladi. U har qatorni tahlil qiladi, o’zgaruvchilarga xotiradan katak ajratadi va buyruqlar ketma-ketligini yasaydi.
kompilyatorcompiler
Yuqori darajali tildagi dasturni mashina kodiga o’giruvchi dastur. O’zi ham dastur — bir paytlar uni ham kimdir assemblerda yozgan.
Diqqat qiling: yigindi = a + b bitta qator, lekin undan uchta buyruq chiqadi — yukla, qo’sh, saqla. Yuqori qavatda bir qadam, pastda uch qadam. Instagram’ning millionlab qatori — protsessorda milliardlab buyruq.
Minoraga to’liq qarash
“Minoraga to’liq qarash” bo'limiga havolaEndi butun modulni bir ustunga teraylik. Eng tepada — yigindi = a + b. Uni kompilyator buyruqlarga o’giradi. Buyruqlar — sonlar, sonlar — bitlar. Bitlarni darvozalar qayta ishlaydi, darvozalar tranzistorlardan, tranzistorda esa shunchaki tok bor yoki yo’q.
Har qavat pastkisining tafsilotini yashiradi: Python yozuvchisi registrni o’ylamaydi, sxema chizuvchi elektronlar fizikasini o’ylamaydi. Aynan shu yashirish tufayli bir odam hammasini bilmasa ham butun tizim ishlaydi.
Sinab ko’r
“Sinab ko’r” bo'limiga havolaBitta dastur uch darajada. Yuqori tildagi istalgan qatorni bosing — unga mos assembler buyruqlari va bitlar yonadi. Teskari yo’nalishda ham ishlaydi: bit qatorini bosib, u qaysi qatordan kelganini toping.
Abstraksiya minorasi: uch daraja
Istalgan qatorni bosing — unga mos qatorlar qolgan ikki darajada yonadi.
Bu simulyatorda bitta dastur uch darajada yonma-yon turadi: yuqori til (4 qator), assembler (8 buyruq) va mashina kodi (8 baytlik bitlar). Yuqori tilning bitta qatori assemblerda bir nechta buyruqqa aylanadi.
JavaScript'siz sinash: yigindi = a + b qatorini qo'lda assemblerga o'giring — nechta buyruq chiqdi? Keyin har buyruqni 10-darsdagi jadval bo'yicha songa aylantiring.
Yuqori tildagi to'rt qatorning har birini bosib chiqing.
- Yuqori darajali til niyatni yozadi, tafsilotni yashiradi
- Kompilyator uni mashina kodiga o’giradi: bitta qator → bir nechta buyruq
- Minora: Python → assembler → mashina kodi → darvozalar → tranzistorlar
- Har qavat pastkisini yashiradi — shu tufayli murakkablik boshqariladi
- Bit o’z ma’nosini bilmaydi: TOXTA va SON 0 — bir xil bitlar, har xil ma’no
O’zingizni sinang
“O’zingizni sinang” bo'limiga havola1Yuqori darajali tilning uch aniq afzalligini ayting.
Javobni ko'rish
Birinchisi: qisqalik — bitta qator o’nlab buyruq o’rnini bosadi. Ikkinchisi: tushunarlilik — o’zgaruvchi nomlari, ifodalar odam tilida. Uchinchisi: ko’chma — bitta kod turli protsessorlarda ishlaydi, har biriga o’z kompilyatori o’giradi.
2Simulyatorda 'a = 5' qatoriga nechta assembler qatori mos keldi va nega aynan shu?
Javobni ko'rish
Bitta: SON 5 (5-katak). Chunki bu qator hech narsa hisoblamaydi — kompilyator shunchaki “a” uchun katak ajratib, boshlang’ich qiymatini yozib qo’ydi. Harakat yo’q, faqat joy va qiymat.
3Kompilyator bilan 10-darsdagi 'yig'ish' (assemble) jarayonining farqi nimada?
Javobni ko'rish
Assembler yig’uvchisi birma-bir o’giradi: har mnemonika — aynan bitta mashina buyrug’i. Kompilyator esa ijodiy tarjimon: bitta qatordan bir nechta buyruq yasaydi, kataklarni o’zi taqsimlaydi, hatto kodni tezlashtirish uchun qayta ham yozadi.
4Nega TOXTA va SON 0 ning bitlari bir xil bo'lishi xato emas?
Javobni ko'rish
Chunki ma’no bitda emas, ishlatilishida. PC o’sha katakka kelsa — buyruq sifatida o’qiladi va dastur to’xtaydi. Boshqa buyruq o’sha katakdan ma’lumot olsa — bu 0 soni. Kontekst hal qiladi; xotira uchun ikkisi bir xil 8 bit.
5Abstraksiya qavatlari bo'lmasa, milliondan ortiq qatorli dastur yozish nega imkonsiz bo'lardi?
Javobni ko'rish
Har dasturchi bir vaqtda hamma tafsilotni — registr, manzil, takt, darvoza — boshida ushlashi kerak bo’lardi. Inson miyasi buncha detalni ko’tarmaydi. Qavatlar mehnatni bo’ladi: har kim o’z qavatida ishlaydi va pastga ishonadi.
Amaliy topshiriq
Bitta masalani uch darajada o’zingiz yozing. Masala: ikki son ayirmasini topish (masalan, 9 − 4).
1-daraja (yuqori til): 3–4 qator, o’zgaruvchilar bilan, xuddi simulyatordagidek.
2-daraja (assembler): 10-darsdagi buyruqlar jadvalidan foydalanib to’liq dastur yozing (ma’lumot kataklari bilan). Xohlasangiz Mini assemblerda ishlatib tekshiring.
3-daraja (bitlar): har assembler qatorini 8 bitga o’giring — yuqori 4 bit opkod, pastki 4 bit operand.
Oxirida ikki gap yozing: qaysi darajada yozish eng tez bo’ldi va qaysi darajada xato qilish eng oson?
Topshiriladigan natija: uch daraja yonma-yon yozilgan varaq + ikki gaplik xulosa.
Darsni belgilash uchun JavaScript kerak. Bu progressni saqlash uchun ishlatiladi — darslikning o'zi JavaScript'siz ham to'liq o'qiladi.