Před časem probíhala na Živě.cz diskuse, zda učit na škole programování, a pokud ano, tak jakým způsobem. Potěšilo mne, že můj tamní příspěvek zaujal nejen diskutující, ale i redakci České školy, s níž jsme se dohodli na seriálu článků zabývajících se touto problematikou podrobněji. Zde je první z nich.
Před časem probíhala na Živě.cz diskuze, zda učit na škole programování, a pokud ano, tak jakým způsobem. Potěšilo mne, že můj tamní příspěvek zaujal nejen diskutující, ale i redakci České školy, s níž jsme se dohodli na seriálu článků zabývajících se touto problematikou podrobněji. Zde je první z nich.
Předem se omlouvám, pokud se budu někde opakovat. Původní příspěvek do diskuse byl pouze shrnující, avšak dotkl se většiny témat, o nichž bych se chtěl v následujícím seriálku rozpovídat. Odpusťte mi, že nebudu úpěnlivě sledovat, co jsem ve své tehdejší odpovědi již řekl a co ne. Budu se naopak snažit, abych v každém z dílů komplexně probral vytčené téma.
Všichni jsme vlastně programátoři
Při různých debatách nad náplní předmětu Informatika často sklouzne hovor na řešení otázky, zda zařadit i výuku základů programování. Můj názor je jednoznačný: bezesporu patří. Můžeme se přít o věku, kdy je optimální s ní začít, ale není pochyb o tom, že základní školu by měli žáci opouštět se základními znalostmi programování.
Málokdo z nás si uvědomuje, že zrovna programování je činnost, kterou provozujeme od nejútlejšího dětství. Program totiž není obecně nic jiného, než specifikovaný postup vedoucí ke splnění zadaného úkolu. Jenže takový postup již navrhuje i batole, které se chce dostat ke hračce, na niž bez pomůcky nedosáhne. S postupujícím věkem jsou naše programy stále složitější a rafinovanější. Postupně se do nich dostávají procedury (poprosím staršího bráchu, aby mi sundal balón ze skříně, kam nedosáhnu), funkce (zeptám se kolemjdoucího, kolik je hodin), proměnné (musím si zapamatovat, kudy jsem šel, abych příště trefil), podmínky (když mne Lojza pozve na chatu, strávím víkend s ním, jinak zavolám Frantovi), cykly (dokud nenajdu peněženku, nemohu odejít do hospody) a další známé programátorské prvky.
Když se začneme učit programovat, to nejdůležitější již většinou známe. Potřebujeme si pouze uvědomit své dosavadní znalosti a dovednosti a naučit se zapsat naši představu o řešení úlohy pomocí nějakého formalizmu a především s respektem k omezeným možnostem používaného počítače a programovacího jazyka. Domnívám se proto, že otázkou není zda učit programování, ale jak jej učit a kdy s jeho výukou začít. Musíme je učit tak, abychom co nejvíce využili stávajících znalostí našich žáků a aby to, co je naučíme, mohli co nejlépe využít ve svém dalším životě, a to nezávisle na tom, budou-li programovat počítače nebo řešit zcela jiné úlohy.
Znalost pro život
Je mi jasné, že současný programátorský boom zanedlouho pomine a počet lidí, kteří se budou živit programováním, bude poměrně malý. Nicméně počet lidí, kteří tu a tam budou potřebovat upravit některou z funkcí používaných programů, bude ještě dlouho velký. Ještě hodně dlouho budou programy našich počítačů umět řešit obecné úlohy, ale specifika naší konkrétní úlohy jim budeme muset nějakým způsobem vysvětlit sami.
Jenom v naší republice se ročně prodá přes dvě stě tisíc knih o programování. (Pokud si myslíte že přeháním, tak bych vás chtěl ubezpečit, že tento odhad považuji za velmi opatrný a domnívám se, že skutečnost je ještě asi o polovinu vyšší.) Ti, kteří odmítají zavádění výuky programování do škol, si neuvědomují, že z každých 50 lidí včetně nemluvňat a důchodců si každý rok nejméně jeden koupí knížku o programování. To už nemluvím o tom, kolik lidí si tuto knihu přečte a kolik lidí získává potřebné informace jiným způsobem – nejčastěji z webu. Který z předmětů, jež se dnes na školách učí, se může takovýmto zájmem pochlubit?
Tyto knihy si přitom lidé nekupují proto, aby je zasunuli do knihovničky, ale proto, že potřebují umět programovat. Troufám si tvrdit, že znalost programování využije ve svém dalším životě daleko více lidí, než kolik jich využije znalosti z mnoha dalších předmětů, o jejichž zařazení do výuky nikdo nepochybuje.
Nesmíme si ale plést výuku programování s výukou konkrétního programovacího jazyka. Při výuce programování by nemělo být důležité, jak se to či ono naprogramuje např. v Basicu. Měli bychom se soustředit především na vysvětlení základních principů, postupů, obratů a pak ukázat jejich realizaci v použitém programovacím jazyce. To však neznamená, že na použitém programovacím jazyce nezáleží.
Kdy a jak začít
Na otázku Kdy začít nelze odpovědět jednoznačně. Jiný věk je vhodný pro zájmové kroužky, jiný pro plošnou výuku.
Moje zkušenosti ukazují, že již v první třídě jsou děti schopny pochopit základní programové konstrukce a vytvářet jednoduché programy v rozsahu okolo 20 – 50 příkazů. Musí však mít k dispozici nástroj, který se ovládá dostatečně jednoduše a intuitivně a neodvádí jejich pozornost od vlastního řešení problému. Navíc musí mít k dispozici jazyk s maximálně jednoduchou syntaxí, a především pak prostředí, které je jim dostatečně sympatické, aby měly chuť řešit problémy, které jim v něm předkládáme.
Výběr nástroje a jeho zdůvodnění bych si nechal na příště. Nyní bych se chtěl ještě vrátit k optimálnímu věku pro začátek výuky. Jak jsem již řekl, začít můžeme již s dětmi z první třídy. Má to však jeden háček. Děti se v průběhu půl roku až roku naučí základy algoritmizace a začnou vytvářet velice zajímavé programy. Pak ale ustrnou, protože dosáhnou hranice, kterou jsou schopny pochopit a kterou nemohou nějakou dobu překročit. Křivka jejich znalostí a dovedností přestává strmě růst a objevuje se jakési plató. Děti musí počkat na počátek puberty, kdy se u nich začne probouzet schopnost abstraktního myšlení a kdy se budou moci zase rozeběhnout dál.
To, jestli u programování zůstanou, nebo jestli je opustí, záleží na délce trvání tohoto plató a na zajímavosti příkladů, které jsme v jeho průběhu schopni s dětmi řešit s využitím jejich stávajících vědomostí a dovedností. A zde se opět ukazuje důležitost výběru programovacího nástroje a prostředí.
Moje dosavadní zkušenosti ukazují, že brát do kroužků programování děti z první třídy není moudré. Plató, o němž jsem se před chvílí zmiňoval, pro ně trvá příliš dlouho a většina z nich odpadne. Doporučoval bych začít někde mezi třetí a šestou třídou, záleží však na použitém programovacím prostředí. S Baltíkem je možno začít již ve třetí třídě, s Basicem by bylo vhodnější počkat na pátou nebo šestou třídu.
Samozřejmě, že toto doporučení je zprůměrované. Vždy se najdou děti, u nichž se schopnost abstraktního myšlení probouzí daleko dříve, a kteří proto budou mít toto plató mnohem kratší. Ani u nich bych však příliš nepospíchal. Pro tvorbu dobrých programů totiž nestačí zvládnout nejrůznější abstraktní konstrukce programovacích jazyků. Daleko důležitější je schopnost dokázat si poradit i s relativně složitým problémem (k této otázce se ještě vrátím v příštím díle).
Pokud se týče hromadného nasazení při řádné výuce, tady bych doporučoval asi sedmou, možná osmou třídu. Přiznám se, že jsem doposud pracoval hlavně s mladšími dětmi, ze kterých se v tomto věku začínali stávat počítačoví „mágové“. Domnívám se však, že průměrná, tj. programováním nepostižená populace je již v tomto věku dostatečně vyspělá na to, aby dokázala základní programové postupy pochopit a aplikovat je při řešení úloh.
Příště se pokusím shrnout hlavní zásady, které bychom měli při výuce programování dodržovat.
Rudolf Pecinovský
0 komentářů:
Okomentovat