Добивки:
- Способност за пишување функции, класи и модули на вештачка интелигенција со јасни влезно-излезни дефиниции и ограничувања
- Способност да се користи вештачката интелигенција како пар програмирачки партнер и да се напредува чекор по чекор, во мали, проверливи делови
- Способност за фаќање грешки во логиката и рабовите со компајлирање на кодот генериран од вештачката интелигенција и извршување со мали примери
Програмирање во пар е кога двајца програмери работат на истиот проблем, при што едниот пишува, а другиот ревидира. Кодирањето со вештачка интелигенција е дигиталната верзија на оваа врска: вие ја поставувате насоката, ограничувањата и критериумите за прифаќање; ВИ произведува брз нацрт; Секој чекор го потврдувате со тоа што го составувате и тестирате. Најголемата замка овде е да му кажеш на вештачката интелигенција „напиши ми ја оваа апликација од почеток до крај“ и слепо прифати блок од 200 линии. Доброто програмирање во пар се одвива во мали чекори: секој чекор треба да биде разбирлив, проверлив и реверзибилен.
Во оваа единица ќе научите како да печатите функции, класи и модули со јасен договор за влезно-излез; Како да се води вештачката интелигенција чекор по чекор; и ќе видиме како да ги фатиме логичките и рабовите грешки со извршување на кодот што го произведува со мали примери. Целта не е брзината, туку проверената брзина.
Концепти: Влез-излезен договор: Јасна дефиниција за тоа каков влез зема функцијата и каков излез и однесување на грешки ветува. Куќиште на рабовите: Влез кој не е обичен, но всушност може да се појави (празен, нула, негативен, многу голем, нула). Инкрементален развој: Продолжување со мали, работни парчиња и потврдување на секој чекор.
Печатење код со Net-договор
Основата на кодот за квалитет е да се дефинира точно „што сакате“ пред да започнете со работа. Кога пишувате функција на вештачката интелигенција, дајте ѝ пет работи: јазик и верзија, типови и значења на внесување, излез, услови за грешка и ограничувања (перформанси, забрана за надворешна библиотека, стил). Ова ја спречува вештачката интелигенција да погодува.
- Напишете го договорот. Влез, излез, грешка, ограничување.
- Побарајте мала единица. Функција со единствена одговорност; Тоа не е огромен модул.
- Побарајте тест блок. Додадете неколку примероци за извршување/тестови до кодот.
- Компајлирајте и стартувајте. Пробајте го со рабови, проверете го излезот со око.
- Одете на следниот чекор. Откако ќе се потврди некое парче, надоградете го.
Промпт за договорена функција: „Напишете функција за TypeScript 5. Цел: пресметајте го вкупниот износ на артикли во количката за купување. Внесете: {цена: број, количина: број [] низа. Излез: број (вкупно). Правила: фрли Грешка ако количината или цената се негативни; врати 0 за празна низа за грешка. Заокружете го износот до 2 децимални места. (нормална, празна, негативна количина, децимална цена, единечна ставка).“
Водење на вештачката интелигенција како пар
Добриот напредок во програмирањето во пар е дијалог наместо едно големо барање. Прво, побарајте го скелетот и стартувајте го; потоа додадете состојба на раб; потоа поправете ја грешката. Овој пристап го одржува кодот разбирлив и ве става под контрола на секој чекор.
Промоција за зголемување на напредокот: "Ќе напишеме читач што чита CSV-датотека и ги конвертира линиите во објект. Одиме ЧЕКОР ПО ЧЕКОР, преминувајќи на следниот чекор без јас да го потврдам секој чекор. Чекор 1: само напишете го скелетот што ја дели датотеката на линии и ја одвојува линијата за заглавието. Не додавајте конверзија на типови, сè уште чувајте ја кратката."
Објаснете го и оправдајте го барањето за код: „Објаснете ја функцијата што штотуку ја напишавте, не ред по ред, туку одлука по одлука: која одлука за дизајн ја донесовте и зошто, кој случај на раб сте постапил и како, кои случаи намерно сте ги исклучиле? Наведете 3 претпоставки во кодот што не треба да ги пропуштам“.
Совет: Не прифаќајте го кодот генериран со вештачка интелигенција без да го разберете. „Објасни ми го ова, какви претпоставки направи? Прашањето открива скриени грешки и ви овозможува да го одбраните тој код, бидејќи кодот останува ваша одговорност. Ставањето код што не го разбирате во производство е како да испратите договор без да го потпишете.
Слаба навестување / Силен навестување
СЛАБ:"Напишете функција за сортирање."(резултат: кој јазик, што се подредува, дали е стабилен, кое е ограничувањето на изведбата, кодот кој е нејасен и веројатно не одговара на барањето.)СИЛНО:"За Java 17, напишете метод што го подредува објектот List<Employee> прво по оддел (азбучно), потоа по плата. Одделот е последен. Објаснете ја сложеноста на методот во линијата за коментари.
Моќен потсетник; Вклучува критериум за сортирање (две нивоа), правило за несакани ефекти (замена на оригиналот), нула однесување и очекување од тестот. Без овие детали, вештачката интелигенција произведува веродостојно, но неточно решение; на пример, може да ја оштети оригиналната листа и тоа ќе доведе до тивка грешка на друго место.
Валидација со рабови и мали примероци
Кодот што работи во среќното сценарио не е точниот код. Свесно принудете ја секоја произведена функција:
Тип на рабови
влезен примерок
очекувано однесување
празен влез
Празна низа/низа
Не е грешка, логично празен резултат
Нула/негативно
0, -1
Дефинирано и правилно однесување
голема вредност
Милиони рекорди
Прелевање/контрола на перформанси
нула/недефинирано
недостасува простор
Контролирана грешка или стандардно
Дупликат/невообичаено
повторувачки, обратен редослед
точен резултат
Мини футроли
Случај 1 - Тивко грешка во заокружувањето. AI пишува функција која собира пари со децимални (float) типови; 0,1 + 0,2 дава 0,300000000000000004. Грешката се решава кога инженерот ќе го додаде правилото „Заокружете до 2 цифри и користете цели пени“. Правилото од 3 линии спречува илјадници пени на разлики во месечното помирување.
Случај 2 — Замка за несакани ефекти. Вештачката интелигенција пишува метод кој „сортира“ листа, но ја менува оригиналната листа на место. Се појавува неочекувано однесување бидејќи друг модул ја користи истата листа. Ако ограничувањето „промени го оригиналот“ беше во промптот, грешката никогаш нема да се појави; се фаќа во преглед на кодот и спречува 2 часа дебагирање.
Случај 3 - Заработка чекор по чекор. Инвеститорот печати модул за увоз од 150 линии одеднаш; Кога ќе најде грешка, не може да најде од каде е таа. Друг програмер ја дели истата работа на 5 мали чекори, го тестира секој чекор за 2 минути и ја фаќа грешката веднаш во третиот чекор.
Вообичаени грешки
- Печатење големи блокови во едно барање. Се раѓа ризичен код кој е тешко да се разбере и дебагира.
- Барање шифра без давање договор. Ако влезно-излез-грешката е двосмислена, вештачката интелигенција ќе погоди и ќе биде погрешна.
- Само тестирање на среќното сценарио. Ако не се испроба празен, нула, негативен и голем влез, грешката се остава на производство.
- Прифаќање без разбирање. Кодот што не го откривате е долг што не можете да го одбраните.
- Игнорирање на чувствителни типови како несакани ефекти и пари/датум. Пловечките пари со безвременска историја се класичен извор на грешка.
Сумирано
Пишувањето код со вештачка интелигенција е дисциплинирано програмирање на парови: јасен договор, мали чекори, градење и тестирање на секој чекор. Давањето на квартетот влез-излез-грешка-ограничување од почеток го одредува квалитетот на кодот. Објаснувањето на кодот што го произведува и форсирањето со кутии на рабовите ги изнесува на површина грешките скриени под среќното сценарио. Изворот на брзината не е слепото прифаќање; е брз нацрт плус брза верификација.
Задача за апликација
Изберете мала, но реална функција (на пр. вкупен износ на кошница, разлика во датумот, парсирање на текст). Печатете со користење на промптот за договорена функција; Додадете најмалку 5 тест сценарија до него. Извршете ја шифрата и пробајте свесно 5 кутии на рабовите, користејќи ја табелата како водич. Пронајдете грешка во барем едно рабно куќиште (ако не, дизајнирајте нов влез за да ја присилите функцијата), поправете го со вештачка интелигенција и проверете со повторно тестирање дека поправката функционирала.
листа за проверка
- [ ] Напишав договор кој вклучува влез, излез, грешки и ограничувања.
- [ ] Го генерирав кодот во мали чекори наместо со еден голем блок.
- [ ] Додадов блок за тестирање/примерок за извршување до кодот.
- [ ] Свесно тестирав најмалку 5 рабови.
- [ ] Му го објаснив кодот на вештачката интелигенција и ги разгледав неговите претпоставки.
- [ ] Ја поправив пронајдената грешка и ја потврдив поправката со повторно тестирање.