Viimastel aastatel on tehisintellekt (AI) teinud suuri edusamme, eriti tarkvaraarenduses. Tööriistad nagu GitHub Copilot, ChatGPT, CodeWhisperer jpt pakuvad võimalusi koodi genereerimiseks, vigade parandamiseks ja ka dokumentatsiooni loomiseks.
Seetõttu on paljude arendajate ja IT-d õppivate tudengite peas küsimus: kas AI võib asendada programmeerijad? Kas ongi enam mõtet õppida? Mis minust edasi saab?
Või on AI lihtsalt tööriist, mis vähendab rutiinseid ülesandeid ja võimaldab arendajatel keskenduda keerulisematele probleemidele? Uurime veidi, kuidas AI juba täna programmeerijaid aitab, millised on selle piirangud ja milliseks võiks tulevik kujuneda.
Kuidas AI on juba programmeerijaid aidanud?
Mõned viisid, kuidas see arendajate tööd mõjutab:
- Koodigeneraatorid ja autocomplete tööriistad – GitHub Copilot ja paljud muud IDE-de laiendused oskavad soovitada mingis kontekstis sobivaid koodijuppe või ka terveid valmis funktsioone, mis kiirendavad arendamist.
- Debugimine ja veaparandus – AI oskab analüüsida vigu ja pakkuda võimalikke lahendusi, muutes probleemide leidmise ja parandamise kiiremaks.
- Dokumentatsiooni ja kommentaaride genereerimine – AI suudab automaatselt selgitada keerulist koodi, muutes selle paremini mõistetavaks.
- Automatiseerimine ja nn boilerplate koodi genereerimine – AI aitab luua korduvkasutatavat koodi ja vähendada rutiinseid ülesandeid.
- Refaktoreerimine - AI abiga on võimalik olemasolev kood struktureerida paremini, lisades loetavust ja veakindlust.
- Testide kirjutamine - AI oskab juba praegu genereerida reaalselt töötavaid teste ning kui testid ei tööta, leida ka üles viga, mis võib olla nii koodis endas kui ka testis.
Tehisaru piirangud ja väljakutsed
Kuigi AI on hetkel juba üsna võimas ja kasutatav arenduses, on tal ka olulisi piiranguid:
- Loovus ja probleemilahendus – AI suudab genereerida koodi, kuid keerulised, innovaatilised lahendused nõuavad inimlikku loovust ja kriitilist mõtlemist. AI oskab tavaliselt teha seda, mida keegi enne on kuskil teinud (LLM mudel on õpetatud olemasoleva koodi peal)
- Veakindlus ja usaldusväärsus – AI genereeritud kood võib sisaldada vigu või turvaauke, mida inimarendajad peavad kontrollima. Ka võib olla AI nö poisoned, ehk siis õpetatud andmete peal, mis paneb ta meelega tegema soovitatud koodi turvaauke, et kasutajate tarkvara oleks häkitav.
- Optimeerimine ja jõudlus – AI ei pruugi alati luua koodi, mis on kõige efektiivsem või skaleeritavam.
- Suurte projektide korral abitus - AI-d on piiratud tavaliselt mingi nn context window ehk kontekstiaknaga, üle selle minnes ei saa ta enam koodist aru ja vigade arv kasvab liiga suureks.
Olles ise kasutanud Copilotit (peamiselt o1, o3-mini, Claude Sonnet 3.7 mudeleid) mitmete koodijuppide lihtsustamiseks ja refaktoreerimiseks, siis tavaliselt, olenemata kasutatavast LLM mudelist on mõistlik suurus context window normaalseks toimimiseks ca 1000 rida koodi. Üle selle minnes tuleb fail või komponent lõhkuda väiksemateks osadeks, sest piltilikult öeldes, saab siis AI mõistus otsa.
AI mõistus on otsas. Pildi allikas: Copilot AI |
Tulevik ja kokkuvõte
AI muudab programmeerijate rolli, aidates neil töötada kiiremini ja tõhusamalt. See võib automatiseerida suure osa varasemast arendustööst, kuid ei asenda (veel) programmeerijat.
Arendaja pole enam lihtsalt nö labidamees, vaid nagu dirigent, kes suunab AI-d, kes täpse juhtimise all viib sisse muudatusi, et süsteemid oleksid hallatavamad ja tõrkevabad. Ideaalselt loetavat koodi pole veel nähtud, kuid AI toob selle võimaluse meile palju lähemale.
Kuigi AI loob koodi, ei mõista ta seda täielikult ega suuda asendada loovust, kriitilist mõtlemist ja probleemilahendusoskust. Küll aga annab AI-d oskuslikult kasutav arendaja endale selge konkurentsieelise.
Allikad
1. Ülevaade levinud AI assistentidest. https://spacelift.io/blog/ai-coding-assistant-tools
2. GitHub Copilot. https://github.com/features/copilot
3. AI abilise "mürgitamise" ohtudest. https://developers.slashdot.org/story/25/03/23/2138230/how-ai-coding-assistants-could-be-compromised-via-rules-file