Domů > Odborné články > Základní vzdělávání > Proč by se žáci neměli učit programovat nebo vytvářet webové stránky
Odborný článek

Proč by se žáci neměli učit programovat nebo vytvářet webové stránky

Anotace

Vytváření webových stránek je s nadsázkou řečeno tradiční disciplína, která má své místo ve výukových plánech, rekvalifikačních kurzech nebo mnoha vzdělávacích projektech. S lítostí lze ovšem konstatovat, že v mnoha ohledech zůstal obsah těchto kurzů a plánů poplatný době kolem roku 2000 a zaměřuje se v první řadě na tzv. programování webových stránek a práci s kódem.

Na rozdíl od klasického programování, jehož principy se nemění, se technologie související s vytvářením, budováním a provozem webových stránek mění stále. Základem je samozřejmě rodina standardizovaných jazyků či gramatických pravidel HTML, CSS, JavaScript, PHP. Za posledních 10-15 let ovšem došlo k bouřlivému rozvoji dalších technologií, které posunují „programování webových stránek“ z oblasti laické zábavy do oblasti úzce odborně profilované. Objevuje se tedy otázka, co z uvedené problematiky (a zda vůbec) má být předmětem výuky na základních a středních školách.

Webové aplikace

Zatímco před deseti patnácti lety začínala tvorba webových stránek tím, že autor začal psát HTML kód, dnes nainstaluje webovou aplikaci. Lze je řadit podle účelu do mnoha kategorií, pro nejširší účely se používají redakční (nebo publikační) systémy či systémy pro správu webového obsahu, např.:

Množství úkolů, které se dříve vykonávaly na lokálním počítači, dnes probíhají ve webové aplikaci. Pojem „cloud“ je jen marketingové označení pro technologická řešení, které se označují zkratkami

  • SaaS - software as a service, software jako služba;

  • PaaS - platform as a service, platforma operačního systému jako služba.

Aktivita označovaná tradičně „vytvoření webových stránek“ dnes v první řadě znamená „publikování obsahu v redakčním systému“, nikoliv „programování webových stránek“. Laicizace proběhla úspěšně, ale přesto mnoho laiků vytrvale smutní, že neumí programovat (ačkoliv to pro budování webových stránek není potřeba).

Co použít ve výuce

Berme v potaz, že se nejedná o algoritmizaci a skutečné „tvrdé“ programování. Ve velké míře jde o práci s kódem, s jeho příklady a adaptací na konkrétní situaci. Tato činnost se označuje jako kódování - ostatně hierarchie programátorů je poměrně členitá (kodér je nejníž a de facto ani programátorem není).

Má praktický smysl učit žáky programovat webové aplikace? Domnívám se, že nikoliv. Učitel informatiky nemá odbornou výbavu takového charakteru - pokud se v posledních deseti letech aktivně nepodílel na vývoji webových stránek, což předpokládat nelze. Naopak je poměrně snadné a vysoce praktické naučit žáky pracovat s redakčními systémy. Vkládat obsah (obrázky, videa), správně vytvářet odkazy (velké množství uživatelů to neumí), vymýšlet funkční nadpisy článků, ovládat redakční systém a chápat jeho funkce.

Jazyky

V uplynulé dekádě se objevily nové programovací a popisné jazyky, které přispěly k rozvoji internetu. Namátkou je to Python, Ruby nebo různá rozšíření původního HTML (XHTML, MathHTML – nejde však o programovací jazyky, nýbrž spíše jednoduchou popisnou gramatiku). Rozvíjely se také možnosti velmi důležitých nástrojů XML, CSS, JavaScript (z něj vycházející knihovna jQuery). Stranou necháváme databáze a vůbec principy ukládání a zpracovávání dat (HTML5, AJAX, API, JSON atp.).

Realita je dnes taková, že původní PHP+HTML+CSS je dnes jen jednou z možností, jak budovat webové aplikace (opět - nikoliv jen stránky). Naučit se vše není v silách jedince. Logicky se tedy každý profiluje určitým směrem. Význam HTML je dnes na tak nízké a základní úrovni, že sám o sobě nemá využití, vždy je potřeba umět ještě něco - např. alespoň PHP a JavaScript.

Co použít ve výuce

Pokud se žáci učí HTML a CSS, nemá to praktický smysl, využití této dovednosti je nulové. Kdo umí programovat ve skutečném jazyce, pak je pro něj HTML nebo CSS (pokud by se s ním náhodou minul) úkol na pár hodin.

Jako vhodný se jeví úvod do programování v jazyce PHP nebo spíše Python. Oba jazyky jsou multiplatformní, Python navíc není určen jen pro webové aplikace (je využitelný také pro lokální aplikace). Ukázalo se, že je také nejpopulárnějším jazykem pro začátečníky na amerických univerzitách. Existuje ohromné množství nástrojů, dokumentace, tutoriálů a dalších materiálů, které pomohou začít. Vzhledem k tomu, že jde o standardní programovací jazyk, lze cvičit algoritmizaci, a přitom dosahovat rychlých a viditelných výsledků (vytvářet aplikace). Navíc má v Česku velkou a přívětivou komunitu profesionálů a dostatek výukových nástrojů, např. zde: http://www.pythontutor.com.

Frameworky

Samozřejmé používání frameworků, tzn. připravených softwarových balíků, znamená rapidní vývoj celých aplikací. Pojem rapidní se chápe jako zrychlený - jsou k dispozici moduly a fragmenty kódu, které se jen skládají dohromady, často vizuálním či automatizovaným způsobem. Frameworky jsou testovány a mají množství kvalit, kterých by jednotlivec v rozumném časovém prostoru nedosáhl. Například jsou připraveny pro používání na displejích různých velikostí (hotové aplikace jsou „responzivní“), jejich kód je komplexní (využívá maxima dostupných vlastností) a validní (tzn. neobsahuje chyby vzhledem ke své specifikaci a gramatice jazyka).

Co využít ve škole

Frameworky lze s úspěchem využít při výuce vybraného programovacího jazyka. Populární je např. Django (Python). Pro PHP existuje obrovské množství frameworků, u nichž je s minimem práce možné ihned vidět výsledky; namátkou:

Podpůrné aplikace a prostředky

Technologický rozvoj se projevil také v oblasti podpůrných nástrojů. YouTube nám dalo kromě videí z druhého konce světa také platformu pro vzdělávání. Najdete zde množství návodů, a to nejen anglicky. Ostatně publikování videonávodů může být také velmi efektivním výukovým nástrojem a ve výsledku můžete pomoci kolegům - aby „všechna“ videa nebyla jen anglicky.

Důležitým nástrojem jsou kvalitní editory kódu, IDE (integrated development environment). Existuje jich nepřeberné množství a velké množství z nich je licencováno jako open source. Tedy nemusíte za jejich používání platit licenční poplatky. Obsahují funkce, které usnadňují práci s kódem - např. doplňování kódu, uzavírání závorek, nápověda parametrů, ladění chyb atp.

Vývoj a další faktory

Ještě bychom mohli hovořit o SEO, uživatelském prožitku, drátěných modelech, vlivu sociálních sítí na vytváření webových stránek a mnoha dalších faktorech, které z „programování webových stránek“ udělaly úplně jinou disciplínu. Tohle všechno už ale patří jinam, třeba do vysokou školu, do bakalářského oboru „webdesigner“.

Jak by se tedy mohlo učit vytváření webových stránek

V první řadě je důležité, aby žáci uměli publikovat obsah a dokázali pracovat s textem a redakčním systémem. Tato dovednost se zčásti překrývá s prací v textovém procesoru. Měli by chápat princip nahrávání dat a odkazování, aby pak nevkládali odkaz ke stažení ve formě C://Dokumenty/soubor.doc. Na první pohled to vše vypadá triviálně a samozřejmě, ale znám realitu trochu jinak.

Pro pokročilejší představy lze doporučit práci s vybraným frameworkem, přičemž je jedno, který to bude, protože frameworky se mění a vyvíjejí. Principy se příliš nemění, záleží spíše na vybraném jazyku (již roky mnozí tvrdí, že PHP je mrtvý) a zodpovědném přístupu – tj. např. stanovení cílů. Jako skvělý doplněk se jeví práce v projektech s využitím vhodného softwaru pro projektové řízení.

Licence

Všechny články jsou publikovány pod licencí Creative Commons BY-NC-ND.

Autor
Mgr. Vlastimil Ott

Hodnocení od uživatelů

jana jindrová
6. 9. 2014, 20:02
Dobrý den, trochu nesouhlasím. Žáci se mohou učit programovat, rozvíjet myšlení. Jistě všechny Vaše argumenty mají svoji váhu. Ale pojmy, které používáte jsou běžné na Vš a ne na Zš.
Vlastimil Ott
9. 9. 2014, 13:56
Právě proto jsem ten článek napsal. "Programování webových stránek" není programování. Navíc se to dnes nelze naučit než samostudiem, ke kterému má průměrný učitel minimum času a možná i motivace. Pokud myslíte, že se vyjadřuji v nesrozumitelných pojmech, pak vězte, že je to normální pojmosloví v oblasti tvorby webových stránek a webdesignu. O to důležitější se mi jeví výsledek článku - učte třeba Python, to smysl má.
E Kocourek
9. 9. 2014, 19:55
Článek je nabitý spornými a diskutabilními tvrzeními, ale tato dvě chci vyvrátit hned: Že prý "Význam HTML je dnes na tak nízké a základní úrovni, že sám o sobě nemá využití, vždy je potřeba umět ještě něco - např. alespoň PHP a JavaScript. (...) Pokud se žáci učí HTML a CSS, nemá to praktický smysl, využití této dovednosti je nulové." -- Využití není nulové. Pokud autor nelpí na tom, aby se za myší táhl ocas jako za kometou nebo aby se text automaticky "překládal" do deseti jazyků, webovou stránku lze napsat jenom v HTML. Ale to není to hlavní. Pokud se student chce učit tak, že si bude vytvářet svoji osobní databázi, postupně ji konstruovat, zjemňovat a plnit údaji, které v případě potřeby snadno vyhledá, jaký jazyk mu doporučíte? Já mu doporučím HTML.
A ještě "Kdo umí programovat ve skutečném jazyce, pak je pro něj HTML nebo CSS (pokud by se s ním náhodou minul) úkol na pár hodin." -- Až na terminologii (HTML je jazyk stejně "skutečný" jako třeba Python. Jde o rozdíl mezi jazykem procedurálním a popisným.) je tento výrok pravdivý. Ale co když HTML chce používat student, který ještě neumí programovat v žádném procedurálním jazyce? Proč by měl čekat? A proč by se neměl seznámit s tím, co to ty úžasné redakční systémy vlastně vytváří a co ten tajemný kód znamená?
Jiří Vaníček
18. 9. 2014, 21:03
Dobrý den. Já bych tento článek ocenil. Řada skutečností popsaných jako školní realita je podle mých zkušeností opravdu realitou.

V mé reakci tam, kde budu psát o tvorbě webu, nebudu mít na mysli programování webu pomocí nějakého programovacího jazyka jako PHP - abych předešel nedorozumění.

Zastavil bych se u jedné zásadní věci, kterou článek nakusuje, ale nakonec mám dojem neřeší: Co je cílem té výuky (tvorby webu)? Aby žáci vytvořili webovou stránku, web, nebo aby se naučili nějakým dovednostem, porozuměli pojmům tak, aby se dokázali orientovat v tom, jak počítač pracuje a jak jej lze řídit a "vytvářet" (když vezmu v úvahu, že software je soočást počítače),

Existuje věčný rozpor mezi školou a životem (škola je jen základ života). Všiněte si tohoto rozporu: v životě často máme problém a hledáme metodu, kterou bychom tento problém vyřešili (z metod, které již známe). Naproti tomu ve škole učíme nějakou metodu a (jako učitelé) hledáme problémy, které by byly touto metodou řešitelné (protože metodu je třeba "zažít", umět ji aplikovat). Proto je problematické na ZŠ nebo v SŠ vzdělávání nespecializovaném na IT mít za cíl, že žáci se naučí vytvářet profesionální stránky, stejně jako že z nich vychováme programátory. Ovšem byli bychom rádi, aby dokázali dekomponovat problém, abstrahovat a najít model (čnnosti nebo jevu), kdyby objevili, že použitím algoritmu lze celkem dobře řešit problémy apod. To jsou věci, které přesahují programování a jsou užitečné každému, po celý život. --- Zdá se mi, že tento rozměr jinak pěknému článku trochu chybí.

Jedna další věc se mi na článku líbí - postřeh, který se  mi potvrdil nejen na žácích, ale i na jejich učitelích, že tak jak se učí základní tvorbě webu na ZŠ či SŠ, největším problémem je správné vytváření odkazů (na jiné stránky i na obrázky). Je to podle mého způsobeno tím, že se výuka orientuje na znalost a nácvik tagů, ale nikoliv na porozumění, z čeho se vlastně skládá jednoduchá webová stránka a jak se "stahuje" a rorazuje v prohlížeči (např. že neobsahuje text i grafiku, jako dokumenty OpenOffice či MS Wordu).

Jsem rád, že autor článku odděluje programování od tvorby webové stránky. Každá z těchto činností rozvíjí zcela jiné kompetence žáka. Je opravdu obtížné si představit, že při "HTML tvorbě webu, tak jak se na ZŠ a SŠ zpravidla učí, se rozvíjí algoritmické myšlení, porozumění proměnným apod.

Samozřejmě že i jednoduchá tvorba webu má své vzdělávací hodnoty, např. samotné ladění nebo fakt oddálení vykonání příkazu, které trénuje abstrakci a plánování. Tvrdit, že tvorba webu pomocí HTML a css je programování, je ze vzdělávacího pohledu škodlivé (někdo by mohl myslet, že programovat se naučíme tvorbou webu). Zde s autorem souzním. 

Vysvětlivka - oddálení vykonání příkazu (napíšeme kód, teprve pak, po nějaké chvíli jej teprve počítač přeloží nebo zobrazí) se nevyskytuje prakticky nikde u ovládání kancelářského software či u grafiky (příkazy se ihned realizují, což je žádoucí z hlediska uživatelského, ovšem pak chybí ve vzdělávání jedince. Oddálení vykonání příkazu se vyskytuje jak u webu, tak u programování.

Děkuji také za rozsáhlou zmínku o Pythonu jako vhodném prostředí pro výuku programování na SŠ. Na ZŠ bych určitě raději volil nějaké vhodnější prostředí, které odstraní problémy se syntaxí, umožňuje výrazně více využít grafiky, velmi jemně řeší otázky moderních přístupů k programování (objektové, událostní) a poskytuje rychlý počáteční pokrok a výsledek, který je sdílený, v komunitě tvůrců. Pro základní školy tedy jako programovací prostředí doporučím Scratch. Ten ostatně bude vhodný i pro takovou výuku u SŠ studijních oborů, kde se nepředpokládá budoucí specializace na IT nebo přírodovědnou oblast.

Omlouvám se, že jsem se tolik rozepsal. 
Honza Lojza
14. 8. 2016, 12:56
"Pokud se žáci učí HTML a CSS, nemá to praktický smysl, využití této dovednosti je nulové". To si dovolím nesouhlasit, kdyby se žáci pořádně naučili css tak se nebudou vytvářet tak nevzhledné stránky jako je tato, žáci se naučí trošku toho grafického cítění,to jim pomůže při tvorbě GUI ať už je to webová stránka nebo desktopová aplikace a to je důležité, koncového uživatele bude hlavně zajímat přehlednost a té se pomocí css dá velmi dobře docílit.
Tady je pár skvělých výtvorů, u kterých bylo využito dovednosti CSS.
http://www.awww…es/css3/

Váš komentář

Pro vložení komentáře je nutné se nejprve přihlásit.

Článek pro obor:

Informační a komunikační technologie 2. stupeň