V poslední době se umělá inteligence a strojové učení stávají stále více populárními tématy, a to nejen v akademických kruzích, ale také mezi průmyslovými a technologickými společnostmi. Jedním z konkrétních příkladů využití umělé inteligence v programování jsou tzv. AI asistenti zdrojového kódu, kteří pomáhají programátorům při psaní kódu a přinášejí řadu výhod, jako je například zvýšení produktivity a efektivity.
V tomto článku se zaměříme na jeden z nejpopulárnějších nástrojů umělé inteligence pro dotazování a vyhledávání informací – ChatGPT a jeho využití v programování. Rozepíšeme si téma využití AI asistentů při programování, se zaměřením na asistenty pro zdrojový kód. Ukážeme si, jak mohou usnadnit práci programátora a zrychlit proces vývoje.
ChatGPT je v současnosti velmi populární nástroj, který slouží k dotazování a vyhledávání různých informací. Je to také nejrychleji se rozšiřující nástroj na internetu, který překonal hranici 100 milionů uživatelů za pouhé dva měsíce. Díky své všestrannosti se používá v mnoha oblastech, jako je psaní emailů, vytváření sloganů a reklamních poutačů, ale také pro sofistikované psaní studentských prací. Je ideální pro ty, kteří chtějí rychle a snadno najít informace nebo získat pomoc s psaním. Jeho použití se neustále rozšiřuje a je pravděpodobné, že se v budoucnu stane standardním nástrojem pro mnoho úkolů, které dnes vyžadují lidskou interakci.
V některých článcích na internetu autoři tvrdí, že ChatGPT není schopen psát zdrojové kódy a řešit úlohy, které vyžadují programátorské dovednosti. Toto tvrzení však nemohu zcela podpořit. Sám ChatGPT často používám při psaní složitějších SQL dotazů, u kterých jsem si nebyl zcela jistý správnou strukturou dotazu. ChatGPT mě několikrát překvapil a nabídl mnohdy lepší a rychlejší řešení optimalizace dotazu, než jsem sám dokázal navrhnout.
Kromě toho se ChatGPT výborně hodí pro vytváření rutinních operací, jako je například vytváření modelů. Stačí mu zaslat strukturu tabulky a požádat ho, aby na toto schéma vytvořil třídu. ChatGPT vytvoří třídu ihned v požadovaném programovacím jazyce, přihlédne k typům atributů v databázi a třídu zobrazí ve správném formátu.
Samozřejmě nemůže nahradit zcela lidské programátory (díky bohu, tedy alespoň prozatím), není to myslící stroj, nicméně jako „kolega“ je velmi nápomocen a svou ohromnou databázi znalostí dokáže na správně zadané požadavky zobrazit řešení, nad kterými bychom my lidé zbytečně ztráceli čas a můžeme se tak věnovat jiným, více specifičtějším problémům při vývoji požadované aplikace.
Co se týká pokládaných dotazů, tak stroji je celkem jedno, v jakém jazyce se mu otázka pokládá. Obecně každý vývojář by měl uměl anglicky, tedy by alespoň měl minimálně porozumět čtené dokumentaci, ale pro ChatGPT není problém ani čeština. I když jej OpenAI vycvičil pouze texty v angličtině, tak pro tento stroj je vlastně jazyk jen jiný způsob vyjádření daného problému a není tak problém zadávat dotazy v našem rodném jazyce. Navíc, pokud by dotaz obsahoval některá specifická slova nebo termíny v cizím jazyce, ChatGPT by si s nimi dokázal poradit, protože dokáže rozpoznat a porozumět kontextu, ve kterém jsou použity.
Díky této schopnosti je ChatGPT velmi univerzálním nástrojem, který může být využit ve velkém množství oblastí a v různých jazycích. Jeho použití není omezeno jen na programování nebo databázové dotazy, ale může být využit například při hledání informací na internetu, překladech nebo jako asistent v různých oblastech, kde je potřeba nějakým způsobem zpracovat a analyzovat textová data.
AI asistenti zdrojového kódu
OpenAI Codex nebo třeba i Tabnine, CodeT5, Polycoder či Cogram, toto jsou všechno asistenti, kteří pomáhají programátorům psát kód rychleji, čistěji a s menším počtem syntatických (a někdy i známých logických) chyb.
Obecně jsou AI asistenti specifickým typem nástroje umělé inteligence, který slouží k interaktivnímu programování. Tito asistenti obvykle pracují v rámci integrovaného vývojového prostředí a poskytují uživateli nápovědu a tipy při psaní zdrojového kódu. Na rozdíl od ChatGPT, který se specializuje na odpovídání na dotazy v textové formě, AI asistenti jsou schopni přímo interagovat s uživatelem a poskytovat mu podrobnější informace o konkrétním programovacím jazyce nebo o funkci, kterou se snaží implementovat.
AI asistenti často využívají technologie strojového učení a umělé inteligence, aby mohli co nejlépe porozumět kódu a poskytovat užitečné rady a doporučení. Mnoho AI asistentů také nabízí možnost přizpůsobení se konkrétnímu vývojovému prostředí a programovacímu jazyku.
Nicméně, i když se AI asistenti liší od ChatGPT v tom, jakým způsobem s nimi uživatelé pracují, oba nástroje mají společnou základní funkci a to pomáhat lidem v řešení složitých úkolů a problémů.
Mám osobní zkušenosti s AI asistentem GitHub Copilot, kterého mám nainstalovaného přímo jako plugin do PHPStormu, mého vývojového prostředí pro tvorbu PHP a obecně webových aplikací. Hned od začátku jsem žasl, jak dokáže jasně a přesně napovídat celé řádky kódu, a to i z pohledu kontextu. Pokud řeším SQL dotaz, Copilot mi přesně nabídne doplnění dotazu o atributy, které jsem si někde v kódu definoval. Pokud píši v JavaScriptu, Copilot ihned napovídá kód, který přesně využívá například JQUERY, protože prostě ví, že JQUERY v kódu existuje. A pokud píši HTML kód, Copilot okamžitě pozná, co se snažím vytvořit, a nabídne mi rozšíření kódu o hodnoty, které bych stejně musel později napsat. Tyto nápovědy značně zrychlují samotné psaní zdrojového kódu a já se mohu plně věnovat jeho správné implementaci.
Samozřejmě, že ne všechno dělá úplně dokonale, je to pouze nástroj. Občas se do kódu pokouší vměstnat text, který není úplně správný, zejména když používám česky psané názvy proměnných nebo funkcí, tak si někdy vymýšlí případné proměnné. Ale to je zkrátka jen výzva pro mě jako programátora, abych správnost nápovědy zvážil a případné nedostatky opravil. Dokonce, opravami se systém učí sám, takže když ho jednou opravím, nabídne mi příště řešení s již správnými názvy. Je to prostě geniální.
V budoucnosti bude používání těchto asistentů standardem pro každého programátora. Podobně jako dnes, kdy bychom si těžko představili programování aplikací bez vhodného vývojového prostředí (IDE), tak bez vhodného asistenta umělé inteligence už to bude brzy velmi obtížné.