69
1.4-§. Predmetga yoʻnaltirilgan Python dasturlash tili modullarining
klassifikatsiyasi
Predmetga yoʻnaltirilgan dasturlash tillari (PYDT) (inglizcha
domain-
specific programming language, domain-specific language, DSL) — bu yuqori
darajali abstraksiyalashga ega boʻlgan dasturlash tillari boʻlib, ma’lum bir sohaga
tegishli masalalar uchun dastur ishlab chiqishning qudratli vositasi sanaladi va oʻzi
hal qilishi mumkin boʻlgan masalalar sinfi xususiyatlarini aks ettiradi. Bunday
dasturlash tillari ma’lumotlarni yigʻish, saqlash, qayta ishlash va uzatishda ma’lum
bir sohaga oid atama va qoidalardan foydalanadi.
Odatda, PYDT Java, Pascal yoki C++ kabi umumiy maqsadlarga xizmat
qiluvchi dasturlash tillari kabi murakkab boʻlmaydi. Bunday dasturlash tillari
qoʻllanish sohasi boʻyicha yetakchi mutaxassislar bilan birgalikda ishlab chiqiladi
va modullardan foydalanishni nazarda tutadi.
Modul soʻzini qoʻllanish sohalariga bogʻliq ravishda turlicha talqin qilish
mimkin. Jumladan, bu tushunchani V. Ojegov quyidagicha ta’riflaydi [III.43]:
“modul - texnik qurilmalarda mustaqil biror vasifani bajaruvchi murakkab
injenerlik yechimidir”.
Dasturlash tillari haqida gap borganda, bu tushunchani “har biri mustaqil
boʻlgan va kichik bir masalani toʻla hal qilishga moʻljallangan usul va funksiyalar
kutubxonasi” tarzida talqin qilinadi. Bundan koʻrinib turibdiki, har bir modul katta
sondagi usul va funksiyalarni oʻz ichiga olishi mumkin. Modulning u yoki bu
komponentasidan foydalanishga toʻgʻri kelganda, ehiyojga koʻra parametrlarni
koʻrsatgan holda tegishli usul yoki funksiyaga murojaat qilish kifoya. Nazariy
jihatdan moduldagi usul va funksiyalarning soni chegaralanmagan.
Odatda, kattagina qismi modullardan iborat boʻlgan dasturlash tillaridan
foydalanish uchun yuqori malaka talab qilinmaydi, boshqacha aytganda, dastur
ishlab chiqish uchun dasturi ishlab chiqilayotgan masala sohasi boʻyicha yetarli
bilimlarga ega boʻlish hamda dasturlash boʻyicha boshlangʻich koʻnikma va
malakalarning shakllangan boʻlishi kifoya.
70
PYDT dan foydalanish bir qator afzalliklarga ega:
dastur ishlab chiqish jarayoninig kattagina qismi tayyor modullardan
foydalanish evaziga yengillashadi;
dasturchilarni bir xildagi mayda amallarni takror va takror keltirishdek
samarasi kam amallarni yozishdan xalos qiladi;
masala algoritmini ishlab chiqish mantiqan loyiha tarzida ishlab chiqish
imkoniyatining mavjudligi evaziga qulay shaklga keladi;
dastur ishlab chiqishning ayrim bosqichlari samarali tashkil qilinishi
mumkin;
hal qilinayotgan muammo sohasi boʻyicha qabul qilingan atama va
qoidalardan foydalanishga ruxsat beradi;
dasturchi va soha mutaxassislari oʻrtasida integratsiyalarni oʻrnatadi;
dastur kodini tahrirlash (otladka qilish) jarayonini osonlashtiradi;
kodni oʻqish, tushunish va tahlil qilishni yengillashtiradi;
dasturiy mahsulot sifatini oshiradi, xatoliklarni kamaytiradi.
PYDT da yozilgan ilova (DSL) kodlari hamda an’anaviy kodlarni
uygʻunlashtirishning ikkita usuli mavjud:
a)
DSL-kod va an’anaviy kodlarni alohida fayllarda saqlash. Buning
oqibatida DSL-kod kodlarning avtomatlashtirilgan generatori yordamida an’anaviy
tillardan biriga oʻgiriladi yoki bajarish uchun dastur tomonidan murojaat qilinadi.
Bunday yondoshuvdan foydalanadigan dasturlash tillarni tashqi DSL deb ham
ataladi. Bunga namuma sifatida SQL tilini keltirish mumkin;
b)
DSL-kod va an’anaviy kod bitta faylda saqlanadi va bu holda
uygʻunlashish yaxshilanadi. DSL kodlar asosiy tilning grammatikasi va parseridan
1
foydalanadi va uning ichki imkoniyatlarini kengaytiradi. Bunday jarayonlarni
tavsiflash uchun “ichki DSL” atamasi qoʻllaniladi.
Dasturiy ta’minot ishlab chiqishda bitta muayyan dasturlash tilidan emas,
balki, joriy masala uchun eng qulay boʻlgan dasturlash tilidan foydalanish gʻoyasi
1
Parsing bir shakldagi ma’lumotlarni (masalan, HTML-fayllarni) amalda qoʻllash uchun
qulayroq shaklga oʻtkazish imkonini beradi.
71
PYDT ning shakllanishiga olib keldi. Dasturchilarning oʻz amaliyotlarida
uchraydigan tipik masalalar uchun xususiy DSL-kodlarni ishlab chiqishi va buning
evaziga dasturlash tili imkoniyatlarini kengaytirishi bu jarayonda munim ahamiyat
kasb etadi.
PYDT atamasi ilk marotaba 2004 yilda S. Dmitriyev (JetBrains
kompaniyasining asoschisi va prezidenti) tomonidan “mashinaga yoʻnaltirildan
dasturlash tili” shaklida taklif qilingan. Bunday yondoshuvlar 2005 yilda Ch.
Simonining “mental dasturlash” shakidagi va M. Faulerning “Tilli vosita: tillarning
predmet sohasidagi yangi hayoti” kabi ilmiy ishlarida ham davom ettirildi.
Lisp DSL-dasturlash imkoniyatlari kiritilgangan ilk umumiy maqsadlarga
moʻljallangan dasturlash tili hisoblanadi.
Muayyan sohaga moʻljallangan va metadasturlash (boshqa dasturlarni ishlab
chiqishga moʻljallangan dasturlar) paradigmalari bilan boyitilgan dasturlash tillari
dasturiy ta’minot ishlab chiqishning samarali vositasi hisoblanadi va ulardan
bugungi kun dasturchilik amaliyotida keng foydalaniladi. Bunday tillar turli
dasturlash paradigmalarini qoʻllab-quvvatlasada, odatda, an’anaga koʻra ularni eng
ustuvor paradigmasi nomi bilan atash qabul qilingan.
Umuman olganda, zamonaviy dasturlash tillarini qoʻllanish sohalariga koʻra,
quyidagi guruhlarga ajratiladi:
– tasvirli bilan ishlash (sxemalarni maxsus muharrir yordamida “chizish”);
videotasvirli (videotasvirlar ustida turli amallar bajarish);
ovozli (ovozlarni qayta ishlashga moʻljallangan muharririlar);
ma’lumotlar bazalarini boshqaruv tizimlari;
– matnli (biror formal tilda matn yozish - dasturlash);
– statik – dasturchi sxema elementi yoki dastur parchasini yozish tartibi
muhim boʻlgan tillar;
– dinamik – tartib muhim boʻlgan tillar (masalan, Geometer’s Sketchpad);
PYDT larni ishlab chiqishning quyidagi usullari mavjud:
– ommaviy dasturlash tillarini (masalan, C#, Java, Python, MathCad va h.k.)
shu til yordamida predmetga yoʻnaltirilgan yangi kutubxonalarni yaratish evaziga
72
kengaytirish;
– mavjud tizimlarni PYDT ni yaratish uchun qoʻllash (masalan, Microsoft
uchun DSL, yoki JetBrains uchun Meta Programming System – chizilgan tasvirli
chizmalar asosida kodlarni generatsiya qilish mumkin);
– tilning sintaktik tuzilmalarini tahrirlash mumkin boʻlgan dasturlash
muhitlari (kompilyatsiya qilish jarayonini ma’lum bor sohaga moslash). Masalan,
.NET kompilyatorlari uchun Phoenix muhiti);
– xususiy dasturlash tilini ishlab chiqish.
Bugungi kunda PYDT sifatida Python dasturlash tili borgan sari ommalashib
bormoqda. Bu bejizga emas. Chunki, Python dasturlash tili umumiy buyruqlar
tizimidan tashqari, 250 ga yaqin ichki va 150 ga yaqin tashqi modullarni qamrab
olgan boʻlib, dasturchilarga yangi ilovalarni qulay, sodda, tez, arzon, tejamkor va
belgilangan muddatlarda ishlab chiqish imkonini beradi. Shu ma’noda, uni modulli
dasturlash tili deb ham talqin qilish mumkin. Ammo, Pythonning umumiy soni 400
ga yaqin modullarining har biri muayyan sohaga mansub boʻlgan bir qator tipik
masalalarni hal qilishga qaratilgani hamda shu sohaga tegishli atama, tushuncha va
qonuniyatlardan foydalangani tufayli, uni predmetga yoʻnaltirligan dasturlash tili
(PYDT) deb hisoblash mantiqan toʻgʻri boʻlar edi.
Python dasturlash tilida ilovalarni ishlab chiqish jarayonida uning mavjud
barcha vositalaridan toʻliq foydalanish imkoniyatiga ega boʻlish uchun bir qator
savollarga javob topish talab qilinadi:
1.
Python tili qanday ichki va tashqi modullarni oʻz ichiga oladi?
2.
Har bir modul qaysi predmet sohasiga xizmat qiladi?
3.
Har bir modul qanday usul va funksiyalarni oʻz ichiga oladi?
Dastlabki ikkita savolga javob berish uchun Pythom modullarini
sinflashtirish talab qilinadi. Uchinchi savolga esa dasturchilar soha va modul nomi
ma’lum boʻlgani uchun, ehtiyojariga koʻra osongina javob topa oladilar.
Predmetga yoʻnaltirligan dasturlash nuqtai-nazaridan sinflashtirish
yuzasidan olib borgan tahlillarimiz Python dasturlash tilining ichki modullari 22 ta
sohaga mansub oid tipik masalalarni qamrab olganini koʻrsatdi. Modullarni
73
sinflashtirishda D. Xellman “Python 3 ning standart kutubxonalari” [III.67] nomli
kitobi, pypl.org [IV.9], kite.com [IV.29] saytlari va IDLE ning yordam tizimida
bayon etilgan ma’lumotlar asosiy manbalar sifatida foydalanildi.
Python tili standart modullarini sinflashtirish uchun D. Xellman taklif qilgan
gʻoyalar asos sifatida qabul qilindi. D. Xellman oʻz kitobida 117 ta modullarni
tahlil qilib, ularni 17 ta sinfga ajratgan va har bir sinfga kirgan usul va
funksiyalarni bayon etgan. Bu sinflar shaxsiy tahlillar asosida qoʻshimcha 130 ga
yaqin ichki modullar hisobiga boyitildi, qoʻshimcha 5 ta sinf shakllantirildi.
Sinflashtirish natijalari 1.4.1-jadvalda oʻz aksini topgan.
Dostları ilə paylaş: |