Programování, jeho problémy a příležitosti v roce 2023

Jiří Macháček
EDTECH KISK
Published in
9 min readJun 7, 2023

Programování (popřípadě kódování) je jedna z klíčových kompetencí pro 21. století. Odvážné tvrzení, nad kterým možná někteří nevěřícně kroutí hlavou je zakódované přímo v DigComp frameworku pod tvorbou digitálního obsahu, tedy pod kompetencemi, které by měl mít opravdu úplně každý[1]. Je důležité zdůraznit, že se od „programování“ nečeká, že bude každý jedinec schopný přes noc naprogramovat e-shop nebo sám vytvořit AAA videohru. Rozumět ale základům a tomu, jak věci kolem nás fungují, dává smysl — a o tom „programování“ ve frameworku DigComp je. Ačkoliv je tedy bodem rámce znát i základy nějakého jazyka (např. Pythonu), spíše je tento bod o tom získat o programování povědomí, nebát se přijmout algoritmy a programy jako nástroj pro řešení problémů a přemýšlet nad digitálním obsahem více do hloubky[2]. S rostoucím potenciálem umělé inteligence v posledních měsících vyvstává otázka, zda ještě nějaké programování v budoucnu bude potřeba. A má smysl se ho tedy vůbec učit?

Photo by Florian Olivo on Unsplash

Jak programování dnes funguje

Programování, stejně jako všechny ostatní obory, prochází postupným vývojem. A stejně jako v ostatních oborech i v programování platí, že se vše optimalizuje, automatizuje, zrychluje a zlepšuje. Zkrátka aby člověk neměl tolik práce a stihl toho udělat více za méně času. Díky geniálním lidem a komunitě začaly vznikat nejrůznější frameworky — jakési nadstavby, díky kterým se programování stává jednodušším. Frameworky v sobě čítají předpřipravené funkce, případně celé komponenty a pomáhají automatizovat některé složité procesy, které automatizovat lze[3]. Tyto nadstavby poté mohou dostávat další aktualizace, dokonce vznikají i frameworky pro frameworky (např. Vue a jeho nadstavba Nuxt, nebo o něco populárnější React a jeho nadstavba Next). Do těchto uzavřených systémů pak může vývojář ještě stahovat nejrůznější moduly, a ještě více si tak ulehčit práci. To zní na první pohled skvěle a je to jeden z důvodů, proč vývojáři musí kódu rozumět.

Problém jménem komunita

Komunity jsou nedílnou součástí světa programování. Výše zmíněné frameworky jsou z většiny zdarma — maximálně crowdfundingově/sponzorsky podpořené. Komunita si mezi sebou často sdílí své poznatky, pokud se někomu povedlo zpracovat komponentu, za kterou se nestydí, často z ní vytvoří modul, aby se s tím ostatní nemuseli trápit a mohli využít jeho/její řešení. Žádné poplatky, žádné předplatné. Zároveň, pokud řešíte nějaký problém, můžete si být téměř jisti, že ho řešil i někdo před vámi. Není nic jednoduššího než jít na Stack Overflow a vyřešit ho s pomocí komunity. A pokud tento problém před vámi opravdu nikdo neřešil, můžete se na Stack Overflow zeptat a jistě vám někdo odpoví. Nejspíš proto v průzkumu za technickou dokumentací skončil na druhém místě — 86 % respondentů uvedlo, že Stack Overflow je místo, které pro naučení se programování používají/používali[4]. V tomhle je programování opravdu skvělé, nicméně to nutí vývojáře, hlavně ty začínající, polevovat v ostražitosti. Pomocí ChatGPT může dnes být programátorem téměř každý. Stejně jako kdykoliv od vynálezu počítače, je právě teď ten nejlepší čas s programováním začít. Jak ale upozorňuje David Gilbertson ve svém článku[5], pomocí celkem jednoduchého scriptu je například možné sbírat z webu jakékoliv informace (v jeho příkladu se jednalo o data o kreditní kartě). Nevyužil pro to plugin do Google Chrome, ani žádné pokročilé hacking metody. Vytvořil balíček (modul), který měl v očích vývojáře libovolně pozměňovat barvu textu v konzoli. Tento balíček pak distribuoval přes síť npm — což je největší software registr. Nejen jednotliví vývojáři, ale právě i samotné frameworky pomocí této sítě stahují jednotlivé moduly. Vytvářejí se tak různé balíčky, obsahující na sobě navzájem závislé knihovny/moduly, které se stáhnou najednou a vývojář je nemusí stahovat postupně[6]. To je běžná vývojářská praxe a neznám jediného vývojáře, který by npm (nebo obdobné sítě, jako např. yarn) nepoužíval. A tak se stalo, že jeho závadný kód byl součástí (závislostí) 23 různých balíčků.

Pro lidi, kteří se alespoň trochu vyznají v kódu může být zvláštní, že se něco takového povedlo. Sám Gilbertson také trochu mystifikuje o tom, zda je to vůbec pravda nebo ne. Nicméně popsal velmi detailně kroky, díky kterým by bylo jen velmi obtížné takto škodlivý kód odhalit. Dříve či později by se na to samozřejmě přišlo. Otázkou je, kolik čísel z kreditních karet by se tímto způsobem podařilo ukrást, než by se balíček podařilo odstranit. Pokud by to vůbec bylo možné. Důvod proč David Gilbertson tento článek napsal nebyl ten, aby se pochlubil tím, kolik aut si koupil za ukradené peníze — důvodem bylo upozornit na to, že je zde taková možnost. V navazujícím článku Gilbertson nastínil i to, jak se proti takovým útokům bránit[7] a jednalo se tedy spíš o obohacení komunity. Tento příklad je jen jeden z mnoha, jakým způsobem lze využít ať už důvěřivosti, technických chyb, nebo nevzdělanosti uživatelů. A je to jeden z argumentů na otázku, zda je vzdělávání v oblasti programování relevantní. Samozřejmě nelze předpokládat, že jedinec bude schopen do detailu pochopit, jak věci fungují — stačí ale mít základní znalost o tom, že pokud po uživateli někdo chce vyplnit údaje o kreditní kartě přímo na webu, je na čase zpozornět. A to i v případě, že danému e-shopu a značce člověk bezmezně důvěřuje, protože o tomto promyšleném phishingu nemusí ani vědět. Takových nástrah je na internetu samozřejmě hodně. Se rostoucími znalostmi o tom, jak věci fungují se ale může uživatel spoustě problémům vyhnout.

Umělá inteligence vládne i v programování

Pokud mluvíme o trendech (nejen) v programování, letošní rok je ve znamení AI. Umělá inteligence začala pohlcovat mediální prostor všude kolem nás a technologičtí giganti se předhánějí v tom, komu se podaří vytvořit tu nejlepší. Pocit, který cítíme dnes s ChatGPT, prožila programátorská komunita poprvé už v roce 2021, kdy na svět přišla první preview verze Github Copilot. Za tím stojí stejná společnost, jako právě za výše zmiňovaným ChatGPT, OpenAI[8]. Copilot je opravdovým zázrakem. Jedná se o rozšíření (které je pro studenty dokonce zdarma) do Visual Studio Code[9], po jeho nainstalování a spárování s GitHub účtem Copilot analyzuje váš kód a pokusí se doplnit text, který zrovna píšete, v jazyce, v jakém ho zrovna píšete. Vycvičený je na milionech řádcích kódu samotných uživatelů, kteří na GitHub svůj kód vložili[10]. Copilot často zvládá propojit i různé funkce z různých souborů v projektu, kontext chápe téměř dokonale a pokud člověk s programováním zrovna začíná, může být obrovským pomocníkem.

Stačí napsat pouze název funkce a zbytek si GitHub Copilot domyslí

Samozřejmě Copilot není dokonalý. Dokáže ale poskytnout často kvalitnější kód než někteří juniorští vývojáři. Tento kód je pak potřeba ručně projít a opravit chyby. Samotná kvalita kódu se pak odráží od zadaného promptu, který musí vytvořit někdo, kdo programování rozumí[11] a vytvoří celou logiku za aplikací. A jaké jsou stinné stránky? Při mé obhajobě bakalářské práce, kde byl Copilot zmíněn, padla otázka ohledně etiky. A dává smysl — GitHub Copilot je trénovaný na kódu z veřejných GitHub repozitářů[12]. Data, která uživateli napovídá jsou tedy vlastně „ukradená“ od jiných vývojářů. Alespoň to si myslí Matthew Butterick, programátor a právník, který podal žalobu Microsoft, GitHub, and OpenAI. Podle jeho slov je učení neuronových sítí z repozitářů GitHubu v současném rozsahu ilegální, nefér k uživatelům a eticky špatné. Zároveň se však nestaví proti technologii jako takové — z jeho pohledu je jen nutné udělat určité změny. Situaci přirovnává k aplikaci Napster, která fungovala na principu peer-to-peer a využívala se k distribuci hudby. To bylo samozřejmě nelegální — ale z nápadu vzešly aplikace, jako je například Spotify, které už problémy se zákonem vyřešily[13]. Otázka zákona a etiky je samozřejmě silná věc. Neuronové sítě a jejich masové používání jsou tu s námi relativně nově a je těžké určit přesná pravidla, jak postupovat. Butterick má určitě pravdu v tom, že AI není nějaká magická černá schránka, která by byla vyňata ze zákona, musí pro ni platit stejná pravidla. Nicméně pokud byla data opravdu trénována tak, jak GitHub prezentuje, tedy na veřejných repozitářích (což znamená, že k nim měl přístup kdokoliv), je otázkou, zda se jedná opravdu o porušení zákona. Co si o tom myslí samotní kódeři a programátoři právě z etického hlediska je další otázkou. Z diskusí a komentářů k celé kauze je ale možné vypozorovat, že někteří kód, který Copilot vyprodukuje za krádež nepovažují[14]. Záleží samozřejmě na tom, kdo a jak Copilot využívá, nicméně logiku a design kódu musí programátor stejně vymyslet sám— aby mohl zadat prompt. Copilot pomáhá nejenom se samotným kódem, ale i s datovou výplní. Může tedy zastoupit klasické lorem ipsum a vyplnit smyšlenými daty obrovská pole, která tak naberou nový rozměr a více se podobají realitě dat skutečných. Navíc, vzhledem k tomu, co již padlo výše, komunity v oblasti programování fungují opravdu hodně na principu sdílení. Copilot tedy možná „krade kódy“, ale který vývojář ne?

Etika a zákon nejsou jediné problémy Copilota. Hlavně v raných fázích beta testování se udály případy, kdy Copilot našeptal do kódu skutečné privátní klíče k aplikaci[15]. To je samozřejmě naprosto nepřípustné a proběhla opatření, aby se to nedělo (nicméně pokud někdo vložil privátní klíč do veřejného, vlastně i do neveřejného, repozitáře, trochu si o to říkal).

Programování a vzdělávání

Programování v rámci DigComp frameworku bude pravděpodobně okrajové a spíše se bude jednat o obecné naučení se určitého „algoritmického přemýšlení“. Pokud se ale člověk chce více ponořit do světa programování, má dnes relativně mnoho možností. Na platformách jako Udemy nebo Coursera je dostupná celá řada MOOC, které jsou ukončeny i nějakým certifikátem, takže po absolvování má studující i něco hmotného, čím může svou kompetenci prokazovat. O kousek dále jsou pak ještě stránky jako Codecademy, CodeCombat nebo CodinGame[16] které k výuce programování či kódování využívají prvky gamifikace. Zároveň je na internetu i spousta návodů/video návodů, které jsou zdarma (ale samozřejmě bez certifikátu). Poněkud mrtvé médium jsou knihy (ačkoliv stále vznikají). U některých, hlavně novějších programovacích jazyků či přímo konkrétních frameworků je problém s rychlým zastaráváním. To neplatí samozřejmě jen pro knihy — je důležité, aby si daný jedinec vždy ověřil, zda zdroj, ze kterého se zrovna učí, není už zastaralý (bohužel, jsou to i případy některých MOOC, u kterých občas není jednoduché rozeznat, hlavně z pozice začínajícího programátora, jestli jsou ještě aktuální.

Závěrem

Programování a kódování je neuvěřitelně rychle se proměňující obor. Člověk, který se chce držet v obraze se musí neustále vzdělávat a sledovat, co je nového. Takže pro zodpovězení jedné z prvních otázek nastíněných v tomto textu, ano, programování má stále své místo ve světě, a ještě dlouho bude trvat, než programátory nahradí umělé inteligence. A i v tom případě má stále smysl umět programovat — protože se stále se zvětšujícím digitálním prostorem kolem nás je více než příhodné tomuto prostoru alespoň konceptuálně porozumět.

[1] DigComp Framework. EU Science Hub [online]. [cit. 2023–05–03]. Dostupné z: https://joint-research-centre.ec.europa.eu/digcomp/digcomp-framework_en

[2] VUORIKARI, Rina, Stefano KLUZER a Yves PUNIE. DigComp 2.2: The Digital Competence Framework for Citizens: With new examples of knowledge, skills and attitudes [online]. In: . 2022–03–17 [cit. 2023–06–04]. Dostupné z: doi:10.2760/115376, JRC12841Konec formuláře

[3] RANJAN, Ritesh. What is a Framework in Programming & Why You Should Use One. Net Solutions [online]. 2021, October 7, 2021 [cit. 2023–06–04]. Dostupné z: https://www.netsolutions.com/insights/what-is-a-framework-in-programming/

[4] 2022 Developer Survey. Stack Overflow [online]. 2023 [cit. 2023–06–04]. Dostupné z: https://survey.stackoverflow.co/2022/

[5] GILBERTSON, David. I’m harvesting credit card numbers and passwords from your site. Here’s how. Medium [online]. Jan 6, 2018 [cit. 2023–06–04]. Dostupné z: https://david-gilbertson.medium.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5

[6] About npm [online]. NPMJS [cit. 2023–06–04]. Dostupné z: https://docs.npmjs.com/about-npmZačátek formulářeKonec formuláře

[7] GILBERTSON, David. Part 2: How to stop me harvesting credit card numbers and passwords from your site. Medium [online]. Jan 27, 2018 [cit. 2023–06–04]. Dostupné z: https://david-gilbertson.medium.com/part-2-how-to-stop-me-harvesting-credit-card-numbers-and-passwords-from-your-site-844f739659b9

[8] FRIEDMAN, Nat. Introducing GitHub Copilot: your AI pair programmer [online]. June 29, 2021 [cit. 2023–06–06]. Dostupné z: https://github.blog/2021-06-29-introducing-github-copilot-ai-pair-programmer/

[9] VSCode je jeden z nejvyužívanějších programů pro vývojáře

[10] PEREZ, Diego. What is Github Copilot [online]. Aug 19, 2022 [cit. 2023–06–06]. Dostupné z: https://medium.com/@diegotronics/github-copilot-bef29765bb10

[11] MORADI DAKHEL, Arghavan, Vahid MAJDINASAB, Amin NIKANJAM, Foutse KHOMH, Michel C. DESMARAIS a Zhen Ming (Jack) JIANG. GitHub Copilot AI pair programmer: Asset or Liability?. Journal of Systems and Software [online]. 2023, 203 [cit. 2023–06–06]. ISSN 01641212. Dostupné z: doi:10.1016/j.jss.2023.111734

[12] GitHub je verzovací software, který udržuje všechny verze daného projektu na jednom místě a usnadňuje vývojářům sdílení kódu, pokud na projektu pracuje více lidí zároveň

[13] VINCENT, James. The lawsuit that could rewrite the rules of AI copyright [online]. Nov 8, 2022 [cit. 2023–06–06]. Dostupné z: https://www.theverge.com/2022/11/8/23446821/microsoft-openai-github-copilot-class-action-lawsuit-ai-copyright-violation-training-data

[14] MARSHALL, Brandeis. The Thievery of GitHub Copilot: A technical case against AI-generated coding. Medium [online]. Feb 14, 2023 [cit. 2023–06–06]. Dostupné z: https://medium.com/@brandeismarshall/the-thievery-of-github-copilot-d2114c49be65Začátek formulářeKonec formuláře

[15] MOSS, Ben. Poll: The Ethical Dilemma at the Heart of GitHub’s Copilot. Webdesigner Depot [online]. July 09, 2021 [cit. 2023–06–06]. Dostupné z: https://www.webdesignerdepot.com/2021/07/poll-the-ethical-dilemma-at-the-heart-of-githubs-copilot/Konec formuláře

[16] ZIETEK, Tomek. 12 gamification platforms that help learn coding. Medium [online]. Apr 4, 2016 [cit. 2023–06–06]. Dostupné z: https://medium.com/@tom_z_official/12-gamification-platforms-that-help-learn-coding-814aeb04341e

--

--