Dobici:
- Sposobnost pisanja funkcija, klasa i modula u AI sa jasnim ulazno-izlaznim definicijama i ograničenjima
- Sposobnost korištenja AI kao partnera za programiranje u paru i napredak korak po korak, u malim, provjerljivim dijelovima
- Sposobnost hvatanja logičkih i rubnih grešaka kompajliranjem koda koji generiše AI i pokretanjem s malim primjerima
Programiranje u paru je kada dva programera rade na istom problemu, pri čemu jedan piše, a drugi revidira. Kodiranje sa AI je digitalna verzija samog ovog odnosa: vi postavljate pravac, ograničenja i kriterijume prihvatanja; AI proizvodi brzi nacrt; Svaki korak provjeravate kompajliranjem i testiranjem. Najveća zamka ovdje je reći AI „napiši mi ovu aplikaciju od početka do kraja“ i slijepo prihvatiti blok od 200 redova. Dobro programiranje parova odvija se u malim koracima: svaki korak treba da bude razumljiv, provjerljiv i reverzibilan.
U ovoj jedinici ćete naučiti kako da ispišete funkcije, klase i module sa jasnim input-output ugovorom; Kako voditi AI korak po korak; i videćemo kako da uhvatimo greške logike i rubnih slučajeva tako što ćemo pokrenuti kod koji on proizvodi na malim primerima. Cilj nije brzina, već provjerena brzina.
Koncepti: Ulazno-izlazni ugovor: Jasna definicija koji ulaz funkcija uzima i kakvo ponašanje izlaza i greške obećava. Ivica velikih i malih slova: Unos koji nije običan, ali se stvarno može pojaviti (prazan, nula, negativan, vrlo velik, null). Inkrementalni razvoj: Nastavljanje s malim, radnim komadima i potvrđivanje svakog koraka.
Štampanje koda sa neto ugovorom
Osnova koda kvaliteta je da prije početka rada definirate tačno "šta želite". Kada pišete funkciju u AI, dajte joj pet stvari: jezik i verziju, tipove unosa i značenja, izlaz, uslove greške i ograničenja (performanse, zabrana eksterne biblioteke, stil). Ovo sprečava AI da pogađa.
- Napišite ugovor. Ulaz, izlaz, greška, ograničenje.
- Zatražite malu jedinicu. Funkcija sa jednom odgovornošću; To nije veliki modul.
- Zatražite testni blok. Dodajte nekoliko uzoraka izvođenja/testiranja pored koda.
- Kompajlirajte i pokrenite. Isprobajte s rubnim kućištima, provjerite izlaz na oko.
- Idite na sljedeći korak. Nakon što je dio potvrđen, nadogradite ga.
Prompt ugovorene funkcije: "Napišite funkciju za TypeScript 5. Svrha: izračunajte ukupnu količinu artikala u korpi za kupovinu. Ulaz: { cijena: broj, količina: broj }[] niz. Izlaz: broj (ukupno). Pravila: izbaci grešku ako je količina ili cijena negativna; vrati 0 za prazan niz; zaokruži biblioteku za 5 decimalnih slučajeva. ispod funkcije (normalno, prazno, negativna količina, decimalna cijena, pojedinačna stavka).“
Vođenje AI u paru
Dobar napredak u programiranju u paru je prije dijalog nego jedan veliki zahtjev. Prvo, zatražite skelet i pokrenite ga; zatim dodajte ivično stanje; onda ispravite grešku. Ovaj pristup čini kod razumljivim i daje vam kontrolu na svakom koraku.
Inkrementalni prompt o napretku: "Napisat ćemo čitač koji čita CSV datoteku i pretvara linije u objekt. Idemo KORAK PO KORAK, prelazimo na sljedeći korak bez mog potvrđivanja svakog koraka. Korak 1: samo napišite kostur koji dijeli datoteku u redove i odvaja liniju zaglavlja. Nemojte dodavati konverziju tipa ili rukovanje greškom, zadržite još uvijek objašnjenje."
Objasnite i obrazložite prompt koda: "Objasnite funkciju koju ste upravo napisali, ne red po red, već odluku po odluku: koju ste odluku o dizajnu donijeli i zašto, koji rubni slučaj ste riješili i kako, koje ste slučajeve namjerno isključili? Navedite 3 pretpostavke u kodu koje ne smijem propustiti."
Savjet: Ne prihvatajte kod generiran AI bez razumijevanja. „Objasni mi ovo, kakve si pretpostavke napravio?“ Pitanje istovremeno otkriva skrivene greške i omogućava vam da branite taj kod, jer kod ostaje vaša odgovornost. Stavljanje koda koji ne razumijete u produkciju je kao slanje ugovora bez potpisivanja.
Slaba prompt / jaka prompt
SLABO:"Napišite funkciju sortiranja."(Rezultat: koji jezik, šta se sortira, da li je stabilan, koje je ograničenje performansi, kod koji je nejasan i vjerovatno ne odgovara zahtjevu.) JAKO:"Za Javu 17, napišite metodu koja sortira objekt List<Employee> prvo po odjelu (abecedno), a zatim prema plaćama). null odjel dolazi posljednji. Objasnite složenost metode u redu za komentare, navedite glavni testni blok sa 4 uzorka.
Snažan prompt; Uključuje kriterij sortiranja (dvije razine), pravilo nuspojava (zamjena originala), nulto ponašanje i očekivanje testa. Bez ovih detalja, AI proizvodi uvjerljivo, ali netačno rješenje; na primjer može oštetiti originalnu listu i to će dovesti do tihe greške na drugom mjestu.
Validacija s rubnim slučajevima i malim uzorcima
Kod koji radi u srećnom scenariju nije ispravan kod. Svesno forsirajte svaku proizvedenu funkciju:
Tip ivičnog kućišta
uzorak unosa
očekivano ponašanje
prazan unos
Prazan niz/string
Nije greška, logičan prazan rezultat
Nula/negativna
0, -1
Definisano i korektno ponašanje
velika vrijednost
Milioni zapisa
Overflow/performance control
null/undefined
nedostaje prostor
Kontrolirana greška ili zadano
Duplicirano/neobično
ponavljanje, obrnuti redoslijed
tačan rezultat
Mini Cases
Slučaj 1 — Greška tihog zaokruživanja. AI piše funkciju koja prikuplja novac sa decimalnim (float) tipovima; 0,1 + 0,2 daje 0,30000000000000004. Greška je riješena kada inženjer doda pravilo "Zaokruži na 2 cifre i koristi cijeli peni". Pravilo od 3 reda sprječava hiljade penija odstupanja u mjesečnom usaglašavanju.
Slučaj 2 — Zamka nuspojava. AI piše metodu koja "sortira" listu, ali mijenja originalnu listu na mjestu. Dolazi do neočekivanog ponašanja jer drugi modul koristi istu listu. Ako je ograničenje "promijeni original" bilo u promptu, greška se nikada ne bi pojavila; biva uhvaćen u pregledu koda i sprečava 2 sata otklanjanja grešaka.
Slučaj 3 — Zarada korak po korak. Programer štampa modul za uvoz od 150 redova odjednom; Kada pronađe grešku, ne može da pronađe odakle je došla. Drugi programer dijeli isti posao u 5 malih koraka, testira svaki korak za 2 minute i odmah hvata grešku u 3. koraku.
Uobičajene greške
- Štampanje velikih blokova u jednom zahtjevu. Rađa se rizičan kod koji je teško razumjeti i otkloniti greške.
- Tražiti šifru bez davanja ugovora. Ako je ulazno-izlazna greška dvosmislena, AI će pogoditi i pogriješiti.
- Samo testiram srećni scenario. Ako se prazan, null, negativan i veliki unos ne pokuša, greška se prepušta proizvodnji.
- Prihvatanje bez razumijevanja. Šifra koju ne otkrivate je dug koji ne možete braniti.
- Ignoriranje osjetljivih tipova kao što su nuspojave i novac/datum. Float novac sa bezvremenskom istorijom je klasičan izvor greške.
Ukratko
Pisanje koda sa AI je disciplinovano programiranje u paru: jasan ugovor, mali koraci, izrada i testiranje na svakom koraku. Davanje kvarteta ulazno-izlaznih grešaka-ograničenja od početka određuje kvalitet koda. Objašnjavanje koda koji proizvodi i forsiranje ga sa rubnim slučajevima izvlači na površinu greške skrivene u srećnom scenariju. Izvor brzine nije slijepo prihvatanje; je brzi nacrt plus brza verifikacija.
Zadatak aplikacije
Odaberite malu, ali stvarnu funkciju (npr. ukupna košarica, razlika u datumu, raščlanjivanje teksta). Ispis koristeći ugovornu funkciju prompt; Dodajte najmanje 5 test scenarija pored njega. Pokrenite kod i svjesno isprobajte 5 rubnih slučajeva, koristeći tabelu kao vodič. Pronađite grešku u barem jednom rubnom slučaju (ako nije, dizajnirajte novi ulaz da forsirate funkciju), popravite ga pomoću AI-a i provjerite ponovnim testiranjem da je popravka funkcionirala.
kontrolna lista
- [ ] Napisao sam ugovor koji uključuje ulaz, izlaz, greške i ograničenja.
- [ ] Generirao sam kod u malim koracima umjesto jednog velikog bloka.
- [ ] Dodao sam blok za testiranje/uzorak pokretanja pored koda.
- [ ] Svjesno sam testirao najmanje 5 rubnih slučajeva.
- [ ] Objasnio sam kod AI i pregledao njegove pretpostavke.
- [ ] Ispravio sam pronađenu grešku i potvrdio ispravku ponovnim testiranjem.