• Nazorat savollari
  • 3-mavzu: Dasturiy ta’miynot sathi. Mashina kodi, mnemakod va dasturlash tillari reja




    Download 179,9 Kb.
    Pdf ko'rish
    Sana28.06.2024
    Hajmi179,9 Kb.
    #266116


    3-mavzu: Dasturiy ta’miynot sathi. Mashina kodi, mnemakod va 
    dasturlash tillari 
     
    REJA: 
    3.1.
    Dasturiy ta’miynot sathi 
    3.2.
    Mashina kodi, mnemakod va avtokod 
    3.3.
    Quyi va yuqori darajadagi dasturlash tillari 
     
    Biz allaqachon kompyuterda faqat kompyuter buyruqlarida yozilgan 
    dasturlarni bajarishga qodir ekanini aytdik. Biroq, mashina buyruqlar dasturiy juda 
    qiyin. Avvalo, buyruqlar tuzilmasi ko'pincha foydalanuvchi o'z muammolarini hal 
    qilish uchun algoritmlarni tasvirlashni rejalashtirayotgan ishlarning tuzilishiga 
    o'xshamaydi. Agar biz mashina buyruqlarida dastur tuzsak, foydalanuvchimiz 
    muayyan buyruqlar ketma-ketligi bilan har bir harakatini modellashtirishga majbur 
    bo'ladi. Ammo dasturlashning bunday usuli shubhasiz afzalliklarga ega: bu sizga 
    eng samarali dasturlarni yaratishga imkon beradi. Buning sababi shundaki, bu holda 
    kompyuter va vazifaning o'ziga xos xususiyatlarini birgalikda hisobga olish 
    mumkin. 
    Oddiy foydalanuvchi mashinaning buyruqlar dasturiga ega emas. Samarali 
    dasturlarni yaratish kerak bo'lgan mutaxassislar uchun bunday ehtiyoj tug'ilishi 
    mumkin. Masalan, ko'pincha keng maqsadli standart dasturlarning kutubxonalarini 
    ishlab chiquvchilaridan kelib chiqadi. Bunday mutaxassilarning ishini muayyan 
    darajaga ko'tara olish uchun ular avtomatik kod deb nomlangan ramziy kodlashning 
    ma'lum bir tizimida dasturlashishlari kerak. Aslida, bu mashina buyruqlar tizimi, 
    lekin yanada qulay ramziy tuzilishi. Bundan tashqari, avtotovodga mashina 
    yo'riqnomasining oddiy va eng keng tarqalgan kombinatsiyalarini simulyatsiya 
    qiluvchi qo'shimcha ko'rsatmalar kiritilishi mumkin. Albatta, avtomatik kodda 
    yozilgan dasturlarni kompyuter kodiga tarjima qiladigan kompyuterda kompilyator 
    bor. 
    Autocode oddiy dasturlash tilidir yoki aksincha, eng past darajadagi til deb 
    ataladi. Bu faqat birinchi kompyuterlarda keng dasturlashtirilgan edi. Avtoto'ldagi 


    ommaviy dasturiy quyidagi sabablarga ko'ra to'xtatildi. Yuqorida ta'kidlanganidek, 
    dasturlash juda ko'p vaqt talab qiladi. Shu sababli, yuqori darajadagi tillar deb 
    ataladigan turli xil til qo'shimchalari otokode ustida yaratilgan. Ushbu tillarning 
    asosiy 
    vazifasi 
    avtomatik 
    kodning 
    tushunilmaydigan 
    yo'riqnomalarini 
    foydalanuvchiga yaqinroq bo'lgan boshqa yo'riqnomalar bilan almashtirish orqali 
    dasturiy jarayonni osonlashtirishdir. Yuqori darajadagi tillarning yuqori qismiga 
    muammoli bo'lgan tillar kiradi. Ularning ko'rsatmalari foydalanuvchilarga ma'lum 
    mavzudagi sohalarda professional tarzda yozishni ta'minlaydi. Har bir kompyuterda 
    autokod odatda bitta. Yuqori darajadagi tillar, xususan, muammoni hal qiluvchi 
    yo'nalishdagi ko'plab tillar mavjud. Ulardan kompilyatorlar kompleks ierarxik 
    dasturiy tizimga aylandi. Dasturlash tillarini soddalashtirishning salbiy tomoni 
    dasturlarni kompyuter kodiga aylantirish uchun algoritmlarning murakkabligi va 
    natijada dasturchi tomonidan yaratilgan dasturlarning samaradorligini nazorat qilish 
    imkoniyatini yo'qotadi. Bu juda muhim ahamiyatga ega va biz katta muammolarni 
    hal qilishga qaratilgan e'tiborni inobatga olgan holda, unga qayta-qayta qaytib 
    boramiz. 
    Foydalanuvchilarning nuqtai nazari bo'yicha, avtokode bo'yicha dasturni ishlab 
    chiqish qiyin emas, balki u o'ziga xos kompyuterga yo'naltirilgani yoki boshqa 
    turdagi kompyuterlarga qaram bo'lib qolganligi sababli amaliy emas. 
    Kompyuterning turli xil modellarida autokodlar farq qiladi. Dasturni bitta avtomatik 
    koddan boshqasiga tarjima qiladigan universal tarjimon yo'q. Shuning uchun, 
    kompyuterning bir turidan ikkinchisiga o'tish foydalanuvchi avtomatik kodda 
    yozilgan barcha dasturlarni qayta yozishi kerak. Bu jarayon nafaqat super kompleks 
    emas, balki juda qimmat. Natijada yuqori darajadagi dasturlash tillarini ishlab 
    chiquvchilar oldida turgan muhim vazifalardan biri ma'lum kompyuterlarning 
    xususiyatlaridan qat'iy nazar tillarni yaratish edi. Bunday tillar juda ko'p sonda 
    paydo bo'lgan. Bunga Algol, Fortran, C va boshqalar kiradi, ular mashinadan 
    mustaqil, deyiladi, ular kompyuterlarning mustaqilligini ta'kidlaydi. Ularni universal 
    deb ham atashadi, bu esa juda keng algoritmlarni ifodalash qobiliyatini ko'rsatadi. 


    Mashinadan mustaqil dasturlash tillarini yaratish o'tgan asrning 50-60-yillari 
    davrida o'z go'zalligida ajoyib g'oyalar paydo bo'lishiga olib keldi. Kitoblarda 
    algoritmlarning an'anaviy ta'riflari oldindan izlanmagan holda biron bir kompyuter 
    tiliga o'tkazilishi mumkin emas. Odatda, ular noaniq bo'lib, ko'plab kamchiliklarni 
    o'z ichiga oladi, sharhning noaniqligi va boshqalarni kiritish mumkin. Xususan, 
    assotsiativlikning taxminiy xususiyatlari, komutativlik va raqamlar bo'yicha 
    operatsiyalarning taqsimlanishi tufayli, formuladagi ko'p formulalar yo'q bo'lib, 
    operatsiyalar tartibini belgilaydi. Shuning uchun, aslida, kitobning tavsiflari alohida 
    xususiyatlarning tarqalishi juda katta bo'lishi mumkin bo'lgan turli xil algoritmlarni 
    o'z ichiga oladi. 
    Dasturda har qanday algoritm har doim aniq ta'riflanadi. Uning rivojlanishiga 
    ko'plab tadqiqotlar olib borilmoqda. Boshqa mutaxassislarni uni takrorlash 
    zarurligini saqlash uchun bu ishni saqlab qolish kerak. Yuqori darajali 
    kompyuterdan mustaqil tillarda dastur saqlash funktsiyalarini bajarish uchun 
    qulaydir. Ideal rivojlangan algoritmlar va dasturlarning bagajlarini bunday tillarda 
    to'plash g'oyasi va har bir kompyuterda dasturlarni ushbu tillardan dasturiy kodga 
    aylantiradigan kompilyatorlar bo'lishi kerak edi. Bunday holda, bir vaqtning o'zida 
    ikkita muhim muammolarni hal qilish mumkin. Birinchidan, dasturlashdagi ortiqcha 
    narsa kamaydi. Ikkinchidan, dasturlarning buzilmasligi, ya'ni bitta binoning 
    kompyuteridan boshqa binoning kompyuteriga o'tkazilishi haqidagi savol avtomatik 
    ravishda hal qilindi. Kompyuterlar juda tez-tez o'z strukturasini sezilarli darajada 
    o'zgartirganligi sababli, juda muhim bo'lgan savol bo'lib qoldi. Ushbu g'oyani 
    amalga oshirishda kompilyatorlar dasturlarni o'ziga xos kompyuterlarning o'ziga xos 
    xususiyatlariga moslashtirish funktsiyalarini o'z zimmalariga oldi. Natijada, 
    foydalanuvchi kompyuterlar va kompilyatorlarning ishlash tamoyillari va 
    tamoyillarini bilib olishdan ozod etildi. 
    Dastlabki yillarda g'oya juda tez ishlab chiqilgan va amalga oshirilgan. Ko'p 
    turli sohalardagi yaxshi rivojlangan algoritmlar va dasturlar to'plamlari nashr etildi. 
    Ularning keng miqyosda almashinuvi, shu jumladan, xalqaro miqyosda amalga 
    oshirildi. Dasturlar, albatta, bir kompyuterdan boshqasiga osongina ko'chib keldi. 


    Asta-sekin foydalanuvchilar yuqori darajadagi kompyuterdan mustaqil tillardagi 
    dasturlarni ishlab chiqish bilan cheklangan kompyuterlar va kompilyatorlarning 
    batafsil o'rganishidan uzoqlashdilar. Biroq, yaqinda muhokama qilinayotgan g'oyani 
    hayotga tadbiq etishdan uzoq muddatli ta'sirga ega bo'lgan yorqin umidlar pasayib 
    ketdi. 
    Buning sababi sodda bo'lib chiqdi va ko'plab kompilyatorlarning ishi 
    noma'lumligi bilan bog'liq edi. Albatta, biz bu noto'g'ri kodlarni yaratganlik haqida 
    gapirmayapmiz, garchi bu ham ro'y beradi. Boshqa tomondan - kompilyatorlarning 
    hech biri natijada olingan kodlarning samaradorligini kafolatlaydi. Kichkina 
    muammolarni hal qilishda samaradorlik kamdan-kam hollarda yuzaga keladi. 
    Bunday vazifalar juda tez amalga oshiriladi, foydalanuvchi ko'p muammolarni 
    sezmaydi. Dasturlarning samaradorligini turli jihatlari, birinchi navbatda, ularni 
    amalga oshirish tezligi va olingan echimlarning aniqligi kompyuterda katta va 
    ayniqsa juda katta vazifalar qo'yilsa juda dolzarb bo'lib qoladi. 
    Ajoyib holat yuz berdi. Foydalanuvchilar o'zlarining muammolarini 
    kompyuterda hal qilish samaradorligi bilan to'g'ridan-to'g'ri qiziqishmoqda. U 
    samaradorligini oshirish uchun u katta harakatlarni amalga oshiradi: u matematik 
    modellarni o'zgartiradi, yangi soni usullarni ishlab chiqadi, dasturlarni qayta yozadi 
    va hokazo. Lekin foydalanuvchi kompyuterni dasturiy muhiti orqali, birinchi 
    navbatda, kompilyator va operatsion tizim orqali ko'rib chiqadi. Mashina kodlarini 
    yaratish va bajarish ushbu komponentlar foydalanuvchi dasturlarini amalga oshirish 
    samaradorligiga katta ta'sir ko'rsatadi. Biroq, ularning yordami bilan, yaratilgan 
    kompyuter kodlarining to'siqlarini qaerda ekanligini va samaradorligini oshirish 
    uchun yuqori darajadagi tilda ma'lum bir dasturda qanday o'zgarishlar bo'lishi 
    kerakligini tushunish qiyin yoki oddiygina mumkin emas. Dasturdan so'ng 
    kompilyatordan va operatsion tizimdan olinishi mumkin bo'lgan haqiqiy ma'lumot 
    ko'pincha dasturning o'zi va uning amalga oshiradigan algoritmlarini yangilash 
    yo'llarini tanlashda kamdan-kam hollarda qo'llanilishi mumkinligini anglash qiyin 
    va qiyin. 


    Foydalanuvchilar uchun eng samarali dasturlarni yaratish yo'llarini topish 
    uchun kompyuter bilan aloqa qilish masalasi o'ta dolzarbdir. Ammo uning qarori 
    deyarli butunlay foydalanuvchining elkasiga o'tadi. Kompyuter dasturiy muhiti hech 
    qanday xato tuzatuvchi dasturlarni, dasturlarning tuzilishini tahlil qilish uchun 
    tizimlarni va hokazolarni o'z ichiga olmaydi. Kompilyatorlarning tavsiflaridan hatto 
    eng kerakli yuqori darajali til konstruktsiyasining mashinalar kodida ishlash 
    samaradorligi kabi zarur ma'lumotlarni ham topish qiyin. Algoritm va dasturlarni 
    ishlab chiquvchilarning manfaatlariga etarlicha e'tibor bermaslik uchun tilni 
    yaratuvchilarni, kompilyatorlarni va operatsion tizimlarni tanqid qilishning ko'pgina 
    sabablari mavjud. Bu haqoratda haqiqat donasi bor, chunki foydalanuvchilarning 
    manfaatlari tizim dasturchilarining ko'pgina boshqa qiziqishlari orasida yo'qolib 
    ketgan va dominant bo'lishni to'xtatgan. Shu bilan birga, foydalanuvchilarning 
    muammolari juda qiyin bo'lganini bilish ham kerak. 
    Hisoblash jarayonlarining eng muhim xususiyatlaridan biri olingan 
    natijalarning aniqligi. Uzoq vaqt davomida ma'lum bo'lganidek, jarayonlarning 
    umumiy tavsifidan tashqari, raqamlarning vakillik shakli va yaxlitlash jarayonini 
    bajarish usuli ta'sir ko'rsatadi. Bu omillar mashinaga bog'liq. Ular haqida ma'lumot 
    oliy darajadagi tillar tomonidan algılanmıyor. Shuning uchun, albatta, bunday tillar, 
    hatto shu sababli ham, mustaqil ravishda mashinani mustaqil deb hisoblanmaydi, 
    chunki turli xil kompyuterlar raqamlarning turli ko'rinishlarini va yaxlitlashni 
    amalga oshirishning turli yo'llarini berishi mumkin. Uzoq muddatda bu natijaga olib 
    kelishi mumkin va amalda ham xuddi shu dasturni amalga oshirish natijalari juda 
    katta o'zgarishlarga olib keladi. 
    Nazorat savollari 
    1. Dunyodagi ilk dasturlar shoir J.Bironning qizi, grafin A. Lovelace qizi 
    ekanligi va u S.Babbage mashinasi uchun qilganini bildingizmi? 
    2. Fortran, birinchi yuqori darajadagi dasturlash tillaridan biri 1957 yilda 
    amalga oshirilgan va hozirgi kunga qadar faol ishlatilganini bilarmidingiz? 
    3. Fortran tili boshqa dasturiy tillarni ishlab chiquvchilar tomonidan muntazam 
    ravishda qattiq tanqidlarga uchraganligini bilasizmi? Shunga qaramay, ilmiy va 

    Download 179,9 Kb.




    Download 179,9 Kb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    3-mavzu: Dasturiy ta’miynot sathi. Mashina kodi, mnemakod va dasturlash tillari reja

    Download 179,9 Kb.
    Pdf ko'rish