Teória 1: Úvod a motivácia¶
Nahradia nás AI agenti?¶

AI nástroje (Copilot, Cursor, Claude Code a agentické systémy) už píšu veľkú časť kódu. Vo veľkých firmách ide o desiatky percent nového kódu; práca sa posunula od písania kódu k špecifikácii, kontrole, architektúre a orchestrácii agentov. Prieskumy hovoria, že vývojári trávia menej času písaním a viac recenziou a overovaním AI výstupu.
Produktivita stúpla, dôvera v AI kód je však nízka. Firmy teda stále potrebujú ľudí, ktorí výstupu rozumejú a nesú zaň zodpovednosť. Ak AI agentov necháte robiť všetko za vás, budete vytvárať iba odpad, pomyje (AI slop). Takto generovaný kód sa rýchlo stane neprehľadným, ťažkopádnym a k riešeniu vášho problému sa nedopracujete.
Majú programátori uplatnenie?¶
AI nenahradila vývojárov ako profesiu, no výrazne zmenila, čo sa od nich očakáva a kto sa dokáže zamestnať. Cieľom programovania totiž nikdy nebolo písať kód. Cieľom je vždy vyriešit konkrétny problém a firme priniesť hodnotu, ktorá sa odzrkadlí v raste tržieb alebo poklese nákladov.
Programátorské miesta sa posunuli od písania kódu k zadávaniu požiadaviek, návrhu systému a overovaniu toho, čo vygeneruje AI. Tradičné juniorské pozície sú ohrozené a dopyt sa sústreďuje na seniorov.
To neznamená, že študent musí už hneď po strednej byť senior v korporátnom zmysle. Znamená to, že seniorské zručnosti si musí budovať skôr a väčšinou sám.
Pred tým je však potrebné osvojiť si základy. Kto nepozná základy, robí tri typické chyby:
- prijme kód, ktorý „vyzerá dobre“. AI kód je pekne naformátovaný a sebavedomý. Chyby sú často logické, nie syntaktické. Bez predstavy o cykloch, stavoch, zložitosti a okrajových prípadoch tieto chyby nevidíte.
- nevie zadať úlohu. Špecifikácia úlohy („chcem toto, s týmito obmedzeniami, pri týchto dátach“) je programovanie v hlave. Kto nevie rozložiť problém, dostane od AI náhodný prototyp, nezapadajúci do celkového riešenia.
- nevie opraviť zlyhanie. Produkcia padá na veciach, ktoré AI „skoro trafí“. Debugging bez modelu výpočtu je hádanie.
Použitie AI agenta Kilo Code a Grok 3 mini vo Visual Studio Code na vytvorenie JavaFX projektu
Na tomto predmete máte príležitosť naučiť sa základy a tak isto aj pokročilé zručnosti v oblasti programovania. Pri učení základov je častým pokušením nechať za seba rozmýšľať umelú inteligenciu. Ak tomu odoláte, budete rýchlo napredovať a po škole si prácu nájdete oveľa jednoduchšie.
Čo je objektovo orientované programovanie¶
Programovanie sa vyvíjalo od nízkoúrovňových jazykov k postupne zložitejším paradigmám. Objektovo orientované programovanie predstavuje jednu z nich.
Paradigma určuje spôsoby, akým by sa malo riešenie danej úlohy - implementácia - vyjadriť a zapísať v danom programovacom jazyku. Programovacích paradigiem je veľké množstvo a jeden programovací jazyk ich často podporuje viacero. V jazyku Python a aj v jazyku Java sa stretneme s nasledovnými:
- Štruktúrované programovanie - používanie sekvencie príkazov, podmienok, cyklov, a blokov kódu
- Procedurálne programovanie - rozdelenie kódu na podprogramy či funkcie, ktoré sa vedia navzájom volať
- Objektovo orientované programovanie - používanie objektov, zapuzdrenia a polymorfizmu
- Funkcionálne programovanie - funkcie bez názvu, schopnosť funkciu posielať ako argument, alebo návratovú hodnotu
- Súbežné programovanie - rozdelenie programu do častí, ktoré sú vykonávané súbežne, teda úlohy sú vykonávané súčasne naraz
Programovací jazyk Java¶
Pre ekosystém a platformu Java sú typické nasledovné vlastnosti:
- Platformová nezávislosť - Kód sa prekladá do tzv. bajtkódu (bytecode) a beží na JVM. Mottom Javy je Napíš raz, spusti všade (Write Once, Run Anywhere, WORA).
- Statické typovanie - typy premenných sú známe a kontrolované už pri kompilácii
- Dlhodobá stabilita a kompatibilita, vysoká bezpečnosť - Staré Java programy často bežia aj na nových verziách JVM bez úprav
- Podpora paralelizmu, multithreadingu a distribuovaných systémov - Zabudovaná podpora pre viacvláknové aplikácie a súbežné spracovanie dát.
- Všestrannosť použitia, škálovateľnosť a vysoký výkon - Java je vhodná pre webové, mobilné a aj veľké podnikové aplikácie
Java sa dnes využíva hlavne vo veľkých enterprise systémoch, webových back-endoch, cloudových aplikáciách a finančných systémoch. Je taktiež aj dominantnou platformou na vývoj mobilných Android aplikácií. Tam je populárnym jazyk Kotlin, ktorý beží nad platformou Java a ponúka jednoduchšiu syntax.
Hlavné nevýhody Javy sú nižší výkon v porovnaní s low-level jazykmi a vyššia spotreba pamäte. Ďalej je to "verbózna", teda príliš ukecaná syntax, kedy často aj jednoduchá vec je zapísaná na desiatkách riadkov. Z dôvodu použitia JVM majú programy v Jave pomalší štart aplikácií (to sa však dnes dá riešiť špeciálnym kompilátorom). Statické typovanie a mohutnosť jazyka, knižníc a nástrojov sú často pre začínajúcich programátorov zložité na pochopenie.
Zhrnutie teórie¶
- AI transformovala programovanie
- Vývojári trávia menej času písaním a viac recenziou a overovaním AI výstupu
- Slepá dôvera v AI vedie k produkovaniu AI odpadu
- Bez znalosti základov sa robia 3 typické chyby
- prijme sa kód, ktorý „vyzerá dobre“, ale je logicky chybný
- nevie sa správne zadať úloha. AI vyprodukuje náhodný prototyp, nezapadajúci do celkovej architektúry.
- neschopnosť opraviť zlyhanie u vecí, ktoré AI „skoro trafí“
- Objektovo orientované programovanie ako paradigma
- Je spôsob, ako zvládať komplexnosť programov
- Modeluje svet podobne ako ho vnímame my
- Zavádza používanie objektov, zapuzdrenia a polymorfizmu
- Implementácia - praktické uskutočnenie alebo naprogramovanie určitého návrhu alebo algoritmu
- Abstrakcia - proces, pri ktorom sa zameriavaš len na dôležité vlastnosti a skrývaš nepodstatné detaily.
- Programovací jazyk Java
- Možnosť používať objektovo orientované a aj funkcionálne programovanie
- Používa statické typovanie, kde typy premenných sú známe a kontrolované už pri kompilácii
- Dlhodobo stabilný a kompatibilný, s vysokou bezpečnosťou
- Virtuálny stroj Java Virtual Machine (JVM) umožňuje spúšťať programy nezávisle od operačného systému alebo hardvéru
- Ponúka mohutnú sadu knižníc, nástrojov a štandardizované Java API
- Dominuje v podnikových aplikáciách a v prostredí Android
Poznámky do zošita
V zošite je potrebné mať napísané aspoň tieto poznámky:
AI
AI Asistent - odpovedá na otázky
AI Agent - samostatne vykonáva úlohy
AI Slop - odpad, vznikne ak AI slepo dôverujem
OBJEKTOVO ORIENTOVANÉ PROGRAMOVANIE
Paradigmy v programovaní:
- Štruktúrované
- Procedurálne
- Objektovo orientované
- Funkcionálne
Vlastnosti:
- intuitívne modely podľa nášho sveta
- zvláda väčšiu komplexnosť
- znovupoužitie
JAZYK JAVA
Vlastnosti:
- objektovo orientovaný
- platformovo nezávislý
- staticky typovaný
Použitie:
- Android aplikácie
- webový back-end
- distribuované systémy (cloud)
Platformová nezávislosť:
- kód sa kompiluje do bytecode a beží nad JVM
- motto Javy: Write Once, Run Anywhere (WORA)
- virtuálny stroj JVM (Java Virtual Machine)
Skúšanie a kontrola vedomostí
Na ďalšej hodine budeme kontrolovať nasledovné veci:
- Zapísané poznámky z hodiny vo vašom zošite
Ústne skúšanie:
- Aká je úloha programátora vo svete, kde sa používajú AI asistenti a agenti?
- Aké typické chyby robí programátor pri používaní AI, ak neovláda základy?
- Aké rôzne programovacie paradigmy poznáme?
- Z akej potreby vzniklo objektové programovanie?
- Čo nové nám OOP prináša?
- Aké sú typické vlastnosti jazyka Java?
- Bonus: Čo znamená: Napíš raz, spusti všade (Write Once, Run Anywhere, WORA)?
- Bonus: Aké sú nevýhody jazyka Java?
- Bonus: Čo znamená skratka JVM, na čo slúži?
