Pelnas:
- Galimybė rašyti funkcijas, klases ir modulius į AI su aiškiais įvesties-išvesties ir apribojimų apibrėžimais
- Galimybė naudoti dirbtinį intelektą kaip porinį programavimo partnerį ir progresuoti žingsnis po žingsnio, mažomis, patikrinamomis dalimis
- Galimybė pagauti logikos ir didžiųjų raidžių klaidas sukompiliuojant AI sugeneruotą kodą ir paleidžiant jį su mažais pavyzdžiais
Porinis programavimas yra tada, kai du kūrėjai dirba su ta pačia problema, vienas rašo, o kitas peržiūri. Kodavimas naudojant AI yra skaitmeninė šio ryšio versija: jūs nustatote kryptį, apribojimus ir priėmimo kriterijus; AI sukuria greitą projektą; Kiekvieną žingsnį patikrinate jį sudarydami ir išbandydami. Didžiausia spąstai čia yra pasakyti AI „parašyk man šią programą nuo pradžios iki pabaigos“ ir aklai priimti 200 eilučių bloką. Geras porų programavimas vyksta mažais žingsneliais: kiekvienas žingsnis turi būti suprantamas, išbandomas ir grįžtamas.
Šiame skyriuje išmoksite spausdinti funkcijas, klases ir modulius su aiškia įvesties-išvesties sutartimi; Kaip žingsnis po žingsnio vadovauti AI; ir pamatysime, kaip sugauti logikos ir didžiųjų raidžių klaidas paleisdami jo sukurtą kodą su mažais pavyzdžiais. Tikslas yra ne greitis, o patikrintas greitis.
Sąvokos: Įvesties-išvesties sutartis: aiškus apibrėžimas, kokios įvesties funkcija naudojasi ir kokią išvestį bei klaidą ji žada. Kraštinės raidės: įvestis, kuri nėra įprasta, bet gali būti iš tikrųjų (tuščia, nulis, neigiama, labai didelė, nulinė). Laipsniškas tobulinimas: tęskite mažus, darbinius gabalus ir patvirtinkite kiekvieną žingsnį.
Kodo spausdinimas su tinklo sutartimi
Kokybės kodo pagrindas – prieš pradedant darbą tiksliai apibrėžti „ko norite“. Rašydami funkciją į AI nurodykite penkis dalykus: kalbą ir versiją, įvesties tipus ir reikšmes, išvestį, klaidų sąlygas ir apribojimus (našumą, išorinės bibliotekos draudimą, stilių). Tai neleidžia AI spėlioti.
- Parašyk sutartį. Įvestis, išvestis, klaida, apribojimas.
- Paprašykite mažo vieneto. Funkcija su viena atsakomybe; Tai nėra didelis modulis.
- Prašyti bandymo bloko. Šalia kodo pridėkite keletą pavyzdinių paleidimų / bandymų.
- Surinkite ir paleiskite. Išbandykite su kraštiniais dėklais, patikrinkite išvestį akimis.
- Eikite į kitą veiksmą. Kai gabalas bus patvirtintas, statykite ant jo.
Sutartinės funkcijos raginimas: "Parašykite funkciją, skirtą "TypeScript 5". Tikslas: apskaičiuokite bendrą prekių krepšelyje esančių prekių kiekį. Įveskite: { kaina: skaičius, kiekis: skaičius }[] masyvas. Išvestis: skaičius (iš viso). Taisyklės: išmeskite Klaida, jei kiekis arba kaina yra neigiama; grąžinkite 0, jei masyvas tuščias; suapvalinkite skaičių iki 2 skaitmenų po kablelio. Nenaudokite neigiamos funkcijos (5, išorinės bibliotekos tuščios klaidos atveju. dešimtainė kaina, viena prekė).
Vadovaujantis AI kaip pora
Gera pažanga programuojant porą yra dialogas, o ne vienas didelis prašymas. Pirmiausia paprašykite skeleto ir paleiskite jį; tada pridėkite krašto būseną; tada ištaisykite klaidą. Šis metodas leidžia suprasti kodą ir leidžia jums valdyti kiekvieną žingsnį.
Palaipsnio eigos raginimas: "Parašysime skaitytuvą, kuris nuskaito CSV failą ir konvertuoja eilutes į objektą. Žingsnis po žingsnio pereikime prie kito veiksmo, nepatvirtindamas kiekvieno veiksmo. 1 veiksmas: tiesiog parašykite skeletą, kuris padalina failą į eilutes ir atskiria antraštės eilutę. Nepridėkite tipo konvertavimo ar klaidų tvarkymo. Dar trumpai paaiškinkite."
Paaiškinkite ir pagrįskite kodo raginimą: "Ne eilutė po eilutės, o sprendimą pagal sprendimą paaiškinkite ką tik parašę funkciją: kokį dizaino sprendimą priėmėte ir kodėl, kurį krašto atvejį tvarkėte ir kaip, kokius atvejus sąmoningai išskyrėte? Kode išvardykite 3 prielaidas, kurių neturėčiau praleisti."
Patarimas: nepriimkite AI sukurto kodo jo nesuprasdami. „Paaiškink man tai, kokias prielaidas padarėte? Klausimas atskleidžia paslėptas klaidas ir leidžia apginti šį kodą, nes už kodą atsakote jūs. Kodo, kurio nesuprantate, įtraukimas į gamybą prilygsta sutarties išsiuntimui jos nepasirašius.
Silpnas raginimas / stiprus raginimas
WEAK:"Parašykite rūšiavimo funkciją. Komentarų eilutėje paaiškinkite metodo sudėtingumą, nurodykite pagrindinį bandymo bloką su 4 pavyzdžiais.
Galingas raginimas; Apima rūšiavimo kriterijų (dviejų lygių), šalutinio poveikio taisyklę (pakeičiančią originalą), nulinį elgesį ir bandymo lūkesčius. Be šių detalių AI pateikia patikimą, bet neteisingą sprendimą; pavyzdžiui, jis gali sugadinti pradinį sąrašą ir kitur sukels tyliąją klaidą.
Patvirtinimas naudojant kraštus ir mažus pavyzdžius
Kodas, kuris veikia laimingo scenarijaus atveju, nėra teisingas kodas. Sąmoningai priverskite kiekvieną sukurtą funkciją:
Krašto korpuso tipas
imties įvestis
laukiamas elgesys
tuščia įvestis
Tuščias masyvas / eilutė
Ne klaida, loginis tuščias rezultatas
Nulis / neigiamas
0, -1
Apibrėžtas ir teisingas elgesys
puiki vertė
Milijonai įrašų
Perpildymo / našumo kontrolė
nulinis / neapibrėžtas
trūksta vietos
Valdoma klaida arba numatytoji klaida
Pasikartojantis/neįprastas
pasikartojanti, atvirkštinė tvarka
teisingas rezultatas
Mini dėklai
1 atvejis – tylaus apvalinimo klaida. AI rašo funkciją, kuri surenka pinigus su dešimtainiais (plaukiojančiais) tipais; 0,1 + 0,2 suteikia 0,30000000000000004. Klaida išsprendžiama, kai inžinierius prideda taisyklę „Apvalinti iki 2 skaitmenų ir naudoti visus centus“. 3 eilučių taisyklė užkerta kelią tūkstančiams centų skirtumų mėnesiniame derinime.
2 atvejis – šalutinio poveikio spąstai. AI rašo metodą, kuris „rūšiuoja“ sąrašą, bet vietoje pakeičia pradinį sąrašą. Netikėtas elgesys įvyksta, nes kitas modulis naudoja tą patį sąrašą. Jei „keisti pradinį“ apribojimą buvo nurodyta raginime, klaida niekada neatsiras; įsitraukia į kodo peržiūrą ir neleidžia derinti 2 valandas.
3 atvejis – pajamos po žingsnio. Kūrėjas iš karto išspausdina 150 eilučių importavimo modulį; Radęs klaidą jis negali sužinoti, iš kur ji atsirado. Kitas kūrėjas tą patį darbą padalija į 5 mažus žingsnelius, kiekvieną žingsnį išbando per 2 minutes ir klaidą iškart pagauna 3-iame žingsnyje.
Dažnos klaidos
- Didelių blokų spausdinimas vienu užsakymu. Gimsta rizikingas kodas, kurį sunku suprasti ir derinti.
- Prašyti kodo nesudarant sutarties. Jei įvesties-išvesties-klaida yra dviprasmiška, AI atspės ir klysta.
- Tiesiog išbandžiau laimingą scenarijų. Jei tuščia, nulinė, neigiama ir didelė įvestis nebandoma, klaida paliekama gamybai.
- Priimti be supratimo. Kodas, kurio neatskleidžiate, yra skola, kurios negalite apginti.
- Nepaisydami jautrių tipų, tokių kaip šalutinis poveikis ir pinigai / data. Pinigai, turintys nesenstančią istoriją, yra klasikinis klaidų šaltinis.
Apibendrinant
Kodo rašymas naudojant AI yra disciplinuotas porų programavimas: aiškus kontraktas, maži žingsneliai, kūrimas ir išbandymas kiekviename žingsnyje. Įvesties-išvesties-klaidos-apribojimo kvartetas nuo pat pradžių lemia kodo kokybę. Paaiškinant jo sukurtą kodą ir priverčiant jį naudoti kraštutiniais atvejais, iškyla klaidos, paslėptos pagal laimingą scenarijų. Greičio šaltinis nėra aklas priėmimas; yra greitas juodraštis ir greitas patikrinimas.
Taikymo užduotis
Pasirinkite nedidelę, bet realią funkciją (pvz., krepšelio suma, datos skirtumas, teksto analizė). Spausdinkite naudodami sutartinės funkcijos užklausą; Šalia jo pridėkite bent 5 bandymo scenarijus. Vykdykite kodą ir sąmoningai išbandykite 5 kraštutinius atvejus, naudodami lentelę kaip vadovą. Suraskite klaidą bent viename kraštiniame dėkle (jei ne, sukurkite naują įvestį, kad priverstumėte funkciją), ištaisykite ją naudodami AI ir dar kartą patikrinkite, ar taisymas veikė.
kontrolinis sąrašas
- [ ] Parašiau sutartį, kurioje yra įvestis, išvestis, klaidos ir apribojimai.
- [ ] Sukūriau kodą mažais žingsneliais, o ne vienu dideliu bloku.
- [ ] Prie kodo pridėjau bandomąjį / mėginio vykdymo bloką.
- [ ] Sąmoningai išbandžiau bent 5 kraštutinius atvejus.
- [ ] Aš paaiškinau kodą AI ir peržiūrėjau jo prielaidas.
- [ ] Ištaisiau rastą klaidą ir patvirtinau taisymą išbandydamas iš naujo.