GoDasturchi
Guessing vs Forming a Hypothesis

Guessing vs Forming a Hypothesis

Taxmin emas, gipoteza

Detektivni tasavvur qiling: jinoyat joyida u birinchi ko'zga tashlangan odamga "sen qildingmi?" deb ishonch bilan ko'rsatmaydi. Buning o'rniga, u dalillarni to'playdi (kim qayerda edi, qanday izlar bor), so'ngra "agar shu odam qilgan bo'lsa, u YERDA bo'lishi kerak edi" degan tekshiriladigan taxmin — gipoteza quradi, va uni dalil bilan tasdiqlaydi yoki rad etadi. Xato dasturni tuzatish ham xuddi shunday jarayon — tasodifiy gumon qilish emas.

Engineering Judgment kursida siz kod yozishdan OLDINGI qarorlarni ko'rgan bo'lsangiz, endi kodni tuzatish jarayonining o'ziga o'tamiz. Bu kurs davomida siz kod yozmaysiz — real, fuzzy xatolarni tizimli ravishda topish mashqini qilasiz.

Ko'p dasturchilar (ayniqsa shoshilganda) xatoga duch kelganda darhol taxmin qiladi: "ehtimol bu joy noto'g'ri" deb, kodning tasodifiy qatorini o'zgartirib ko'radi, ishlamasa boshqa qatorni o'zgartiradi. Bu — "qorong'i xonada ko'zni yumib devorni paypaslash"ga o'xshaydi: ba'zan tasodifan eshikni topasiz, lekin ko'pincha vaqtni behuda sarflaysiz va hatto yangi xato qo'shib qo'yasiz.

Taxmin qilishGipoteza qurish
"Ehtimol bu funksiya noto'g'ri ishlayapti" — tekshirmasdan o'zgartiraman"Agar bu funksiya noto'g'ri qiymat qaytarsa, uning natijasini chop etganimda buni ko'raman" — tekshiraman
Natija o'zgarmasa — boshqa tasodifiy joyni o'zgartiramanGipoteza rad etilsa — nima uchun rad etilganini yozib, YANGI, aniqroq gipoteza quraman
"Ishladi shekilli" deb, NEGA ishlaganini bilmasdan qoldiramanGipoteza tasdiqlansa, SABABNI aniq tushuntira olaman

Gipoteza qurish uch qadamdan iborat: (1) kuzatilgan xato asosida "nima uchun bu sodir bo'layotgan bo'lishi mumkin" degan aniq, TEKSHIRILADIGAN taxmin tuzing; (2) shu taxminni tasdiqlaydigan yoki rad etadigan eng kichik tekshiruvni o'tkazing (masalan, qiymatni chop etish, kichik test yozish); (3) natijaga qarab, gipotezani tasdiqlang yoki rad etib, YANGI gipoteza quring. Bu — Problem Decomposition kursidagi "taxmin emas, savol" tamoyilining, endi xatoni tuzatish jarayoniga qo'llanilishi.

Muhim farq: gipoteza rad etilishi ham foydali natija — u sizni qidiruv doirasidan chiqarib tashlaydi ("bu funksiyada muammo yo'q ekan, demak boshqa yerda"). Taxmin esa rad etilganda hech narsa o'rgatmaydi, chunki u boshidanoq aniq shakllantirilmagan edi. Shuning uchun tajribali dasturchi "ishlamadi" deganda ham nimani bilib olganini aytib bera oladi.

Key Takeaway

Key Takeaway:

Xatoni tasodifiy o'zgartirish bilan emas, tekshiriladigan gipoteza bilan qidiring: "agar sabab shu bo'lsa, men buni ko'rishim kerak" deb, kichik tekshiruv o'tkazing. Gipoteza rad etilsa ham, bu sizni qidiruv doirasidan chiqarib, keyingi, aniqroq gipotezaga olib boradi.

NEXT UP

Reproduce Before You Fix

Guessing vs Forming a Hypothesis

Taxmin emas, gipoteza

Detektivni tasavvur qiling: jinoyat joyida u birinchi ko'zga tashlangan odamga "sen qildingmi?" deb ishonch bilan ko'rsatmaydi. Buning o'rniga, u dalillarni to'playdi (kim qayerda edi, qanday izlar bor), so'ngra "agar shu odam qilgan bo'lsa, u YERDA bo'lishi kerak edi" degan tekshiriladigan taxmin — gipoteza quradi, va uni dalil bilan tasdiqlaydi yoki rad etadi. Xato dasturni tuzatish ham xuddi shunday jarayon — tasodifiy gumon qilish emas.

Engineering Judgment kursida siz kod yozishdan OLDINGI qarorlarni ko'rgan bo'lsangiz, endi kodni tuzatish jarayonining o'ziga o'tamiz. Bu kurs davomida siz kod yozmaysiz — real, fuzzy xatolarni tizimli ravishda topish mashqini qilasiz.

Ko'p dasturchilar (ayniqsa shoshilganda) xatoga duch kelganda darhol taxmin qiladi: "ehtimol bu joy noto'g'ri" deb, kodning tasodifiy qatorini o'zgartirib ko'radi, ishlamasa boshqa qatorni o'zgartiradi. Bu — "qorong'i xonada ko'zni yumib devorni paypaslash"ga o'xshaydi: ba'zan tasodifan eshikni topasiz, lekin ko'pincha vaqtni behuda sarflaysiz va hatto yangi xato qo'shib qo'yasiz.

Taxmin qilishGipoteza qurish
"Ehtimol bu funksiya noto'g'ri ishlayapti" — tekshirmasdan o'zgartiraman"Agar bu funksiya noto'g'ri qiymat qaytarsa, uning natijasini chop etganimda buni ko'raman" — tekshiraman
Natija o'zgarmasa — boshqa tasodifiy joyni o'zgartiramanGipoteza rad etilsa — nima uchun rad etilganini yozib, YANGI, aniqroq gipoteza quraman
"Ishladi shekilli" deb, NEGA ishlaganini bilmasdan qoldiramanGipoteza tasdiqlansa, SABABNI aniq tushuntira olaman

Gipoteza qurish uch qadamdan iborat: (1) kuzatilgan xato asosida "nima uchun bu sodir bo'layotgan bo'lishi mumkin" degan aniq, TEKSHIRILADIGAN taxmin tuzing; (2) shu taxminni tasdiqlaydigan yoki rad etadigan eng kichik tekshiruvni o'tkazing (masalan, qiymatni chop etish, kichik test yozish); (3) natijaga qarab, gipotezani tasdiqlang yoki rad etib, YANGI gipoteza quring. Bu — Problem Decomposition kursidagi "taxmin emas, savol" tamoyilining, endi xatoni tuzatish jarayoniga qo'llanilishi.

Muhim farq: gipoteza rad etilishi ham foydali natija — u sizni qidiruv doirasidan chiqarib tashlaydi ("bu funksiyada muammo yo'q ekan, demak boshqa yerda"). Taxmin esa rad etilganda hech narsa o'rgatmaydi, chunki u boshidanoq aniq shakllantirilmagan edi. Shuning uchun tajribali dasturchi "ishlamadi" deganda ham nimani bilib olganini aytib bera oladi.

Key Takeaway

Key Takeaway:

Xatoni tasodifiy o'zgartirish bilan emas, tekshiriladigan gipoteza bilan qidiring: "agar sabab shu bo'lsa, men buni ko'rishim kerak" deb, kichik tekshiruv o'tkazing. Gipoteza rad etilsa ham, bu sizni qidiruv doirasidan chiqarib, keyingi, aniqroq gipotezaga olib boradi.

NEXT UP

Reproduce Before You Fix