Článek
Článek si také můžete poslechnout v audioverzi.
„Více než čtvrtinu našeho nového kódu už píše umělá inteligence,“ utrousil jakoby mezi řečí Sundar Pichai během kvartálního hovoru s investory. Podle něj to zvyšuje efektivitu programování ve firmě Google. Dodal, že programátoři samozřejmě kód zkontrolují, než jej použijí. Takové oznámení může působit nečekaně. Kdo ale vývoj sleduje, ví, že jsme se do tohoto momentu dostali postupnými a poměrně předvídatelnými kroky.
Čtete ukázku z newsletteru TechMIX, ve kterém Pavel Kasík a Matouš Lázňovský každou středu přinášejí hned několik komentářů a postřehů ze světa vědy a nových technologií. Pokud vás TechMIX zaujme, přihlaste se k jeho odběru!
Programátoři mají konkurenci i pomocníka
Když se kolem roku 2019 ukázalo, že neuronové sítě (konkrétně velké jazykové modely) dokážou na základě zadání generovat smysluplný text, bylo to pro řadu lidí překvapení. Pro někoho bylo ale ještě větším šokem, že stejné jazykové modely jsou zároveň nečekaně dobrými programátory.
Slovíčko po slovíčku
Zkratka GPT znamená generativní předtrénovaný transformátor. Můžeme si to přeložit jako: neuronová síť, která je vycvičená k transformování. Skládá za sebe slova způsobem, který vypadá smysluplně.
Byli tím překvapení i samotní tvůrci těchto jazykových modelů. Pamatuji tiskovou konferenci OpenAI ze srpna 2021, tedy celý rok a tři měsíce před uvedením ChatGPT. Vedli ji Greg Brockman, Wojciech Zaremba a Ilya Sutskever. Tři programátoři, všichni členové zakládajícího týmu OpenAI. Mimochodem, všichni tři od té doby z OpenAI odešli, i když Brockman prý jen dočasně.
OpenAI byla v té době stále relativně neznámá „laboratoř“, a živě streamovaná tiskovka tomu odpovídala. Já jsem v té době soukromě experimentoval s programovacím asistentem Tabnine, který byl schopen občas nabízet i celé řádky kódu (a dokonce někdy dávaly smysl). Microsoft zase používal už od roku 2021 asistenty založené na GPT-3. Čekal jsem tedy něco na ten způsob.
Místo toho tito programátoři – často s neskrývaným překvapením – mluvili o tom, že jejich jazykový model GPT-3 je překvapivě dobrý v psaní kódu. A když dostane trochu lepší pobídky, umí vyřešit 37 % programátorských problémů. „Prostě počítači řeknete, aby něco udělal. A on to vážně udělá,“ vysvětlil jednoduše Greg Brockman.
Pokud máte nějaké zkušenosti s programováním, schválně se na tu prezentaci podívejte. Ta zadání pro AI jsou až legračně jednoduchá: „Udělej mi stránku, na které je ikonka člověka, a toho můžeme pomocí kláves ovládat a bude uhýbat před padajícím obrázkem kamene.“ Tyto instrukce navíc museli programátoři dávkovat postupně, a šlo zcela jistě o úkol, který by sami dokázali vyřešit.
Už tehdy tedy mohly AI nástroje sloužit těm programátorům, kteří věděli, co chtějí. Umělá inteligence jim umožnila dostat se k výsledku rychleji. Ale pro většinu programátorů, se kterými jsem to v roce 2022 probíral, to nebylo moc užitečné. Bylo to jako úkolovat juniorního kolegu jednoduchými věcmi, a pak se zlobit, že to udělal jinak, než měl. Jako ukázka dobré, ale v praxi málo použitelné.
Pak přišel ChatGPT s vylepšeným modelem GPT-3.5 a krátce poté GPT-4. Najednou dokázal chatbot naprogramovat i složitější věci. Programátoři se postupně naučili odhadnout, co má cenu dělat ručně, a co raději zadat chatbotovi. Microsoft přišel se svým GitHub Copilotem, který umožnil našeptávání a doplňování kódu přímo v prostředí, na které jsou profesionální programátoři zvyklí.
Právě to byl podle mého klíč k úspěchu. Profesionálové obvykle nechtějí od základu proměnit způsob své práce, zvláště když se na výsledky nemohou spolehnout. Takto ale mohli mít AI asistenta po ruce, akceptovat jeho návrhy a přitom neztrácet moc času jeho blouzněním. Z průzkumu z roku 2022 vyplývá, že programátoři tehdy „přijali“ 20 až 30 procent z navržených kusů kódu, které pro ně GitHub Copilot vymyslel.
Teď to může bez obav zkusit každý
Když jsem v roce 2023 psal návod, jak učit děti programovat, zvažoval jsem, jestli čtenářům nedoporučit „požádejte ChatGPT, aby vám to naprogramoval“. Zkusil jsem tedy několik pokusných zadání pro jednoduché hry v HTML s JavaScriptem, což považuji pro začátečníka za nejjednodušší zkratku do světa programování.
Vygenerované kódy byly velmi použitelné, ale jen pro někoho, kdo aspoň trochu programovat uměl. Obvykle to fungovalo tak na 95 %. Ale pokud by mi někdo dal auto, které je na 95 % hotové, moc mi to nepomůže, protože autům nerozumím a těch posledních pět procent prostě neudělám, ani kdybych se rozkrájel. A v téhle pasti bylo „AI programování“ uvízlé poměrně dlouho. Profíkům takový asistent ušetří práci, ale celý projekt neudělá. Začátečníkům pak dal „skoro celé řešení“, ale následným opravováním spálil člověk, který není zvyklý programovat, více času a energie, než kolik ušetřil.
To platilo až do letošního léta, kdy přišel Claude se svým doplňkem Artifacts. Nejenže byla kvalita kódu lepší, ale zvýšil se i uživatelský komfort. Kód si můžete nechat nejen vygenerovat, ale rovnou i spustit a postupně vylepšovat.
Už dříve jste samozřejmě vygenerovaný kód mohli z chatbota zkopírovat do externího editoru, uložit a spustit. Teď se to díky Artifacts děje samo a překvapivě rychle. Zní to jako maličkost, která ale může programování zpřístupnit i lidem, kteří se jej zatím báli.
Občas chatbot udělá chybu. Třeba napíše jen část kódu s poznámkou „zbytek zůstává stejný“, lenoch! Ale stačí mu připomenout, kdo je tady pánem: „Ty jsi počítač, ty tam doplň ten kód. Vždy mi dej celý kód, aby šel okamžitě spustit.“ A už se zase chytne.
Programování malých HTML + JS nástrojů je celkem bezpečná záležitost i pro začátečníka. Nemusíte řešit, co s kódem dělat, kam to nahrát, co kompilovat nebo jaké knihovny stahovat. Prohlížeč „snese všechno“, zároveň je celkem dobře zabezpečený a jde tedy o bezpečné hřiště.
AI je vaše vstupenka do světa programování
Když se dnes bavím s programátory, málokdo z nich AI nástroje vůbec nepoužívá. Už se to stalo součástí pracovního procesu. Jsou integrované do vývojářských editorů.
Všímám si postupného posouvání hranic. Ještě před rokem jsem slyšel: „AI můžu svěřit napsání jednoduché funkce, ale to je tak všechno.“ Dnes je to spíše: „AI můžu svěřit naprogramování jednoduchého rozhraní, strukturu databáze, zprovoznění webu nebo navržení administrátorského rozhraní, ale jsem to já, kdo to musí všechno vymyslet a zkoordinovat…“
Zkrátka, za ty dva nebo tři roky se AI nástroje staly mnohem schopnějšími programátory. A ti lidští programátoři (ne všichni, ale velká část z nich) je umí pragmaticky zapojit. Řadu problémů, které dříve řešili vyhledáváním na specializovaných webech nebo se zkušenějšími kolegy, prostě dnes proberou s chatbotem.
Vznikl nový styl práce, kombinace programování a úkolování AI nástrojů. Třeba takový Cursor (nyní spolu s Copilotem můj oblíbený nástroj) se snaží AI pomocníka integrovat od začátku do konce. Chatbot vám může vytvářet soubory, dělat úpravy ve více souborech naráz, dokonce mu můžete dát screenshot nebo dokumentaci a chatbot se to pokusí zohlednit. Nový GitHub Copilot tento přístup do značné míry kopíruje, můžete si nově vybrat, který jazykový model vám bude s kódováním pomáhat (včetně pověstné jahody, tedy o1-preview od OpenAI).
Mnohem více se to podobá práci projektového manažera: ten zadává práci programátorům, formuluje potřeby a zvažuje různé způsoby, jak projekt posunout do další fáze, ideálně aniž by tím úplně rozbil tu předchozí verzi.
Programovací asistenti pro začátečníky i experty
Obecné nástroje, které umí (nejenom) pomoci s programováním:
- ChatGPT – stále nejznámější chatbot, nabízí například zvýraznění kódu, rychlé kopírování, model o1-preview a funkci Canvas, hodí se pro začátečníky i pokročilé.
- Claude – v chatbotovi Claude je implementovaná funkce Artifacts pro snadný a rychlý náhled vytvořeného prográmku. Má omezený rozsah kódu, hodí se na rychlé prototypování. Nový model Sonnet 3.5 (New) občas potřebuje připomenout, že má generovat celý kód a ne jen jeho novou část.
GitHub nedávno představil koncept Spark, pomocí kterého budete moci vytvářet a publikovat „mikronástroje“. Něco podobného ale můžete dělat už nyní. Ať už v Claudovi, nebo v ChatGPT, nebo v pokročilejších nástrojích jako Cursor, Replit nebo Vercel.
A k tomu chci všechny čtenáře povzbudit. Zkuste najít způsoby, jak tohoto programátora (máte jej připraveného ve svém ChatGPT nebo Claude) zaúkolovat. Nechte si vytvořit na míru nástroj, který vám s něčím pomůže. Třeba s ořezáním obrázků, tvorbou tabulky, dotazníkem na míru, generováním QR kódu.
Říkám tomu „takové domácí programování“. Stejně jako si doma vaříte jídlo pro čtyři, zvládnete s AI vytvořit jednorázový nástroj pro sebe a svůj tým. Nenahradili jste tím „skutečného programátora“, ten umí vařit ve špičkové restauraci a požadavky na něj jsou úplně jiné. Ale pro zvýšení vaší produktivity mohou být i takovéto jednorázové prográmky opravdu velká změna.
„Nejzajímavějším novým programovacím jazykem je angličtina,“ tweetnul počátkem roku 2023 Andrej Karpathy, další z expertů, kteří z OpenAI odešli. Tehdy to mohli docenit jen kolegové programátoři. Nyní se dostáváme do fáze, kdy skutečně může – alespoň po domácku, pro své potřeby – programovat úplně každý. Programátorům to práci nejspíš nevezme, ale počítačového kódu přibude.
Domnívám se, že to může mít v úhrnu větší dopad, než AI texty a AI obrázky. Zatímco textu i obrazů nebyl nedostatek, tak programátorů byl vždycky nedostatek. Programování aplikací na míru bylo drahé, takže nás ani nenapadlo, kde všude by se nám hodily. A teď se můžeme na svou práci podívat očima programátora (či spíše šéfa programátorů) a všimnout si úplně nových příležitostí.
„Prostě počítači řeknete, aby něco udělal,“ žasl v roce 2021 Greg Brockman z OpenAI. „A on to vážně udělá.“
Čtete ukázku z newsletteru TechMIX, ve kterém Pavel Kasík a Matouš Lázňovský každou středu přinášejí hned několik komentářů a postřehů ze světa vědy a nových technologií. Pokud vás TechMIX zaujme, přihlaste se k jeho odběru!
Oprava: U fotky jsme opravili jméno jednoho z přednášejících.