Quyidagi kod ikkita tasdiqni o'z ichiga oladi, x> 0 va x> 1va ular haqiqatan ham ijro paytida ko'rsatilgan nuqtalarda to'g'ri keladi



Download 32,25 Kb.
bet4/4
Sana03.07.2022
Hajmi32,25 Kb.
#735304
1   2   3   4
Bog'liq
Dasturiy kodlarni tekshiruvchi kompilyator dasturini yaratish

Tasdiqlarni o'chirib qo'yish
Aksariyat tillar tasdiqlarni global miqyosda, ba'zan esa mustaqil ravishda yoqish yoki o'chirishga imkon beradi. Tasdiqlashlar ko'pincha ishlab chiqishda yoqiladi va yakuniy sinov paytida va mijozga taqdim etilganda o'chirib qo'yiladi. Tasdiqlarni tekshirmaslik, tasdiqlarni baholash xarajatlarining oldini oladi (tasdiqlar mavjud deb hisoblasangiz) yon effektlar) normal sharoitda hanuzgacha bir xil natijani keltirib chiqaradi. G'ayritabiiy sharoitlarda tasdiqni tekshirishni o'chirib qo'yish, bekor qilingan dastur ishlashda davom etishini anglatishi mumkin. Bu ba'zan afzaldir.
Ba'zi tillar, shu jumladan C va C ++, yordamida kompilyatsiya vaqtida tasdiqlarni to'liq olib tashlashi mumkin oldingi protsessor. Tasdiqlash uchun Java-dan ish vaqti dvigateliga o'tish kerak bo'lgan variant talab qilinadi. Variant mavjud emas, tasdiqlar chetlab o'tiladi, lekin agar ular ish vaqtida JIT kompilyatori tomonidan optimallashtirilmasa yoki agar (yolg'on) bo'lsa kompilyatsiya vaqtidagi shart, shuning uchun ular Java-da ish vaqti yoki vaqt narxiga ega bo'lmasliklari kerak.
Dasturchilar o'zlarining kodlarida tilni odatiy tasdiqlash mexanizmlarini chetlab o'tish yoki boshqarish orqali har doim faol bo'lgan tekshiruvlarni yaratishi mumkin.
Xatolarni boshqarish bilan taqqoslash
 
Tasdiqlashlar odatdagi xatolarni ko'rib chiqishdan farq qiladi. Tasdiqlar mantiqan mumkin bo'lmagan vaziyatlarni hujjatlashtiradi va dasturiy xatolarni aniqlaydi: agar imkonsiz narsa yuz bersa, unda dasturda aniq bir narsa aniq emas. Bu xatolarni ko'rib chiqishdan farq qiladi: xato holatlarining aksariyati mumkin, garchi ularning ba'zilari amalda yuzaga kelishi ehtimoldan yiroq. Tasdiqlarni umumiy maqsadda xatolarni ko'rib chiqish mexanizmi sifatida ishlatish oqilona emas: tasdiqlar xatolardan xalos bo'lishga imkon bermaydi; tasdiqlashning buzilishi odatda dasturning bajarilishini keskin to'xtatadi; va tasdiqlashlar ko'pincha ishlab chiqarish kodida o'chirib qo'yilgan. Tasdiqlashlar, shuningdek, foydalanuvchilar uchun qulay bo'lgan xato xabarini ko'rsatmaydi.
Xatoni boshqarish uchun tasdiqdan foydalanishning quyidagi misolini ko'rib chiqing:
int *ptr = malloc(o'lchamlari(int) * 10); tasdiqlash(ptr); // ptr dan foydalaning ...
Bu erda dasturchi buni biladi malloc qaytadi a NULL ko'rsatgich agar xotira ajratilmagan bo'lsa. Bu mumkin: operatsion tizim har bir qo'ng'iroqni kafolatlamaydi malloc muvaffaqiyatli bo'ladi. Agar xotirada xato bo'lsa, dastur darhol bekor qilinadi. Tasdiqlashsiz dastur shu vaqtgacha ishlashni davom ettiradi ptr ishlatilgan maxsus qurilmaga qarab ajratilgan va ehtimol undan uzoqroq. Tasdiqlar o'chirilmasa, darhol chiqish ta'minlanadi. Ammo oqilona nosozlik talab qilinsa, dastur muvaffaqiyatsizlikka duchor bo'lishi kerak. Masalan, serverda bir nechta mijozlar bo'lishi mumkin yoki toza chiqmaydigan resurslarni saqlashi mumkin yoki ma'lumotlar omboriga yozish uchun kutilmagan o'zgarishlar bo'lishi mumkin. Bunday hollarda, to'satdan abort qilishdan ko'ra bitta bitimni muvaffaqiyatsiz bajarish yaxshiroqdir.
Yana bir xato - bu tasdiqning argumenti sifatida ishlatiladigan iboralarning yon ta'siriga tayanish. Tasdiqlar umuman bajarilmasligi mumkinligini doimo yodda tutish kerak, chunki ularning yagona maqsadi har doim ham to'g'ri bo'lishi kerak bo'lgan shartning aslida bajarilishini tekshirishdir. Binobarin, agar dastur xatosiz deb hisoblansa va chiqarilgan bo'lsa, tasdiqlar o'chirib qo'yilishi mumkin va endi baholanmaydi.
Oldingi misolning yana bir versiyasini ko'rib chiqing:
int *ptr; // Agar malloc () NULL qiymatini qaytarsa, quyidagi bayonot bajarilmaydi, // lekin -NDEBUG bilan kompilyatsiya qilishda umuman bajarilmaydi! tasdiqlash(ptr = malloc(o'lchamlari(int) * 10)); // -NDEBUG bilan kompilyatsiya qilinayotganda ptr ishlatilsin: ptr boshlang'ich o'rnatilmagan! ...
Bu qaytish qiymatini belgilashning aqlli usuliga o'xshab qolishi mumkin malloc ga ptr va yo'qligini tekshiring NULL bir qadamda, lekin malloc qo'ng'iroq va tayinlash ptr tashkil etuvchi ifodani baholashning yon ta'siri tasdiqlash holat. Qachon NDEBUG parametr kompilyatorga uzatiladi, chunki dastur xatosiz deb hisoblanganda va chiqarilganda, tasdiqlash () bayonot olib tashlandi, shuning uchun malloc () chaqirilmaydi, ko'rsatish ptr boshlanmagan. Bu potentsial ravishda a ga olib kelishi mumkin segmentatsiya xatosi yoki shunga o'xshash nol ko'rsatkich dastur bajarilishida ancha past bo'lgan xatolar, bo'lishi mumkin bo'lgan xatolarni keltirib chiqaradi vaqti-vaqti bilan va / yoki ta'qib qilish qiyin. Ba'zan dasturchilar ushbu muammoni engillashtirish uchun shunga o'xshash VERIFY (X) ta'rifidan foydalanadilar.
Zamonaviy kompilyatorlar yuqoridagi kodga duch kelganda ogohlantirish berishlari mumkin.[6]
Tarix
 
1947 yilda hisobotlar fon Neyman va Goldstine[7] ularning dizayni bo'yicha IAS mashinasi, ular dastlabki versiyasidan foydalangan holda algoritmlarni tavsifladilar oqim jadvallari, unda ular quyidagilarni tasdiqladilar: "Haqiqatan ham, har doim C oqim diagrammasidagi ma'lum bir nuqtaga yetganda, bir yoki bir nechta bog'langan o'zgaruvchilar aniq belgilangan qiymatlarga ega bo'ladi yoki ma'lum xususiyatlarga ega bo'ladi yoki bir-biri bilan ma'lum xususiyatlarni qondiradi. . Bundan tashqari, biz ushbu nuqtada ushbu cheklovlarning haqiqiyligini ko'rsatamiz. Shu sababli biz ushbu cheklovlarning haqiqiyligi tasdiqlangan har bir sohani maxsus quti bilan belgilaymiz, biz uni tasdiqlash qutisi deb ataymiz. "
Dasturlarning to'g'riligini isbotlash usuli tasdiqlangan Alan Turing. 1949 yil 24-iyun, Kembrijdagi "Katta tartibni tekshirish" nutqida Turing shunday taklif qildi: "Qanday qilib katta tartibni to'g'ri ekanligiga ishonch hosil qilish ma'nosida tekshirish mumkin? Tekshiradigan odam juda qiyin bo'lmasligi uchun vazifa, dasturchi aniq bir qatorni bajarishi kerak tasdiqlar bu alohida tekshirilishi mumkin va undan butun dasturning to'g'riligi osongina kelib chiqadi ".[8]
Shuningdek qarang

  • Tasdiqlash tili

  • Shartnoma bo'yicha loyihalash

  • Istisnolardan foydalanish

  • Mantiqiylik

  • Statik kod tahlili

  • Java modellashtirish tili

  • O'zgarmas (informatika)

Download 32,25 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish