Programujeme s ChatGPT — lekce #1

Jiri Stepan
Etnetera sense
Published in
4 min readMar 14, 2023
Photo by Christopher Robin Ebbinghaus on Unsplash

Jeden můj syn se vrhnul na skvělý korenspondeční kurz programování od MFF UK pro středoškoláky. Dále jen KSP. Mimochodem KSP je skvělé a syna baví. Ale téma bude jiné.

Můj druhý syn vyjádřil — celou silou své pubertální moudrosti — jistou pochybnost, zda vlastně je tohle potřeba. Vždyť přeci již teď máme OpenAI, GitHub Coopiloty a do pár let bude programování zbytečné. Potlačil jsem automatickou boomer reakci a rozhodl jsem se vzít tuhle námitku vážně.

Doposud jsem generativní AI používal pro zadání typu “potřebuji funkci co bere tyhle parametry a dělá to a tohle.” Tedy víceméně přepis pseudokódu do Pythonu případně Javascriptu. Bral jsem to jako další evoluci snipetů kódu, kdy vím co chci napsat a jenom si to usnadním.

Zde k tomu přistupuji jinak.

Zkusím prozkoumat, zda lze úlohy ze semináře řešit bez znalosti programování . Jenom co nejvolnějším zadáním Chat GPT od OpenAI.

Ostatně není to samoúčelné. I naši klienti v rámci digitální transformace intenzivně řeší, do jaké míry je vlastně AI spolehlivá a uvažují jak změní potřeby na trhu práce.

Hello world

Prvním krokem je schopnost spustit vůbec na mém počítači nějaký Python program. Ostatně tohle je i první úloha KSP. Zkusme to.

To je na první dobrou velmi dobré. Abych ale mohl fungovat dále, musíme se naučit i program spustit.

Nedokáži posoudit, zda by i začátečník tohle dal. Mně to přijde ok a věřím, že s dalším dotazováním případně standardním googlením by k základnímu setupu prostředí došlo.

První úloha: Hrošík počítá slovíčka

Posílen úspěchem jsem se rozhodl přeskočit zbytek kurzu a jdu na první soutěžní úlohu z archivu: hledání počtu slov mezi dvěma slovy ve slovníku. Zkusím to tentokrát česky.

Upřímně na tohle zadání jsem ani nečekal, nějakou inteligentní reakci, ale byl jsme velmi mile překvapen.

Obdržel jsem na první dobrou kód, který:

  • úlohu řeší a to správně
  • používá relativně pěkné konstrukty — například načtení vstupu je vlastně skoro nejlepší možné. Ok — možná bych tam pro jistotu dal .strip() , ale to je detail
  • je vysvětlen docela přehledně

Upřímně — to není vůbec špatné.

Na druhou stranu — není to dokonalé. Zbytečně často se hledá v poli words a také bych asi použil funkci abs místo toho prohození indexů.

Tak jsem se na to zeptal zeptal.

… a následovala modifikace s binárním půlením a jeho vysvětlením a potom i odhadem složitosti. Ptal jsem se dále.

Hmm, to není špatné. Jako další test mne zajímala schopnost pochopit ukázkové řešení od autorů KSP.

Opět jsem byl mile překvapen, kdy správně pochopil vytvořený slovník orders. Tedy to co sám nenavrhl jako vhodné řešení. A jako perlička se mi líbila schopnost vysvětlit některé složitější Python konstrukty, které by začátečníka mohly trochu vyděsit.

První úloha podruhé

Možná jste si všimli, že jsem to chatbotovi trochu usnadnil. Z toho celého zadání úlohy jsem vybral jenom tu formální část. Tu, kde už autoři úlohy formalizovali vstup a výstup a popsali jasně co se má dít. Co kdybych byl opravdu obyčejný uživatel, který se ptá normálně? Zkusil jsem tedy skutečně neprogramátorské zadání.

Wow. To jsem upřímně nečekal.

Zkusíme to ještě abstrakněji s využítím originálního textu o Hrošíkovi Kevinovi. A zkusím to opět česky.

Tohle trvalo dlouho a chatbot se zasekl, ale výsledek dává docela smysl.

Nakonec bychom se řešení dobrali. Zajímavé je, že si do pole slovník nageneroval asi 60 názvů zvířat od “ant” po “zebra”. Taková pěkná iniciativa.

Summary

Při řešení té nejlehčí úlohy si ChatGPT nepočínal vůbec špatně. Dokázal mne naučit používat Python a následně programovat na základě zadání. Zpočátku jsem konverzaci vedl prevetivně anglicky, ale postupně jsem přešel na češtinu a vysledky byly stále dobré a nenarazil jsem na limity.

Pochopitelně tu je stále ta kruciální otázka, jak vlastně poznat, že je řešení správně. Mohu mu věřit nebo ne? Pokud neumím programovat, tak nezbývá než zkusit dostatek příkladů, které mohu zkusit zadat navrženému programu. S jejich generováním mi může opět pomoci AI.

Příště se vrhnu na nějakou těžší úlohu, kde již je třeba trochu více přemýšlet a algoritmizovat.

--

--

Jiri Stepan
Etnetera sense

Vedu tým skvělých lidí ve firmě Etnetera. A zajímá mne ebusiness, cestování, sci-fi, divadlo, triatlon, ...