ChatGPT je veľmi staromódny programátor
ChatGPT je technicky umelá všeobecná inteligencia a píše kód celkom dobre, ale akonáhle začnete testovať hranice, všimnete si určité obmedzenia, ktoré sú zdá sa charakteristické pre všetky jazykové modely, prinajmenšom ak sú tieto modely aplikované na programátorské úlohy naivne a priamo.
Nejaký čas som skúšal dávať ChatGPT programátorské úlohy a tak teraz môžem zhrnúť jeho kľúčové obmedzenia nasledovne:
- Žiadny prístup k API dokumentácii. ChatGPT sa spolieha výlučne na to, čo si pamätá zo svojho trénovania. A keď si niečo nepamätá, začne hádať alebo si rovno vymýšľa. Môžete prilepiť fragmenty dokumentácie do dotazu, aby ste dosiahli lepšie výsledky, ale to je nepraktické a obmedzené riešenie.
- Žiadne iteratívne zlepšovanie. Nie je náhoda, že programovanie sa nazýva vývoj softvéru. Je to nevyhnutne iteratívny proces pozostávajúci z množstva jednotlivých zmien v kóde a dizajne programu. ChatGPT píše programy zhora nadol, čo je pôsobivá machrovina, keď sa nad tým tak zamyslíte, ale je málo pravdepodobné, že taký postup povedie k optimálnemu výstupu.
- Žiadne testovanie. Ak to nebolo testované, tak to nefunguje. Ja sa týmto pravidlom riadim pri svojej práci. Najbližšie, ako sa ChatGPT môže dostať k spusteniu programu, je, že vysvetlí krok za krokom, ako program funguje. Vlastne je celkom pôsobivé, že ChatGPT dokáže často napísať správny program na prvý pokus. Testovanie je ale nevyhnutné pre zvýšenie kvality výstupov. Môžete program spustiť sami a skopírovať výstup z kompilátora a samotného programu do dotazu pre ChatGPT, ale to je veľmi nepraktické.
- Obmedzenie veľkosti programu. Keďže ChatGPT nemá žiadnu dlhodobú pamäť ani žiaden priestor, kde by si mohol uchovávať neobmedzené poznámky, nutne nie je schopný produkovať veľké programy. Môžete mu dávať jednotlivé malé úlohy, ale to bude mať za následok veľké nezrovnalosti medzi rôznymi časťami programu, ktoré ChatGPT nedokáže vidieť a opraviť.
- Žiadne skúsenosti. Programátori majú dobrý dôvod, aby boli tvrdohlaví v tom, ako robia svoju prácu. Majú dlhý zoznam osobných pravidiel a názorov, ktoré sa naučili, pretože tieto pravidlá im v minulosti priniesli výsledky. ChatGPT preberá niektoré z týchto pravidiel z kódu, ktorý vidí na internete, ale nedokáže sa naučiť nové pravidlá, keď sa niečo pokazí alebo keď dostane negatívnu spätnú väzbu. ChatGPT má preto tendenciu dookola opakovať tie isté chyby.
Vtip je v tom, ako to všetko pripomína moju mladosť v deväťdesiatych rokoch, dobe „skutočných programátorov“, ktorí písali svoje programy zhora nadol bez toho, aby ich čo i len raz testovali. Vtedy nikto nečítal API dokumentáciu, ak vôbec nejaká bola. Ľudia používali len tých pár API, ktoré dobre poznali. Krátke, algoritmicky husté programy boli zdrojom hrdosti. Písalo sa aj veľa krátkych batch programov a skriptov. Dalo by sa povedať, že ChatGPT je do značnej miery takýto staromódny programátor z 90. rokov.
Samozrejme, táto sranda nás všetkých prejde, keď sa ChatGPT zlepší alebo získa inteligentnejšieho konkurenta. Nedávno oznámené pluginy mu s najväčšou pravdepodobnosťou umožnia vyhľadávať v dokumentácii, skontrolovať kód pomocou kompilátora a spúšťať unit testy a konzolové programy. Ľudia už experimentujú s iteratívnou aplikáciou jazykových modelov (pozri napríklad LangChain). Priestor na poznámky a navigácia v kóde v IDE štýle by mohli byť implementované ako pluginy, ale skutočná veľká pamäť by ChatGPT umožnila robiť lokálne úpravy pri zohľadnení kontextu celého projektu.
Zbieranie skúseností v skutočnosti nevyžaduje učenie v reálnom čase. Ročný aktualizačný proces pravdepodobne integruje spätnú väzbu zo súčasných interakcií používateľov. Mesačné a týždenné aktualizácie by ChatGPT priblížili ľudskému tempu učenia. Súkromné jazykové modely trénované na relevantných projektoch vrátane súkromných databáz majú lepšie šance osvojiť si zručnosti a preferencie špecifické pre danú prácu.
Takže nie, aktuálna verzia ChatGPT ešte neznamená prelom v produktivite programátorov, ale aj v súčasnom stave šetrí čas a v tomto desaťročí sa pravdepodobne dramaticky zlepší.