Birlik 3 / 12

AI bilan kodlash va juft dasturlash

Daromadlar:

  • AIga aniq kirish-chiqish va cheklovlar ta'riflari bilan funktsiyalar, sinflar va modullarni yozish qobiliyati
  • AIni juft dasturlash hamkori sifatida ishlatish va bosqichma-bosqich, kichik, tekshirilishi mumkin bo'lgan qismlarda rivojlanish qobiliyati
  • AI tomonidan yaratilgan kodni kompilyatsiya qilish va uni kichik misollar bilan ishga tushirish orqali mantiqiy va nosozlik xatolarini aniqlash qobiliyati

Juftlik dasturlash - ikkita ishlab chiquvchi bitta muammo ustida ishlasa, biri yozsa, ikkinchisi qayta ko'rib chiqadi. AI bilan kodlash bu munosabatlarning raqamli versiyasidir: siz yo'nalishni, cheklovlarni va qabul qilish mezonlarini o'rnatasiz; AI tez qoralama ishlab chiqaradi; Har bir qadamni kompilyatsiya qilish va sinab ko'rish orqali tasdiqlaysiz. Bu erda eng katta tuzoq - AIga "menga ushbu arizani boshidan oxirigacha yozing" deyish va 200 qatorli blokni ko'r-ko'rona qabul qilish. Yaxshi juftlik dasturlash kichik bosqichlarda davom etadi: har bir qadam tushunarli, sinovdan o'tkaziladigan va teskari bo'lishi kerak.

Ushbu bo'limda siz aniq kiritish-chiqarish shartnomasi bilan funktsiyalar, sinflar va modullarni chop etishni o'rganasiz; AIni bosqichma-bosqich qanday boshqarish kerak; va biz kichik misollar bilan ishlab chiqaradigan kodni ishga tushirish orqali mantiqiy va nosozlik xatolarini qanday aniqlashni ko'rib chiqamiz. Maqsad - tezlik emas, balki tasdiqlangan tezlik.

Tushunchalar: Kirish-chiqarish shartnomasi: Funktsiya qanday kirishni qabul qilishi va u qanday chiqish va xato xatti-harakatlarini va'da qilishining aniq ta'rifi. Edge case: Oddiy bo'lmagan, lekin haqiqatda sodir bo'lishi mumkin bo'lgan kiritish (bo'sh, nol, salbiy, juda katta, null). Bosqichli rivojlanish: kichik, ishchi qismlarga o'tish va har bir qadamni tasdiqlash.

Net shartnoma bilan kodni chop etish

Sifat kodining asosi - ishni boshlashdan oldin "siz nimani xohlayotganingizni" aniq belgilashdir. AIga funktsiyani yozishda unga besh narsani bering: til va versiya, kiritish turlari va ma'nolari, chiqish, xato holatlari va cheklovlar (ishlash, tashqi kutubxonani taqiqlash, uslub). Bu AIning taxmin qilishiga to'sqinlik qiladi.

  1. Shartnoma yozing. Kirish, chiqish, xato, cheklash.
  2. Kichik birlik so'rang. Yagona mas'uliyatli funktsiya; Bu katta modul emas.
  3. Sinov blokini talab qiling. Kodning yoniga bir nechta namunali yugurish/sinovlarni qo'shing.
  4. Kompilyatsiya qiling va ishga tushiring. Uni chekka holatlar bilan sinab ko'ring, chiqishni ko'z bilan tekshiring.
  5. Keyingi bosqichga o'ting. Bir parcha tasdiqlangandan so'ng, unga asoslang.

Shartnomali funktsiya so'rovi: "TypeScript 5 uchun funksiya yozing. Maqsad: xarid savatidagi narsalarning umumiy miqdorini hisoblang. Kirish: { narx: raqam, miqdor: raqam }[] massiv. Chiqish: raqam (jami). Qoidalar: xatolik miqdori yoki bahosi manfiy bo'lsa xato; bo'sh massiv uchun 0ni qaytaring; o'nlik kasrning pastki qismi uchun 0 ni qaytaring. Xatoning o'nlik kasrlari uchun kutubxonani 2 ga yaxlitlash kerak emas. (normal, bo'sh, salbiy miqdor, o'nlik baho, bitta element).

AIni juftlik sifatida boshqarish

Juftlik dasturlashda yaxshi muvaffaqiyatlar bitta katta so'rov emas, balki dialogdir. Birinchidan, skeletni so'rang va uni ishga tushiring; keyin chekka holatini qo'shing; keyin xatoni tuzating. Ushbu yondashuv kodni tushunarli qiladi va har qadamda sizni nazorat qiladi.

Bosish bo'yicha ko'rsatmalar: "Biz CSV faylini o'qiydigan va satrlarni ob'ektga aylantiradigan o'quvchi yozamiz. Keling, QADAM-BAY, men har bir qadamni tasdiqlamay turib, keyingi bosqichga o'tamiz. 1-qadam: faylni satrlarga bo'ladigan va sarlavha chizig'ini ajratadigan skeletni yozing. Turni o'zgartirish yoki xatoni qisqacha tushuntirmang."

Kod so'rovini tushuntiring va asoslang: "Siz yozgan funktsiyani satr bo'yicha emas, balki qaror bo'yicha tushuntiring: qaysi dizayn qarorini qabul qildingiz va nima uchun, qaysi chekka ishni ko'rib chiqdingiz va qanday qilib, qaysi holatlarni ataylab chiqarib tashladingiz? Kodda men o'tkazib yubormasligim kerak bo'lgan 3 ta taxminni sanab o'ting."

Maslahat: AI tomonidan yaratilgan kodni tushunmasdan qabul qilmang. "Buni menga tushuntiring, qanday taxminlar qildingiz?" Savol yashirin xatolarni ochib beradi va kodni himoya qilishga imkon beradi, chunki kod sizning javobgarligingiz bo'lib qoladi. Siz tushunmaydigan kodni ishlab chiqarishga qo'yish shartnomani imzolamasdan yuborishga o'xshaydi.

Zaif taklif / Kuchli taklif

WEAK:"Tartiblash funksiyasini yozing."(Natija: qaysi til, nima saralanmoqda, barqarormi, ishlash cheklovi nima, kod noaniq va ehtimol talabga mos kelmaydi.)STRONG:"Java 17 uchun List<Employee> ob'ektini avval bo'lim bo'yicha (alifbo bo'yicha), so'ngra NOEPLADOce asl ro'yxatini (yangi ro'yxatni) qaytaruvchi usulni yozing. Izohlar qatorida null bo'limiga 4 ta namuna qo'shishni ko'rsating.

Kuchli tezkor; Tartiblash mezoni (ikki darajali), yon ta'sir qoidasi (asl nusxani almashtirish), nol xatti-harakat va test kutilishini o'z ichiga oladi. Ushbu tafsilotlarsiz AI ishonchli, ammo noto'g'ri yechim ishlab chiqaradi; masalan, asl ro'yxatni buzishi mumkin va bu boshqa joyda jim xatolikka olib keladi.

Edge holatlari va kichik namunalar bilan tekshirish

Baxtli stsenariyda ishlaydigan kod to'g'ri kod emas. Har bir ishlab chiqarilgan funktsiyani ongli ravishda majburlash:

Yon quti turi

namuna kiritish

kutilgan xatti-harakatlar

bo'sh kirish

Bo'sh massiv/string

Xato emas, mantiqiy bo'sh natija

Nol/salbiy

0, -1

Belgilangan va to'g'ri xatti-harakatlar

katta qiymat

Millionlab yozuvlar

Haddan tashqari oqim/ishlash nazorati

null/aniqlanmagan

bo'sh joy etishmayapti

Boshqariladigan xato yoki standart

Takroriy/odatiy emas

takrorlanuvchi, teskari tartib

to'g'ri natija

Mini korpuslar

1-holat - ovozsiz yaxlitlash xatosi. AI o'nlik (float) turlari bilan pul yig'adigan funktsiyani yozadi; 0,1 + 0,2 0,30000000000000004 ni beradi. Muhandis "2 raqamga yaxlitlash va butun tiyinlardan foydalanish" qoidasini qo'shganda xato hal qilinadi. 3 qatorli qoida oylik yarashuvdagi minglab tiyinlik farqlarning oldini oladi.

2-holat - Yon ta'sir tuzog'i. AI ro'yxatni "saralash" usulini yozadi, lekin asl ro'yxatni joyida o'zgartiradi. Boshqa modul bir xil ro'yxatni ishlatganligi sababli kutilmagan xatti-harakatlar sodir bo'ladi. Agar "aslni o'zgartirish" cheklovi so'rovda bo'lsa, xato hech qachon yuzaga kelmaydi; kodni tekshirishga tushib qoladi va 2 soatlik disk raskadrovkani oldini oladi.

3-holati - Bosqichma-bosqich daromad. Ishlab chiquvchi bir vaqtning o'zida 150 qatorli import modulini chop etadi; Xato topsa, qayerdan kelganini topa olmaydi. Boshqa ishlab chiquvchi bir xil ishni 5 ta kichik bosqichga ajratadi, har bir qadamni 2 daqiqada sinab ko'radi va 3-bosqichda xatoni darhol ushlaydi.

Umumiy xatolar

  • Katta bloklarni bitta so'rovda chop etish. Tushunish va disk raskadrovka qilish qiyin bo'lgan xavfli kod tug'iladi.
  • Shartnoma bermasdan kod so'rash. Agar kirish-chiqish-xato noaniq bo'lsa, AI taxmin qiladi va noto'g'ri bo'ladi.
  • Faqat baxtli stsenariyni sinab ko'rish. Agar bo'sh, null, salbiy va katta kiritish sinab ko'rilmasa, xato ishlab chiqarishga qoldiriladi.
  • Tushunmasdan qabul qilish. Siz oshkor qilmagan kod - bu siz himoya qila olmaydigan qarz.
  • Nojo'ya ta'sirlar va pul/sana kabi nozik turlarga e'tibor bermaslik. Cheksiz tarixga ega bo'lgan suzuvchi pul - bu xatoning klassik manbai.

Xulosa

AI bilan kod yozish tartibli juft dasturlashdir: aniq shartnoma, kichik qadamlar, har bir qadamda qurish va sinovdan o'tkazish. Kirish-chiqish-xato-cheklov kvartetini boshidan berish kodning sifatini belgilaydi. U ishlab chiqaradigan kodni tushuntirish va uni chekka holatlar bilan majburlash baxtli stsenariy ostida yashiringan xatolarni yuzaga keltiradi. Tezlik manbai ko'r-ko'rona qabul qilish emas; tez qoralama va tezkor tekshirish.

Ilova vazifasi

Kichik, ammo haqiqiy funktsiyani tanlang (masalan, savat jami, sana farqi, matnni tahlil qilish). Shartnoma funksiyasidan foydalanib chop etish; Uning yoniga kamida 5 ta test stsenariysini qo'shing. Kodni ishga tushiring va jadvalni qo'llanma sifatida ishlatib, ongli ravishda 5 ta chekka holatlarni sinab ko'ring. Kamida bitta chekka holatda xatoni toping (agar bo'lmasa, funktsiyani majburlash uchun yangi kiritishni loyihalash), uni sun'iy intellekt yordamida tuzating va tuzatish ishlaganligini qayta sinab ko'ring.

nazorat ro'yxati

  • [ ] Men kirish, chiqish, xatolar va cheklovlarni o'z ichiga olgan shartnoma yozdim.
  • [ ] Men kodni bitta katta blok o‘rniga kichik bosqichlarda yaratdim.
  • [ ] Kod yoniga test/namuna ishga tushirish blokini qo'shdim.
  • [ ] Men ongli ravishda kamida 5 ta chekka holatlarni sinab ko'rdim.
  • [ ] Men AIga kodni tushuntirdim va uning taxminlarini ko'rib chiqdim.
  • [ ] Men topilgan xatoni tuzatdim va qayta sinovdan oʻtkazish orqali tuzatishni tasdiqladim.