Domů > Spomocník > Odborné vzdělávání > Nástroje pro výuku programování
Odborný článek

Nástroje pro výuku programování

Anotace

Příspěvek slouží jako motivační nástroj především pro učitele a žáky středních škol. Zaměřuje se na to, proč je v dnešní době důležité učit se základům programování a stručně prezentuje některé méně známé nástroje pro výuku programování.

V 90. letech 20. století jsem byl hrdým majitelem počítače Didaktik M s osmibitovým procesorem Zilog Z80 a vlastními silami jsem se učil programovat v jazyce BASIC. Na gymnáziu přišla algoritmizace, vývojové diagramy a struktogramy, osobní počítač s procesorem Intel 80286 SX a programovací jazyk Karel pro výuku programování, který v mnoha podobách přežil dodnes. Ve druhé polovině 90. let jsem dostal možnost učit na střední škole Turbo Pascal s vestavěným jazykem Assembler a později Borland Delphi. Vlastně se učím programovací jazyky dodnes – HTML, XML, JavaScript, SQL, PHP, C atd. Vím, co je syntaxe a sémantika, znám základní vlastnosti algoritmu, řídící struktury, vím co je proměnná, chápu principy objektově orientovaného programování. Během svého působení jako OSVČ jsem dostal několik příležitostí podílet se na realizaci zajímavých projektů. Vývoj jde ale velmi rychle kupředu a mně začíná ujíždět vlak. Vlastně už je hodně daleko za kopečky.

Když na to zpětně vzpomínám, kromě toho, že mě programování vždy bavilo, pomohlo mi to i v mnoha dalších ohledech. Programování neznamená jen psaní kódu, vyžaduje konstruktivní myšlení, týmovou spolupráci, schopnost vyrovnat se s krizovými situacemi, ale především pomáhá rozvíjet logické myšlení i dnes tak populární myšlení informatické.

Mnoho známých osobností nejen z oblasti IT dnes zastává názor, že v éře informační společnosti by se lidé měli naučit alespoň základům programování. Považují to dokonce za jednu ze základních gramotností, kterou budou potřebovat proto, aby se v současném světě uplatnili. Nezáleží na tom, jestli budou v budoucnu programátory. Důležité je, aby měli přehled o tom, jakým způsobem se programy vytvářejí a jak počítače fungují.

Podporovatelem této myšlenky byl Steve Jobs, jeden ze zakladatelů a CEO Apple Inc., který řekl: "Všichni v této zemi byste se měli učit programování, protože vás to naučí myslet." Stephen Hawking, teoretický fyzik a kosmolog, kterému je v době vzniku tohoto článku 73 let, přestože mu lékaři předpověděli, že do svých 25 let zemře, řekl: "Pokud chcete odhalit tajemství vesmíru, nebo se chcete věnovat kariéře v 21. století, základy počítačového programování jsou zásadní dovedností, kterou byste se měli naučit." Podle Douglase Rushkoffa (americký spisovatel, fejetonista, lektor, představitel cyberpunku) je programování nezbytnou součástí lidského vzdělání. Člověk má jen dvě možnosti – „programovat nebo být programován“.

Abyste se mohli stát programátory, je nezbytné naučit se nejprve syntaxi (skladbu) jazyka, ve kterém chcete programovat. Je to podobné, jako když se učíte nový cizí jazyk. Jako základ pro ovládnutí jazyka potřebujete mít dostatečnou slovní zásobu, umět formulovat věty, používat správný slovosled atd. Bez těchto základních znalostí vám nebude rodilý mluvčí rozumět, nebo bude docházet k trapným či komickým situacím. Programovací jazyk je jen další jazyk, který má vlastní slovní zásobu, konstrukce a pravidla pro zápis. Pokud nedodržíte syntaxi, vámi vytvořený programový kód bude nefunkční.

Dnes existuje mnoho nástrojů, které vám více či méně zábavnou formou pomohou pochopit základní principy programování. Některé z těchto nástrojů mají propracované integrované vývojové prostředí do takové míry, že nemusíte vůbec psát programový kód, prostě jen přesouváte příkazy, konstrukce, události aj. pomocí funkce drag-and-drop, tedy uchopením a přesunutím objektu na požadovanou pozici ve zdrojovém zápisu. V podstatě se jedná o formu zábavné hry, jejímž úkolem je dosáhnout smysluplného cíle, v tomto případě vytvoření funkčního programu, který provádí přesně to, co jste od něj očekávali.

Narazil jsem na zajímavý článek Teaching Kids to Code, který porovnává téměř 50 různých nástrojů pro výuku programování. Jednotlivé nástroje ještě dělí podle hlavního účelu využití – výuka logiky kódování, programování hardware, tvorba kódu pomocí vizuálních bloků atd. Nebudu zde jeho obsah dále rozebírat. Můžete si ho přečíst. Místo toho se zaměřím na několik málo nástrojů, které tam nenajdete.

Code Studio

Prvním méně známým nástrojem je cloudová aplikace pro výuku programování Code Studio – Code With Anna and Elsa. Princip tvorby programu je podobný jako u notoricky známého prostředí Scratch, tedy tvorba kódu bez nutnosti jeho psaní, které je zde nahrazeno přesouváním a vkládáním vizuálních bloků představujících příkazy, konstrukce, události apod. Výuka probíhá v jednotlivých lekcích, ve kterých jsou postupně zadávány konkrétní úkoly. Účelem je pomocí kódu rozpohybovat postavy Annu a Elsu, které se na bruslích pohybují po ledě a svým pohybem vytvářejí různé obrazce. Toto prostředí podporuje také češtinu.

Nástroj je vzhledem nízké obtížnosti vhodný především pro žáky základních škol. To se potvrdilo i během našeho praktického ověřování s žáky studijního oboru na střední škole. S jednotlivými úrovněmi řešených úkolů neměli žáci žádné zásadní potíže, velmi rychle se v prostředí zorientovali a úlohy řešili velmi svižně a většinou bezchybně.

Comenius Logo

Přestože je programovací jazyk Logo ve výše zmiňovaném článku Teaching Kids to Code několikrát zmiňován, rád bych se u něj krátce zastavil. Prvním důvodem je, že se jedná o jeden z prvních programovacích jazyků, které vznikly pro účely výuky programování a jeho spoluautorem je zakladatel konstrukcionistické teorie učení Seymour Papert (viz Učit se znamená zamazat si ruce). Tím druhým důvodem je vývojové prostředí pro výuku jazyka Comenius Logo, které vzniklo na fakultě fyziky, matematiky a informatiky UK v Bratislavě na konci 20. století. Jedná se o starší desktopovou aplikaci, která možná potěší spíše nadšence než skutečné zájemce o výuku programování.

TryRuby

Ruby je relativně mladý programovací jazyk, který v polovině 90. let 20. století navrhl a vyvinul Yukihiro "Matz" Matsumoto. Jazyk je označován jako „general purpose”, což zjednodušeně znamená, že jde o programovací jazyk pro všeobecné využití, mimo jiné například pro tvorbu webových aplikací. Výhodou tohoto jazyka je jednoduchá a srozumitelná syntaxe. Jazyk Ruby si můžete vyzkoušet online ve webovém prohlížeči na adrese http://tryruby.org. Jedná se o zhruba 15ti minutové intro do základů syntaxe programovacího jazyka, nicméně pokud se nebudete řídit přesnými pokyny průvodce, můžete si pomocí tohoto nástroje vyzkoušet i složitější konstrukce.

Rails for Zombies

Pro účely optimální tvorby webových aplikací vznikl tzv. framework (rámec, prostor) Ruby on Rails, který nabízí kromě samotného jazyka mnoho dalších funkcí a nástrojů, např. pro podporu tvorby, testování a optimalizaci. Tento framework využívají mimo jiné Apple, The New York Times, Twitter aj.

Velmi zajímavé a vtipné je prostředí pro výuku jazyka Ruby Rails for Zombies, které vás pomocí video tutoriálů (videocasty) zajímavou formou seznámí s principem vývoje webových aplikací. Rails for Zombies vám umožňuje přímé přehrávání streamovaných videí, nebo download slidů a videí v HD či SD kvalitě.

CODEMONKEY

Když jsme se s žáky seznamovali se sociální sítí pro žáky, učitele a rodiče Edmodo, narazil jsem na další zajímavý cloudový nástroj pro výuku programování – CodeMonkey (CodeMonkey - napiš kód a utrhni banán!). Spolu s žáky jsme v rámci aktivit v síti Edmodo tuto aplikaci vyzkoušeli. V tomto prostředí je hlavním úkolem rozpohybovat opičku tak, aby posbírala banány. Výuka probíhá v úrovních, které jsou nazývány challenges (složitý úkol, resp. problém). Ve verzi zdarma této aplikace je celkem 26 úrovní se stoupající náročností. Tento nástroj pro výuku programování je opět určen především pro žáky základních škol. Nutno podotknout, že žáky tento nástroj pobavil, a navíc dostali možnost získat badge Participant, pokud úspěšně dokončí všechny úrovně.

Ezoterické programovací jazyky

Výuka programování má více rozměrů. Kromě nástrojů, které slouží pro seznámení se základy programování, existují také programovací jazyky, jejichž cílem není primárně výuka programování nebo uplatnění v praxi. Jedná se spíše o experimenty, které se velmi odlišují od konvenčních programovacích jazyků, a jsou zajímavou ukázkou toho, čím vším se dokážou lidé bavit. Navíc tyto experimenty hledají hranice toho, čeho jsou schopny programovací jazyky dosáhnout. Jedná se sice pořád o programování, ale na trochu jiné úrovni.

Ukázka zdrojového kódu ezoterického programovacího jazyka FALSE:

99 9[1-$][$@$@$@$@/*=[1-$$[%1-$@]?0=[$.' ,]?]?]#

FALSE je jedním z nejstarších ezoterických programovacích jazyků (1993), jde o stack-based (na zásobníku založený) programovací jazyk s jednoznakovými příkazy a proměnnými. Například zdrojový zápis 3[1+]! v jazyce FALSE odpovídá výpočtu 3+1. Operátor + vyjadřuje přičítání hodnoty 1, závorky uzavírají funkci a hodnota 3 uvádí počet opakování funkce.

Závěr

Všichni jsme obklopeni digitálními technologiemi. Nebuďme jejich pouhými konzumenty, ale aktivními uživateli, kterým jejich schopnost informatického myšlení poskytne svobodu přizpůsobit jejich chování vlastním potřebám. Prvním nezbytným krokem k dosažení této svobody je naučit se základům programování.

Licence

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

Autor
Petr Kozák

Hodnocení od uživatelů

Mira Friedrichová
27. 5. 2015, 06:44
Zajímavé, ještě doplním, podle mne úžasný nástroj s rozsáhlou podporou App inventor 2 - pro intuitivní tvorbu mobilních aplikací. Doporučuji vyzkoušet.
Petr Kozák
27. 5. 2015, 08:47
Děkuji. Shodou okolností jse se nedávno přihlásil do MOOC kurzu přes edX, který pořádá Trinity College v Hartfordu a který se týká MIT App Inventoru. Kurz poběží od 16. 10. 2015.
Bořivoj Brdička
27. 5. 2015, 08:49
Tomu, komu to snad uteklo, připomínám, že o Inventoru jsme, díky panu učiteli Němcovi, měli celý seriál - naposedy zde - http://spomocni…k/20005/ .
Pana Kozáka bych rád poprosil, aby nás pak s tím, co se dozvěděl, seznámil. Dík!
Petr Kozák
27. 5. 2015, 09:30
Právě zmiňovaný příspěvek pana učitele Němce byl pro mě motivací pro přihlášení do kurzu. O zážitky, zkušenosti a nové poznatky se velmi rád podělím.

Váš komentář

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

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

Průřezová témata:

  • Odborné vzdělávání
  • Informační a komunikační technologie