Programování a AI
Začínáte programovat v době, která je neuvěřitelně vzrušující. Tempo, které se již nám ve Vašem věku zdálo rychlé, je nyní mnohem rychlejší a technické novinky nepřicházejí v několikaletých intervalech, ale v intervalech několikaměsíčních či několikatýdenních. Umělá inteligence (AI) se již stala součástí našich životů a v programování to platí dvojnásob. Možná si kladete otázky, zda-li má ještě vůbec smysl se učit programovat nebo možná máte dokonce obavy. To je v pořádku – pojďme se na to společně podívat.
Cílem této stránky je odpovědět na otázky (dál se klidně můžete ptát na Discordu) a ukázat, jak naopak AI využít k tomu, abyste se stali lepšími programátory a to rychleji než Vaši předchůdci bez využívání těchto nástrojů.
Nahradí AI všechny programátory?
Odpověď je jednoduchá: Ne.
AI neslouží jako náhrada za člověka, ale jako jeho pomocník. Neuvěřitelně výkonný pomocník, ale stále pouze pomocník. Nikoliv autopilot, ale jakýsi co-pilot. To už ale zabíháme do světa jedné firmy – pojďme se raději držet obecně AI. Stejně jako kalkulačka nenahradila matematiky (a nenahradily je ani supervýkonné počítače), ale tyto technické nástroje umožnili matematikům řešit mnohem složitější problémy v kratším čase – stejně takové možnosti nabízí využívání AI v oblasti programování, webdesignu, návrhu databázových modelů, grafice, práci s kancelářskými dokumenty, a v mnohých dalších IT oblastech.
Má vůbec smysl se ještě učit programovat, když AI to udělá za mě, lépe a rychleji?
Ano, má to dokonce větší smysl než kdy dřív.
Představte si, že byste chtěli po umělé inteligenci, aby vám „postavila dům“. Jak jí to ale zadáte, jestli neznáte či nechápete základní termíny jako jsou nosné zdi, příčky, způsoby konstrukce stropů, rozvody elektřiny, vody, plynu, jaké možnosti jsou ve vytápění, a tak dále? Jak poznáte, že Vám dům, který navrhla vyhovuje?
Když se učíme programovat, neučíme se jen prostou syntaxi (if, for, while, function). Učíme se:
- algoritmicky myslet: jak rozbít velký problém na malé, řešitelné úkoly (anglicky se té metodě říká cut-the-elephant)
- logiku: jak fungují podmínky, smyčky, funkce, objekty, třídy, metody, atd.
- datové struktury: jak efektivně ukládat data
Právě tyto (a další) dovednosti jsou klíčové k tomu, abyste AI mohli správně řídit, mohli od ní převzít kus zdrojového kódu, který navrhla, abyste mu porozuměli a uměli jej správně využít. Dnes již není nutné psát z hlavy dlouhé bloky kódu, ale je nutné:
- umět zdrojový kód přečíst a porozumět mu
- umět zdrojový kód pozměnit
- umět zdrojový kód použít
Není možné se spolehnout na nástroj, kterému nerozumíte. Jasně, úkoly, kterými budeme začínat, AI zvládne na výbornou a téměř vždy bez chyby. Jak ale budeme pokračovat, uvidíte sami, že je nutné do jí navrženého kódu zasáhnout. A to nejde bez schopnosti čtení. A číst nemůžeme, když neumíme (alespoň trochu) psát 😉
Všechny úkoly za mě udělá AI a já se nic nenaučím.
Ano, to je reálná situace.
Je to stejné jako s opisováním domácích úkolů či písemných prací. Nejprve je nutné si to srovnat v hlavě: co je mým cílem? Dostat jedničku nebo se něco naučit? Projít z předmětu nebo se připravit na dobrou práci? Tím, že budete odevzdávat cizí domácí úkoly a u písemných prací používat nepovolené metody, si pouze zaděláváte na mnohem větší problém v budoucnu.
Můžete si od AI nechat napsat celý kód, bezhlavě jej zkopírovat a odevzdat. To se pak ale nenaučíte nic a Vaše šance na dokončení studia nebo na získání dobré práce v budoucnu rozhodně nevzrostou.
Nebo můžete AI používat chytře. Rozdíl je pouze v tom, jak s ní hovoříte:
- špatná otázka: „Napiš program, který načte 10 čísel a vypočítá jejich průměr.“
- správná otázka: „Učím se základy jazyka C. Můžeš mi vysvětlit, jak funguje pole, jak do něj postupně načítat čísla a jak s čísly v poli následně pracovat? Ukaž mi to na jednoduchém příkladu.“
Berte AI jako Vašeho osobního, neúnavného učitele. Učitele, který je vám k dispozici 24/7.
Jak tedy AI správně využívat?
Zde je pár tipů, které doporučuji:
- Nechte si vysvětlit koncepty. Zápasíte s něčím? Tak se zeptejte!
Vysvětli mi, co je to ta proměnná v programování, jako kdybych byl šestileté dítě.
Vysvětli mi, jaký je rozdíl mezi deklarací a inicializací v C. Ukaž na konkrétních příkladech. - Pomoc s laděním. Nechápete, proč váš kód nefunguje? Zeptejte se!
Následující kód hlásí chybu [vložte chybové hlášení]. Co ta chyba znamená, proč k ní došlo, a jak ji opravit? AI Vám nejen navrhne opravu, ale hlavně vysvětlí, proč k chybě došlo. - Generování dalších cvičení. Pochopili jste již úlohu, kterou jsme společně dělali, ale chcete si dále procvičovat? Zadejte ji do AI a řekněte, že chcete procvičovat.
Na minulé hodině jsme cvičili vnořené smyčky. Dělali jsme následující program: [vložte program ze cvičení]. Můžeš připravit 10 velmi podobných zadání, abych si mohl problematiku procvičovat? Ještě mi nepiš řešení, jenom zadání. - Refaktoring kódu. Napsali jste funkční kód, ale z nějakého důvodu se Vám nelíbí? Vložte jej do AI a uvidíte!
Napsal jsem tento funkční kód: [vložte zdrojový kód]. Jak bych jej mohl napsat ještě lépe, čistěji, efektivněji? Doporuč jednotlivá vylepšení a důkladně mi je vysvětli.
Jaké AI nástroje byste doporučil?
- Chatboti (Gemini, ChatGPT, Copilot, Grok, atd.) jsou konverzační AI, se kterými si povídáte v přirozeném jazyce. Jsou dobří na kladení otázek, vysvětlování konceptů, pomáhají s laděním a umějí generovat další cvičení.
Doporučuji na jednom monitoru mít otevřené okno s AI a na druhém kódovat. - NotebookLM je skvělý nástroj na hlubší pochopení – je zdarma pro Google uživatele. Můžete si tam vytvořit různé sešity pro různé okruhy látky, vložit si tam dokumenty, odkazy (třeba na konkrétní stránku z tohoto webu), nebo YouTube videa, a vytvoří se Vám souhrn v různých formách:
- kartičky k procvičování
- myšlenková mapa (mind-map)
- audio podcast
- prezentace (video)
- infografika
- Doplňky do editoru budeme využívat především v dalších ročnících například v editorech jako Visual Studio Code. Takovéto doplňky se snaží pochopit kód, jak jej píšete, a rovnou Vám navrhují celé příkazy nebo rovnou celé bloky kódu. Jsou perfektní na podporu správné syntaxe a na zrychlení zápisu rutinního kódu. Na začátek bych doporučoval je nevyužívat.
AI je neomylná. Nebo ne?
LLM (large language models), které často zaměňujeme za obecnou umělou inteligenci (AI), jsou postavené na principu neuronových sítí, které se trénují z existujícího obsahu (zveřejněného na internetu). Jsou to jen obrovské statistické modely, které hádají, jaké slovo s jakou pravděpodobností bude následovat po slově předchozím. AI nemyslí ani neví – minimálně ne tak, jak myšlení a vědění vnímáme my.
AI se může mýlit. Není neomylná. Proto jsme si výše říkali, že je dobré ji používat jako takového parťáka, nikoliv vševědoucího.
Několik základních problémů, které se se současnými LLM pojí:
- nesprávný prompt – stačí se nesprávně (často velmi vágně) zeptat, a AI odpoví – ale na něco trochu jiného 😉
- nepochopení kontextu – pokud Váš prompt není 100 % přesný, AI si domýšlí, co jste asi tak mohli chtít – a nemusí si to domyslet stejně (zatím je ještě pouze v počítači nebo telefonu, nikoliv v mozku)
- halucinace – může dojít ke stavu, že například použije funkci, která v daném jazyce neexistuje, nebo Vám poradí zdroje (knihy), které nikdy nebyly napsány, nebo popíše algoritmus, který je úplně nesmyslný, ale zní důvěryhodně
- zastaralá data – trénování LLM trvá mnoho měsíců, klidně i déle než rok. Proto moderní LLM si k datům, na která jsou natrénovaná, snaží vyhledat aktuální informace na internetu, ale to už není zdaleka tak efektivní, rychlé ani kompletní.
Zlaté pravidlo tudíž zní:
Snažte se pochopit, co Vám AI říká, otestujte to a dále použijte pouze, pokud tomu porozumíte. Nevěřte slepě všemu, co napíše. Nezapomeňte, že finální odpovědnost za kód máte vždy Vy – a ne AI 🙂