Umelá inteligencia ako pomoc pri programovaní: Dokáže písať lepší kód ako človek?
Alexandra Vaszily|22.03.2023
Kedysi námet sci-fi filmov, dnes skutočná realita. Vývoj umelej inteligencie stále napreduje a dnes už dokáže veci, o akých sa nám kedysi len snívalo. Nielenže za vás napíše domácu úlohu či článok, ale pomôže vám aj s programovaním. Je na mieste obava, že AI jedného dňa nahradí programátorov?
Čo je ChatGPT?
Na konci roku 2022 upútal pozornosť verejnosti nový nástroj umelej inteligencie ChatGPT, ktorý vyvinula spoločnosť OpenAI. Ide o vylepšeného chatbota, ktorý využíva internet a deep learning na generovanie odpovedí prakticky na čokoľvek. Dokáže zodpovedať otázky o zmysle života, napísať báseň či blogový článok, ale tiež programovať.
ChatGPT dokáže obdivuhodne pracovať s jazykom. Bol totiž trénovaný na množstve rôznorodých textov, ako sú knihy, noviny a webstránky, vďaka čomu vie šikovne identifikovať a používať jazykové štruktúry a pracovať s kontextom. Výhodou je, že mu nerobí problém ani slovenský jazyk, hoci lepšie výsledky zvyčajne získate pri zadávaní v angličtine.
Samozrejmosťou je učenie sa v čase. Čo to znamená? Nástroj sa neustálym používaním, dostávaním nových podnetov a generovaním nových výsledkov zlepšuje a zvyšuje tak level svojich schopností. Ide zrejme zatiaľ o najdokonalejší nástroj na generovanie odpovedí podobných človeku.
AI a programovanie
Ako sme už spomenuli, ChatGPT neovláda len cudzie jazyky, ale aj tie programovacie. Kódiť dokáže napríklad v Pythone, PHP, JavaScript či TypeScript. Najlepšie zvláda práve Python, v ktorom sa AI, machine a deep learning najčastejšie programujú. Dôvodom je najmä jednoduchá syntax tohto programovacieho jazyka.
Nejde však o prvú umelú inteligenciu, ktorá zvláda programovanie. Jej predchodcom bol nástroj Codex, rovnako od spoločnosti OpenAI, ktorý sa postupne naučil písať kódy vo viac ako 12 programovacích jazykoch. Trénoval na základe množstva jazykových dát a miliardy riadkov kódu z rôznych zdrojov, vrátane úložiska GitHub. Na svoje fungovanie dnes Codex využíva nástroj GitHub Copilot, ktorý vám pomôže písať jednoduché kódy aj celé funkcie v reálnom čase.
S pomocou týchto nástrojov dokážete naprogramovať takmer čokoľvek, no treba rátať s dodatočnou kontrolou a vyhodnotením. Výsledok totiž nebude bez chýb a bugov. Základom však je, aby programátor vedel, čo chce „postaviť“. Celkový problém si potrebuje rozobrať na jednoduchšie a tie následne riešiť pomocou existujúceho kódu. Práve s tým pomôže niektorý zo spomínaných nástrojov, ktorý kódy vyhľadá a napíše za vás. ChatGPT tak neurobí celú prácu, no môže vám pomôcť ušetriť čas pri opakovanom prepisovaní už známych algoritmov.
Názor nášho developera
Za Coderamu Martin Švoňava:
ChatGPT som najprv pokladal za ďalšiu technologickú hračku, ktorej som neprikladal väčší význam ako existujúcim nástrojom pre dopĺňanie zdrojového kódu, ako sú TabNine alebo Github Copilot. Po pár „rozhovoroch“ s týmto nástrojom som ho začal brať skôr ako určitý doplnok na uľahčenie nielen programovania v zmysle generovanie zdrojového kódu, ale aj pre tvorbu textu, šablón či tabuliek.
V rámci pokusov začleniť ChatGPT do každodennej rutiny som v prvých momentoch zadával dopyty, ako napríklad „Vygeneruj mi synchrónny HTTP Request pomocou knižnice Spring Webflux“. Výstupom tohto pokusu bola z väčšej časti použiteľná štruktúra, kde na určitých miestach dokonca vygeneroval tzv. placeholdre (napr ${your_logic_here}) pre doplnenie hodnôt a kódu programátorom.
Následne som dopyt doplnil o vetu „doplň prosím aj zalogovanie odpovede a HTTP statusu“, čo síce dokázal, no riešenie bolo neoptimálne, nakoľko daný request potreboval spustiť 2-krát. Predposledným vstupom odo mňa bolo „použi len jeden request“, a kód naozaj dokázal optimalizovať.
Dúfajúc, že tieto dopyty boli dostatočne špecifické, zobral som vygenerovaný kód a pokúsil sa ho spustiť v rámci aplikácie, na ktorej pracujem. Výsledkom bolo niekoľko ohlásených chýb v zmysle neexistencie danej metódy v knižnici, čo som vyriešil posledným dopytom s otázkou: „Akú verziu si použil na vygenerovanie tohto kódu?“ Odpoveďou mi bola verzia danej knižnice. Ani po použití „správnej“ verzie sa metóda v knižnici nenašla, nakoniec som sa k nej dopátral starým dobrým „Googlením“.
Druhú úlohu, ktorú som v ten deň mal, bolo otestovať niekoľko kombinácií objednávania s rôznymi parametrami. Nakoľko som pragmatický človek, miesto dumania nad kombinatorikou som opäť otvoril ChatGPT.
Dopyt:
Mám tieto možnosti, vyžaduje sa schválenie áno/nie, vyžaduje sa konfiguračná úloha áno/nie, vyžaduje sa pridelenie roly áno/nie. Daj mi všetky možné kombinácie a zobraz ich v ASCII tabuľke, pričom posledný stĺpec nazvi "Stav".
Odpoveď:
Záver:
Tu vidím silu ChatGPT – v úlohách, kde na prvý pohľad viete, či je niečo správne a pochopené tak, ako ste si želali.
Čo z toho vyplýva?
Umelá inteligencia nám zatiaľ pomôže nanajvýš zautomatizovať niektoré procesy, ušetriť čas a zefektívniť prácu programátorov, ktorí sa pri vývoji softvéru môžu sústrediť na zložitejšie problémy a návrh architektúry. Určite však ich samotných nenahradí. Zatiaľ. :)