Jedním z cílů vzdělávací oblasti „5.8 Informatika a informační a komunikační technologie" RVP pro gymnázia je „uplatňování algoritmického způsobu myšlení při řešení problémových úloh". V charakteristice vzdělávací oblasti je tento cíl začleněn do kontextu zpracování informací v systémech: „Žák ... soustředí se na pochopení podstaty a průběhu informačních procesů, algoritmického přístupu k řešení úloh a významu informačních systémů ve společnosti." Algoritmizace pak má svůj výstup a příslušné učivo uvedené v kapitole 5.8.1 RVP. Problém je v tom, že úlohy se v informatice řeší zpravidla jinak než algoritmicky, informační procesy nemívají charakter algoritmů a ani informační systémy se nenavrhují jako algoritmy.Toto tvrzení vysvětlím později.
Nejprve však připomenu, co je a co není algoritmus. Již od dob, kdy středověká Evropa studovala počtářskou příručku legendárního Mohameda z Chivy, se za algoritmus považuje přesný a jednoznačný postup nějakého užitečného výpočtu popsaný krok za krokem od zadání vstupních údajů až po nalezení výsledku. Stručně se tomu říká efektivní procedura. Algoritmus (podle Donalda Knutha):
Algoritmus tedy není výpočet:
Takto popsaný algoritmus je jen vágní pojem. Matematici jej někdy zpřesňují využitím Churchovy nebo Turingovy teze, že totiž každý užitečný výpočet se dá popsat jako funkce lambda kalkulu nebo jako Turingův stroj (v obou případech jde o exaktně definované algebraické struktury). Ztotožníme-li algoritmus např. s Turingovým strojem, okamžitě se dostáváme do dalšího problému - do problému nezastavení Turingova stroje, který je nerozhodnutelný. Ne o každém algoritmu tedy dokážeme říct, zda se zastaví, skončí a vydá výsledek, nebo zda poběží neustále, nikdy se nezastaví, a tím pádem se ani nedobere žádného výsledku. Z tohoto důvodu jsou požadavky na konečnost a rezultativnost algoritmu prakticky bezcenné. Dalším problémem je reálný čas, na který se při algoritmickém výpočtu nebere ohled (algoritmus má skončit v konečném čase, ale žádná konkrétní lhůta se nestanovuje). Proto programy, které musí dodržovat časové lhůty fyzického světa, nemohou být řešeny algoritmicky. Jenže každý program, který interaguje s uživatelem nebo s čímkoli fyzickým ve svém okolí, musí takové lhůty dodržovat (podrobnější rozbor uvádí např. Edward Lee ve svém článku).
Zvláštním zdrojem mnoha dalších problémů, který navazuje na RVP, bude pravděpodobně „Katalog požadavků k maturitní zkoušce" z ITZ. Tento katalog má vypracovat „Centrum pro zjišťování výsledků vzdělávání" (CERMAT) do jara 2010. Poslední mně známá, dnes však již neaktuální aktualizace katalogu z roku 2005 naznačuje, že věru bude co řešit: např. omezení algoritmizace na pouhé strukturované programování a s tím spojený vztah algoritmů k příkazovým a datovým strukturám. Největším problémem však asi bude poměr mezi množstvím učiva a hodinovou dotací informatiky. Poznamenejme, že jenom výuka algoritmizace ani ne v rozsahu požadavků z roku 2005 mi bohatě vyplní jeden rok volitelného předmětu „programování" s dotací dvou hodin týdně. Stejnou hodinovou dotaci však máme na celou informatiku, ne jen na jedno poměrně okrajové téma.
Vraťme se nyní ke klíčové otázce: jak se řeší problémy v informatice prakticky? Při analýze problémů a návrhu systémů, které zpracovávají informace, se s algoritmickým přístupem setkáváme v praxi už aspoň dvacet let jenom okrajově. Výpočetní postupy jsou fragmentované a sdružené s datovými strukturami do objektů - objekty nevyjadřují postup výpočtu. A nedospíváme k nim algoritmizací úlohy, nýbrž analýzou a designem informačního systému. Algoritmus prostě vyjde rovnou fragmentovaný. Pokud se ovšem o algoritmus vůbec jedná. Při analýze a designu systému se nedbá na jednoznačný sled operací výpočetního postupu. Sled operací není determinovaný zejména v několikavláknových systémech nebo v systémech paralelních procesů, ani při řízení systémů událostmi (např. interaktivní uživatelské rozhraní, tzv. „okna", řídí systém událostmi). Souhlasím, že algoritmizace může být jedním z vhodných úvodů do programování, sám jí dávám přednost před metodou „objekty napřed", kterou znám např. ze skvělé učebnice Bertranda Meyera „Touch of Class". Ale vzápětí po algoritmech pak musí následovat objektová architektura. Když však nejde o kurs programování, nýbrž o zacházení s informacemi obecně, je algoritmizace vysloveně škodlivá. Pokud totiž máme studenty naučit systémovému přístupu k analýze informací a případně i k pochopení vnitřní struktury informačního systému, musíme je naučit postupy analýzy systémů. Zde pak vedle sémantických sítí (příp. myšlenkových map), které konstruujeme intuitivně a vesměs naivně, přicházejí na řadu modely systémů v diagramech UML (Unified Modeling Language). Diagramy UML dokážeme konstruovat podle metodického postupu prověřeného zkušeností mnoha profesionálních analytiků, takže ve srovnání s intuitivní konstrukcí sémantických sítí máme daleko větší šanci, že model v UML bude správný.
Proto považuji za chybu, že algoritmický přístup je v RVP uveden v souvislosti s řešením problémů, s informačními procesy a s informačními systémy. Pak je ovšem chybný i cíl, aby se žák omezoval při řešení problémů zrovna na algoritmický způsob myšlení. Spíš bych doporučoval navázat na modelování pojmových systémů pomocí sémantických sítí a konkretizovat jak postup modelování, tak i způsob kreslení modelu směrem ke standardu UML. Pokud jde o algoritmický přístup, ten má svoje místo jen ve zvláštních případech při řešení dílčích úloh.
Zatím vím jen o dvou takových zvláštních případech: Za prvé, algoritmický způsob řešení úloh je také jedním z cílů vzdělávacího oboru „5.2 Matematika a její aplikace". Tam má opravdu své místo, mj. proto, že algoritmický charakter je jedním ze základních požadavků na důkazy v matematice, ty totiž nesmějí být nealgoritmické. Za druhé se domnívám, že algoritmizace může být obsahem volitelného předmětu zaměřeného nejspíš na programování. Škola, která doplní závazný obsah RVP o takový předmět, současně vhodně prováže informatiku s matematikou. Pokud však jde o povinnou informatiku, ukázal jsem v tomto příspěvku, že algoritmický přístup už dávno není ani jediným, ani dostatečným, ba ani základním způsobem řešení problémů, že vždy může být nahrazen obecnějším přístupem (zejména objektovým). Proto dnes algoritmizace zůstává znalostí a dovedností specifickou jen pro matematiku, kdežto řešení problémů v jiných oblastech a oborech se na algoritmický přístup už dávno zúžit nedá.
Algorithm, Wikipedia, navštíveno 8. 6. 2009.
Unified Modeling Language, OMG, navštíveno 14. 6. 2009.
Bertrand Meyer: Touch of Class, Springer 2009.
Edward Lee: Computing Needs Time. Communications of the ACM; vol. 52 / nr. 5 (May 2009), s. 70-79.
Nová maturita, CERMAT, navštíveno 14. 6. 2009.
Všechny články jsou publikovány pod licencí Creative Commons BY-NC-ND.
Pro vložení komentáře je nutné se nejprve přihlásit.
Článek není zařazen do žádného seriálu.
Článek je zařazen v těchto kolekcích: