Domů > Odborné články > Gymnaziální vzdělávání > Nahraďte algoritmizaci systémovým přístupem!
Odborný článek

Nahraďte algoritmizaci systémovým přístupem!

13. 7. 2009 Gymnaziální vzdělávání
Autor
Ing. Ivan Ryant

Anotace

Autor argumentuje proti požadavku, aby se studenti učili řešit problémy algoritmicky. Místo toho žádá, aby řešili problémy systémově.

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):

  • má být složen z elementárních kroků (které počtář umí)
  • má jednoznačně určovat pořadí, jak kroky výpočtu následují jeden za druhým
  • má skončit
  • má dospět k výsledku

Algoritmus tedy není výpočet:

  • který nekončí (např. software kardiostimulátoru musí běžet, dokud se nevybijí baterky)
  • který nevede k výsledku (zejména pak výpočet, který nekončí, nevede ani k výsledku)
  • který nemá jednoznačně určené pořadí elementárních kroků (např. webový nebo databázový server obsluhuje několik požadavků současně, pořadí elementárních kroků není předepsáno)

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.

Literatura a použité zdroje

[1] – Rámcový vzdělávací program pro gymnázia. Praha : Výzkumný ústav pedagogický, 2007. ISBN 978-80-87000-11-3.
[2] – KNUTH, Donald . The Art of Computer Programming. Addison-Wesley, 1968.
[3] – MANNA, Zohar. Matematická teorie programů. Praha : SNTL , 1981.

Licence

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

Hodnocení od uživatelů

Ivan Ryant
28. 6. 2011, 15:11
Dovoluji si upozornit, že tento článek byl převzat také na server Česká škola a tam je k němu diskuse na adrese http://www.cesk…aci.html
RNDr. I. Marek
29. 6. 2011, 08:38
Off topic - technická poznámka. Publikovat ten který článek na co nejvíce sajtech je správné. Ale vést k jednomu a témuž článku diskusi na více sajtech je neefektivní až nesmyslné. Proto prosím pana autora, pokud publikuje na více místech, aby jako první vstup do diskuse uvedl, kterou diskusi (na kterém sajtu) on sám považuje za primární.
Ivan Ryant
1. 7. 2011, 22:16
Děkuji za připomínku, budu se snažit doplňovat odkazy, pokud se o převzetí článku dovím. Česká škola přebírá některé články z Portálu RVP automaticky, bez upozornění a až po nějaké prodlevě. Kupodivu se stalo, že zrovna v tomto případě se tam rozvinula hodnotná diskuse, zatímco na Portálu RVP nikoli. Já jsem na ni narazil úplně náhodou až po dvou měsících. Obecně platí, že články publikuji primárně na Portálu RVP a proto i diskuse na Portálu RVP je primární.

Váš komentář

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

Článek není zařazen do žádného seriálu.

Kolekce

Článek je zařazen v těchto kolekcích:

Článek pro obor:

Informatika a informační a komunikační technologie