Deklarativ dasturlash
bu dasturiy ta'minot qanday amalga oshirilishini aniq
belgilashdan ko'ra, dastur nimani amalga oshirishi kerakligini belgilaydigan
kompyuter dasturlash paradigmasi. Ushbu yondashuv tabiiy ravishda rasmiy
mantiqiy tizimlarning dasturiy ta'rifiga mos keladi va ba'zi bir parallel ishlov berish
dasturlarini dasturlashni soddalashtirish foydasiga ega.
Obyektga yo’naltirilgan dasturlash yoki OYD – dasturlarni haqiqiy
hayotiylikka asoslangan holdagi dasturlash usulidir. OYD ning protsedurali
dasturlash tillari (masalan, Pascal, Basic, Fortran) dan asosiy farqi shundaki, OYD
asosan obyektlarga asoslangan holda ishlasa, protsedurali dasturlash tillari asosan
funksiyalarga asoslangan bo’ladi, ya’ni bu usuldagi dasturlashda har bitta
buyruqlar qadamma-qadam bajarilib boriladi.
Class
– OYDning markazi hisoblanadi va u har xil kodlar, ma’lumotlar va
shu ma’lumotlar qay tarzda o’zgarishini ifodalovchi hususiyatlar saqlanadi.
Boshqacharoq qilib aytadigan bo’lsak hayotiy obyektlarning qanday faoliyat
yuritishi, nimalardan iborat ekanligi, qanday hususiyatlarga ega ekanligini
tavsiflovchi kichik bir hujjat sifatida qarash ham mumkin.
Class o’z ichiga o’zgaruvchilar va metodlar(funksiyalar) hamda qiymati
o’zgarmaydigan konstantalarni oladi. Yana shuni ham ta’kidlash kerakki, har bitta
klass bitta o’zgaruvchi tipi bo’lib ham hizmat qiladi. Xuddi Integer, String yoki
boshqa tiplar kabi har bir class ham ma’lum bir tip sifatida qaralishi mumkin.
Obyekt–
bu class bilan farqli tushuncha xisoblanadi. Obyekt biz yozgan
klassimizdagi har xil qoidalarga bo’ysunadigan ma’lumot bo’lib, u tezkor xotirada
saqlanadi, class esa qattiq diskda saqlanadi. Har bir yasalgan obyekt tezkor
xotiraning ma’lum bir yacheykalariga joylashadi.
1.Dasturlardan foydalanib, biror ish bajarish va shu orqali natija olish,
unchalik qiyin jarayon emas. Bir marotaba ko‘rib olgan inson, keyingi safar o‘zi
bajara oladi. Ko‘pchilik adashtiradigan narsa, bu foydalanuvchi dasturchi
deyilmaydi, faqatgina dastur foydalanuvchisi bo‘ladi xolos. Dasturchi,
foydalanuvchilar foydalanishi uchun dastur yaratadi va bu jarayon juda murakkab
hisoblanadi.
Dasturchilik bilan shug‘ullanishni endi boshlagan yoshlar ko‘p qiyinchiliklarga
duch kelishadi. Bu qiyinchiliklar asosan terminlarning tushunmasligidan kelib
chiqadi. Bu maqolamda dasturlashning eng kerakli termini hisoblangan
interpretator va kompilyator haqida yozib o‘taman.
Dasturlash jarayonida dasturchi o‘z dasturini yaratish uchun xar hil turdagi
kodlar yozadi. Kodlarnining qanday bo‘lishi qaysi dasturlash tilidan foydalanib,
dastur tuzishga bog‘liq bo‘ladi. Dasturlash tillaridan C, C++, Java,… . Yozilgan
kodlarni kompyuter tushunmaydi, kompyuter tushunishi uchun uchun bu kodlarni
kompyuter tushunadigan tilga o‘zgartirish lozim. Mana shu vaziyatda yuqoridagi 2
ta termin kerak bo‘ladi(kompilyator yoki interpretator).
Kompyuter faqatgina raqamli kodlarni tushunadi, ya’ni 0 yoki 1. Bu 2 son
orqali dastur tuzish juda qiyin hisoblanadi(manimcha bunday sonlar orqali dastur
tuzuvchilar sanoqli bo‘lsa kerak). Shuning uchun, insonlar tushunadigan qilib
dasturlash tillari yaratilgan. Ketma-ketlikni tushungandursiz, dasturchi dasturlash
tillari orqali kodlar yozadi va bu kodlar kompyuter tushunadigan 0 va 1 sonlariga
almashtiriladi va dastur kompyuterda ishlaydi, bu jarayonni kompilyator yoki
interpretator amalga oshirib beradi.
2.Interpretator — ham dastur ham jihoz ko‘rinishida bo‘lishi mumkin. Bu ham
kompyuter tiliga o‘zgartirib berish vazifasini bajaradi, faqatgina ishlash
texnologiyasi boshqacharoqdir. Interpretator, dasturlash tilida yozilgan kodlarni
ketma — ket o‘qib, mashina tiliga o‘zgartirib boradi. Xatolik paydo bo‘lsa, o‘sha
zahoti dasturchiga ma’lum qiladi. Bu ketma — ketlikda o‘zgartirish,
kompilyatorga nisbatan sekinroq amalga oshiriladi(ba’zi holllarda kompilyatorga
qaraganda 50 barobar sekin). Dastur natijasini ko‘rish uchun, har safar kodlarni
interpretatordan o‘tkazish kerak bo‘ladi(kompilyatorga o‘xshab bir marotaba
obyekt kod yaratib qo‘yib, keyin har doim ishlatishning iloji yo‘q). Bundan
ko‘rinib turibdiki, interpretator asosan saytlar, umumiy holda veb dasturlashda
ishlatiladi. Biror saytning yuklanishi jarayoni uzunligi, interpretatorda o‘zgartirish
amalga oshirilishi bilan tushuntirilishi mumkin. Interpretator ishlatadigan
dasturlash tillariga PHP, JavaScript, JScript, Basic,… misol bo‘la oladi.
Bu ikki termin umumiy holda translyator deyiladi, ya’ni o‘zgartirgichlardir.
Biror proyektlar qilganda bu 2 o‘zgartirgichlar birgalikda ham ishlatilishi mumkin.
Biror dasturlash tili bilan jiddiy shug‘ullanmoqchi bo‘lsangiz, dastlab siz
yozadigan kodlar qay tarzda kompyuter tiliga o‘zgartirilishini o‘rganib oling. Bu
dasturlashning asosi hisoblanadi.
3.Translyatorlar: Yuqori darajali (C, C++, Java, Phyton, …) yoki quyi darajali
(assembly tillar) dasturlash tillarida yozilgan kodlarni mashina tiliga o'tkazish
uchun ishlatiladigan programmalar — translyatorlardeb ataladi.
Translyatorlarning 3 xil turi mavjud:
Assembler
Kompilyator
Interpretator
Assembler bu quyi darajali dasturlash tillarida yozilgan kodni mashina tiliga
o'giruvchi translyatorlardir. Bu jarayonlar assmblatsiya (assembling) deb
nomlanadi.
Kompilyator va interpretatorlar esa yuqori darajli dasturlash tillarida yozilgan
kodlarni mashina tiliga o'giruvchi translyatorlardir. Bu jarayonlar kompilatsiya va
interpretatsiya deb nomlanadi.
4.Kompilyator — murakkab dasturdir, dasturlash tilida yozilgan barcha
kodlarni birdaniga obyektli kodga o‘zgartirib beradi. Obyektli kodni yana ikkilik
kod yoki mashina kodi deb ham atashadi. Keyinchalik bu obyektli kod
kompyuterda to‘g‘ridan to‘g‘ri ishlatilishi mumkin bo‘ladi. Dasturlash tillarida
yozilgan kodlar bu obyektli kodga ta’sir qilmaydi. Obyektli kodni o‘zgartirish
uchun esa, qaytadan kompilyatsiya qilinib obyektli kod o‘zgartiriladi. Natija
bajariladigan, .yexe ko‘rinishidagi fayl bo‘ladi. Bu faylni bloknotda ochib
o‘zgartirib bo‘lmaydi, ya’ni bu fayl tayyor dastur hisoblanadi. Kompilyatorning
kamchiligi sifatida, dasturlash tilidagi ma’lum bir qatorlani alohida tekshirish
imkoniyati yo‘qligidir, uning uchun obyektli kod yaratib, uni ishga tushurish lozim
bo‘ladi, ortiqcha ish bo‘lib qoladi. Undan tashqari ba’zi kompilyatorlar bir
dasturlash tilidan, ikkinchisiga ham o‘zgartirib berishi mumkin. Kompilyator
ishlatadigan dasturlash tillariga C, C++, Delphi larni misol qilib keltirish mumkin.
5. Yuklagich––bu tizim programmasi bo‘lib, u obyekt programmani mashina
xotirasiga yuklash vazifasini amalga oshiradi. Aksariyat yuklagichlar bundan
tashqari ko‘chirish va bog‘lanishlarni ham amalga oshiradi. Odatda bog‘lash
funksiyasi yuklash va ko‘chirish vazifalaridan ajratiladi. Bog‘lash – bog‘lash
programmasi (bog‘lash taxriri) orqali, ko‘chirish va yuklash––yuklagich orqali
bajariladi. Translyatorlar (assembler va komplyatorlar) har bir konkret tizimda
biror standart shakldagi obyekt kodlarni yaratadilar. Shu sababli yuklagich va
bog‘lash programmalari uchun programma matni qaysi tilda yozilgani ahamiyatsiz.
Bu ma’ruzada yuklagichning asosiy vazifalaridan biri bo‘lgan obyekt
programmani operativ xotiraga yozish va uning bajariluvchi birinchi adresiga
boshqaruvni uzatishni ko‘rib chiqamiz. Yuklagichlar ikki turga bo‘linadi: absalyut
va bog‘lovchi yuklagichlar. Soddalashtirilgan o‘quv mashinasi uchun yozilgan
assembler programmasini xotiraga yuklash va unga boshqaruvni berish uchun
absolyut yuklagich to‘g‘ri keladi. SO‘M uchun yozilgan programmaga mos obyekt
programma qo‘yidagi ko‘rinishga ega bo‘lsin:
H^COPY^0010000^00107A
T^001000^1E^141033^482039^001036^281030^301015^482061^3C1003^00102
A^0C1039^00102D
T^00101E^15^10C1036^482061^081033^4C0000^454F46^000003^ 000000
T^002039^1E^041036^001030^E0205D^30203F^D8205D^281030^302057^5490
39^2C205E^38203F T^002057^1C^101036 ^4C0000^F1^0010000^
041030^E02079^302064^509039^DC2079^2C1036 T^002073^07
^382064^382064^4C0000^05
E^001000
Absolyut yuklagichning ishi nisbatan sodda. Barcha ish bir o‘tishda amalga
oshiriladi: birinchi navbatda berilgan programma to‘g‘riligi tekshiriladi. Masalan,
programmaning operativ xotiraga sig‘ishi yoki yo‘qligi, buning uchun bosh qism
yozuvi o‘qiladi. Keyin navbat bilan programma tanasi yozuvlari o‘qilib,
ko‘rsatilgan adres bo‘yicha joylashtiriladi va nihoyat, tugallash yozuvi o‘qilgach
programmaning boshlang‘ich adresiga boshqaruv uzatiladi.
Bog‘lovchi yuklalich algoritmlari va jadvallari. Bog‘lovchi yuklalich
algoritmi absalyut yuklagich algoritmiga nisbatan murakkab. Chunki unda obyekt
programmalar o‘rtasida bog‘lanish tashqi nomlarda ko‘rsatgichlarni aniqlashga
bog‘liqdir. Bu ko‘rsatgichlar tashqi nomlarga adreslar aniqlangandan keyingina
qiymat qabul qiladi. Shu sababli bog‘lovchi yuklagich xuddi assemblerga o‘xshab
ikkita o‘tishda amalga oshiriladi. Birinchi o‘tishda tashqi murojaatlar uchun
adreslarni aniqlaydi, ikkinchi o‘tishda yuklagichni, ko‘chirish va bog‘lashlarni
bajaradi. Bog‘lovchi yuklagich uchun tashqi nomlar jadvali –ESTAB zarurdir. Bu
jadval SYMTABga o‘xshash bo‘lib, unda nomlar va tashqi marojaatlar adreslari
(barcha boshqaruv seksiyalari uchun). Boshqa muhum o‘zgaruvchilar –
PROGADDR (programma yuklagich adresi) va CSADDR (boshqaruv seksiyasi
adresi). PROGADDR – operativ xotiradagi bog‘lanuvchi programma yuklanishi
zarur bo‘lgan programma boshlanish adresidir. Yuklagich bu adresni operatsion
tizimdan oladi. SSADDR-ayni paytda yuklagich tomonidan qayta ishlanayotgan
boshqaruv seksiyasining boshlanish adresi. Bu adres boshqaruv seksiyadagi borcha
nisbiy adreslarga qo‘shiladi. Bog‘lovchi yuklagich birinchi o‘tishda obyekt
programmaning faqat bosh qism yozuvi va aniqlovchi yozuvni qayta ishlaydi.
Birinchi boshqaruv seksiyasi uchun PROGADDR boshlang‘ich adres bo‘ladi.
Boshqaruv seksiyasi yozuvlaridan o‘qilgan nomlar (seksiya nomi , aniq yozuvdan
nomlar) ESTABga qiymatlari bilan kiritiladi. Bu adreslar aniqlovchi yozuvdan
qiymatlar CSADDR ga qo‘shishdan xosil bo‘ladi. Tugallash yozuvini o‘qigandan
keyin boshqaruv seksiya uzunligi (CSLTH) CSADDR ga qo‘shiladi va bu qiymat
keyingi boshqaruv seksiyasi uchun boshlang‘ich adres xisoblanadi. Birinchi
o‘tishdan keyin ESTAB borcha tashqi nomlar va ular qiymatiga ega bo‘ladi.
Programmani yuklash, ko‘chirish va bog‘lash amalda ikkinchi o‘tishda qilinadi.
CSADDR o‘zgaruvchisi ayni paytda operativ xotiraga yuklanayotgan boshqaruv
seksiyasining boshlanish adresi bo‘ladi. Programma tanasining navbatdagi yozuvi
o‘qilganda, undan boyekt kod ko‘rsatilgan adresga yuklanadi (bu adresga
CSADDR qiymati qo‘shiladi). Modifikator yozuv uchraganda modifikatsiyada
ishlatilgan nom ESTAB dan qidiriladi va uning qiymati ko‘rsatilgan adresga
qo‘shiladi yoki ayriladi. Yuklagich o‘z ishini yuklangan programmaga boshqaruvni
berish bilan tugallaydi.
Yuklagichning mashinaga bog‘liqmas xususiyatlari
Bu
bo‘limda
yuklagichning
mashinaga
bog‘liqmas
tomonlarini
kutubxonalarning programmalarini izlash (standart programmani foydalanish),
tashqi nomlarni o‘zgartirish va yo‘qotish, tashqi nomlarni avtomatik qayta ishlash
va programmalarni overley yuklash masalalarini ko‘ramiz.
Kutubxonalarda avtomatik izlash. Aksariyat bog‘lovchi yuklagichlar
yuklanayotgan programma kutubxonalardan qismprogrammalarni avtomatik
ravishda qo‘shish imkoniyatini beradi. Bu xolda programma tuzuvchidan faqat
bunday programmalarni nomlarini tashqi nomlar ro‘yxatiga ko‘rsatish talab
qilinadi. Bu mexanizmga kutubxonali izlash deb ataladi. Kutubxonali izlashni
amalga oshirish uchun yuklagichlar malumot oqimida aniqlanmagan tashqi nomlar
ro‘yxatiga ega bo‘lishi kerak. Buning uchun aniqlovchi yozuvdagi nomlar ularning
adresi aniqlanmasdan oldin ESTAB jadvaliga kirgiziladi va maxsus belgi bilan
belgilanadi. Nom qiymati (adresi) uchraganda, bu qiymat ESTABga kiritiladi va
shu nom to‘liq aniqlangan xisoblanadi.
Birinchi o‘tishdan keyin ESTABdan qiymatlari aniqlanmagan nomlar hal
qilinmagan tashqi murojaatlar hosil bo‘ladi. Ularni hal qilish uchun yuklagich
berilgan barcha kutubxonalarni qarab chiqish kerak (kutubxonalar malumot
oqimining bir qismi sifatida qaraladi). Misol tariqasida SQRT funksiyasiga
muroljaatni olishimiz mumkin. Kutubxonalarni tashkil qilishda maxsus fayl
tuzulmasidan foydalaniladi. Bu tuzilish katalog (direktoriyaga) ega bo‘lib, unda
borcha fayllar nomlari va ularning disk faylida joylashgan adreslari bo‘ladi. Ayrim
operatsion tizimlar doimiy kutubxonalar katalogiga ega bo‘lib, bu hol izlash
jarayonini tezlashtiradi.
Yuklash jarayonini boshqarish. Yuklagichlar yuklash jarayonini o‘zgartirish
imkonini beruvchi boshqaruv parametrini ishlatishi mumkin.
Boshqaruv parametrlarini berish uchun mahsus boshqaruv tilidan
foydalaniladi. Buruqlar .
INCLUDE
( )- bu buyruq
yuklagichga ko‘rsatilgan programmani kutubxonadan o‘qish va uni kiruvchi
oqimda malumot sifatida ishlatishni bildiradi. Navbatdagi buyruqlar BS yoki tashqi
nomlarning ro‘yxatdan chiqarish va tashqi nomlarni o‘zgartirish imkoniyatini
beradi:
DELETE –– malumotlar oqimida ko‘rsatilgan seksiyani
qarab chiqmaslik (hisobdan chiqish) buyrug‘i CHANGE <1-nom>, <2-nom>-<1 –
– nom>ni <2- nom>ga almashtirish. Misol uchun, COPY, WRREC, RDREC BS
bo‘lgan programmani ko‘raylik. Bu uchta BS bita faylda (kutubxonada) joylashgan
bo‘lsin. Faraz qilaylik , programma tuzuvchi COPY programmada RDREC va
WRREC BS o‘rniga UTLIB xizmatchi programmalar to‘plamidan READ va
WRITE qism programmalarini ishlatishmoqchi. Buning uchun programma matnini
o‘zgartirish qilish yoki yuklagichga quyidagi mahsus buyruqlar ketma-ketligi
berilishi mumkin:
INCLUDE READ (UTLIB) INCLUDE RWITE (UTLIB) DELETE RDREC,
WRREC, CHANGE RDREC, READ CHANGE WRREC, RWITE
LIBRARY ––qo‘shimcha kutubxonalarni oqimga kiritish
buyrug‘i.
Bu kutubxonalar standart kutubxonalardan oldin qaraladi.
NOCALL- yuklagichga ro‘yxatdan tashqi nomlar hal
qilinmay qolishi kerak ekanligini bildiradi. Bu buyruq operativ xotirani tejaydi va
yuklagich ishini yengillashtiradi.
Programmalarning overley struktukasi. quyidagi rasmda 11 boshqaruv
seksiyasidan tashkil torgan overley strukturali programmasining sxemasi (daraxti)
va seksichlar uzunliklari keltirilgan. Bu yerda Ag‘ildiz BS, V,S yoki DFE
seksiyalarini chaqirishi, V seksiya FFG yoki H chaqirishi mumkin. DFE yoki FFG
birgalikda ishlaydigan seksiyalarni belgilanishi. Daraxt tugunlariga segmentlar
deyiladi. Ildiz segment programma ish boshlashidan oldin yuklanadi va
programma tugaguncha xotirada qoladi. Boshqa segmentlar ularga murojaat
bo‘lgandagina xotiraga yuklanadi. Bir vaqtda operativ xotiraga yuklangan
segmentlar aktiv segmentlar deyiladi. Misol uchun N BS bojarayotgan bo‘lsin , N
ni V chaqiradi. V ni A , demak A, V, N segmentlari aktiv deyiladi.
Bir sathdagi segmentlar bir vaqtda bajarilmaydi, shu sababli ular
xotiraning ayni bir soxasidan foydalanishi mumkin. Agar boshqaruv birorta
sigmentga berilsa, u o‘zi bilan bir sathdagi segmentning operativ xotiradagi
o‘rnini egallaydi, natijada programma bajarilishi uchun ishlatiladigan operativ
xotira programma umumiy xajmidan kam bo‘ladi. Overley prinsipidan
foydalanishning tub moxiyati ham shundadur. Overley strukturasi programma
yuklagich buyorug‘i yordamida beriladi.
SEGMENT (< boshqaruv seksiyasi >). Bu buyruq
segment nomini va unga kiruvchi BS ro‘yxatini aniqlaydi. Buyruqlar ketma –
ket joylashuvi ahamiyatlidir. Birinchi aniqlanadigan segment, keyingi
segmentlar “ota-bola” munosbatini aniqlaydi. PARENT buyruhiga ko‘rsatilgan
segmentlar uchun ota segment ekanligini bildiradi. Yuqorida overley
tuzulishini (daraxtni) aniqlovchi buyruqlar ketma-ketligi keltirilgan. Overley
programmalar uchun xotira taqsimoti ulardagi ota- bola shajaraviy holatiga
qarab taqsimlanadi. Overley programmalarning asosiy xususiyati ularda
xotiraga yuklanmagan programmaga murojaat qilishdadur.
Programma ishlash jarayonida segmentlarni xotiraga yuklashni maxsus
programma overley menedjeri amalga oshiradi. Bu programma alohida
boshqaruv seksiyasida (misol uchun OVLMGR) joylashadi. OVLMGR
programma strukturasi to‘g‘risidagi malumotlarga ega bo‘lishi kerak. Bu
malumotlar segmentlar jadvali SEGTAB bo‘ladi. SEGTABni yuklagich
yaratadi va o‘zak katalogining aloxida boshqaruv seksiyasi sifatida qo‘shib
qo‘yadi. SEGTAB programma segmentlar shajarasini va har bir segment uchun
ular kirish nuqtasini va SEGFILE dagi joylashuvi haqida malumot beradi.
Aktiv segmentga (SEG 2) murojaat
Aktiv bulmagan segmentga (SEG 6) murojaat
Bundan tashqari SEGTABda o‘zak segmentdan (A) tashqari segmentlar
uchun boshqaruvni uzatish soxasi bo‘ladi. Bu soxada kerakli segmentga
boshqaruvni uzatish buyruqlarini o‘z ichiga oladi.
Nazorat savollar
1.Til protsessorlarining asosiy turlari.?
2.Interpretatorning ishlash prinsipi?
3.Translyator haqida tushuncha?
4.Kompilyator haqida tushuncha?
5.Bog‘lovchi haqida tushuncha?
6.yuklagich haqida tushuncha?
1>
Do'stlaringiz bilan baham: |