bilan qaysi uslublar ishlash uchun qulay-u, qaysinisi noqulay ekanini aniqlash oson
bo’lib bordi. OMY eng muvaffaqiyatli, vaqt sinovidan o’tgan uslublarni o’zida
samarali mujassam etadi.
Dastlab dasturlar kommutatsiya bloki orqali kompyuterning asosiy
xotirasiga to’g’ridan to’g’ri kiritilar edi. Dasturlar mashina tillarida ikkilik sanoq
sistemasida yozilar edi. Dasturlarni mashina tilida yozishda tez-tez xatolarga yo’l
qo’yilar edi, buning ustiga ularni tizimalashtirishning imkoni bo’lmagani tufayli
kodni kuzatib
borish amalda deyarli mumkin bo’lmagan hol edi.
Bundan tashqari, mashina
kodlaridagi dasturni tushunish g’oyat murakkab edi.
Protseduraviy yondoshuv. Shu vaqtgacha dasturlar berilgan ma'lumotlar
ustida biror-bir amal bajaruvchi protseduralar ketma-ketligidan iborat edi.
Protsedura yoki funksiya ham o’zida aniqlangan ketma-ket bajariluvchi buyruqlar
to’plamidan iborat. Bunda berilgan ma’lumotlarga murojaatlar protseduralarga
ajratilgan holda amalga oshiriladi.
Protsedura tillari dasturchiga axborotga ishlov berish dasturini pastroq
darajadagi bir nechta protseduraga bo’lib tashlash imkonini beradi.
Pastroq
darajadagi bunday protseduralar dasturning umumiy tuzilmasini belgilab beradi.
Ushbu protseduralarga izchil murojaatlar protseduralardan tashkil topgan
dasturlarning bajarilishini boshqaradi.
Dasturlashning
bu
yangi
paradigmasi
mashina
tilida
dasturlash
paradigmasiga nisbatan ancha ilg’or bo’lib, unga tuzilmalashtirishning asosiy
vositasi bo’lgan protseduralar qo’shilgan edi. Kichik funksiyalarni nafaqat
tushunish, balki sozlash
ham osonroq kechadi.
Strukturaviy dasturlashning asosiy g’oyasi «bo’lakla va hukmronlik qil»
prinsipiga butunlay mos keladi. Kompyuter dasturini masalalar to’plamidan iborat
deb qaraymiz. Oddiy tavsiflash uchun murakkab bo’lgan ixtiyoriy masalani bir
nechta, nisbatan kichikroq bo’lgan, tarkibiy masalalarga ajratamiz va bo’linishni
toki masalalar tushunishi uchun yetarli darajada oddiy bo’lguncha
davom
ettiramiz.
Misol sifatida kompaniya xizmatchilarining o’rtacha ish haqini hisoblashni
olamiz. Bu masala sodda emas. Uni qator qism masalalarga bo’lishimiz mumkin:
1. Har bir xizmatchining oylik maoshi qanchaligini aniqlaymiz.
2. Kompaniya xodimlari sonini aniqlaymiz.
3. Barcha ish haqlarini yig’amiz.
4. Hosil bo’lgan yig’indini kompaniya xodimlari soniga bo’lamiz.
Xodimlarning oylik maoshlari yig’indisini hisoblash jarayonini ham bir
necha bosqichlarga ajratish mumkin.
1. Har bir xodim haqidagi yozuvni o’qiymiz.
2. Ish haqi to’g’risidagi ma’lumotni olamiz.
3. Ish haqi qiymatini yig’indiga qo’shamiz.
4. Keyingi xodim haqidagi yozuvni o’qiymiz.
O’z navbatida, har bir xodim haqidagi yozuvni o’qish
jarayonini ham
nisbatan kichikroq qism operatsiyalarga ajratish mumkin:
1. Xizmatchi faylini ochamiz.
2. Kerakli yozuvga o’tamiz.
3. Ma'lumotlarni diskdan o’qiymiz.
Strukturaviy dasturlash murakkab masalalarni yechishda yetarlicha
muvafaqqiyatli uslub bo’lib qoldi. Lekin 1980-yillar oxirlarida strukturaviy
dasturlashning ham ayrim kamchiliklari ko’zga tashlandi.
Birinchidan, berilgan ma'lumotlar (masalan, xodimlar haqidagi yozuv) va
ular ustidagi amallar (izlash, tahrirlash) bajarilishining bir butun tarzda tashkil
etilishidek tabiiy jarayon realizatsiya qilinmagan edi.
Aksincha, protseduraviy
dasturlash
berilganlar strukturasini bu ma’lumotlar ustida amallar bajaradigan funksiyalarga
ajratgan edi.
Ikkinchidan, dasturchilar doimiy tarzda eski muammolarning yangi
yechimlarini ixtiro qilar edilar. Bu vaziyat go’yoki velosipedni qayta ixtiro qilishga
o’xshab ketar edi. Ko’plab dasturlarda takrorlanuvchi bloklarni ko’p martalab
qo’llash imkoniyatiga bo’lgan xohish tabiiydir. Buni radio ishlab chiqaruvchi
tomonidan priyomnikni yig’ishga o’xshatish mumkin.
Konstruktor har safar diod
va tranzistorni ixtiro qilmaydi. U oddiygina – oldin tayyorlangan radio detallaridan
foydalanadi xolos. Dasturiy ta’minotni ishlab chiquvchilar uchun esa bunday
imkoniyat ko’p yillar mobaynida yo’q edi.
Boshqa tomondan, protsedurali dasturlash koddan takroran foydalanish
imkonini cheklab qo’yadi. Shu narsa aniq bo’ldiki, protsedurali dasturlash usullari
bilan dasturlarni ishlab chiqishda diqqatni ma’lumotlarga qaratishning o’zi
muammolarni keltirib chiqarar ekan. Chunki ma'lumotlar
va protsedura ajralgan,
ma'lumotlar inkapsulyatsiyalanmagan. Bu nimaga olib keladi? Shunga olib
keladiki, har bir protsedura ma’lumotlarni nima qilish kerakligini va ular qayerda
joylashganini bilmog’i lozim bo’ladi. Agar protsedura ma'lumotlar ustidan
noto’g’ri amallarni bajarsa u ma'lumotlarni buzib qo’yishi mumkin. Har bir
protsedura ma’lumotlarga kirish usullarini dasturlashi lozim bo’lganligi tufayli,
ma’lumotlar
taqdimotning
o’zgarishi
dasturning
ushbu
kirish
amalga
oshirilayotgan barcha o’rinlarining o’zgarishiga olib kelar edi. Shunday qilib, hatto
eng kichik to’g’rilash ham butun dasturda qator o’zgarishlarni sodir bo’lishiga olib
kelar edi.