Tato skupina je reprezentována třemi nástroji: Baltazarem, jeho mladším bratrem Baltíkem a jimi inspirovaným, konkurenčním Petrem. Nejvíce pozornosti bezpochyby zasluhuje Baltík, kterého považuji za naprosto jasného favorita v konkurzu o nejlepší nástroj pro vstupní kurzy programování.
Než se pustím do vlastního článku, chtěl bych upozornit na článek R. Fojtíka Programování na ZŠ (4.díl) – český přínos k výuce, v němž se můžete dozvědět některé další informace o tomto tématu.
Baltazar
Původní prostředí robota Karla, které se u nás v 80. letech používalo při výuce programování, mělo dvě nevýhody:
- Svět robota Karla byl navržen tak, aby jej bylo možno jednoduše implementovat i na počítačích s alfanumerickým výstupem. Je zřejmé, že využitím možnosti grafiky by se práce se systémem stala efektnější a tím i přitažlivější.
- Český Karel a jeho svět byly navrženy tak, aby při řešení úloh programátoři nepotřebovali proměnné. Takto koncipovaný Karel byl sice velice užitečný při počáteční výuce základů algoritmizace, avšak ve své původní verzi nenabízel žádný větší prostor pro stejně elegantní využití i při následném výkladu práce s daty.
Cestu, jak řešit výše uvedené nevýhody, naznačil B. Soukup ve svém systému Baltazar (demoverzi se můžete zadarmo stáhnout na stránkách firmy SGP). Robot Karel je v něm nahrazen čarodějem Baltazarem, který se sice také pohybuje v šachovnicově uspořádaném světě, ale jeho možnosti jsou mnohem bohatší.
Především nahradil poměrně abstraktní značky konkrétními předměty označenými číslem (místo pěti značek je na poli předmět č. 5). Tyto předměty však Baltazar nepokládá, ale (jak lze ostatně od kouzelníka předpokládat) čaruje. Další rozdíl je v tom, že zcela akceptoval ideu dvorku a kouzelník předměty nepřičarovává na políčko, na němž stojí, ale na políčko před sebe. Tím se ještě více zpřehlednil činnost, kterou kouzelník podle programu provádí.
Předměty jsou právě tak veliké, jako jedno políčko dvorku. Baltazar přichází přibližně se třemi stovkami hotových předmětů. Uživatel si však může nakreslit tisíce předmětů vlastních a pak je ve svých programech používat.
Problémy se způsobem zápisu
Až potud je vše krásné, mohli bychom říci přímo ukázkové. Problém však spočívá ve způsobu zápisu programu. Ten se totiž nezapisuje lineárně, jak tomu bývá v běžných programovacích jazycích zvykem, ale zakresluje se prostřednictvím dvojrozměrných struktur, které v roce 1975 zavedl jeden z guru programování – Michael A. Jackson. Na tyto struktury je pak aplikován preprocesor, který vytváří výsledný program v jazyce C.
Uznávám, že Jacksonovy struktury umožňují mnohem přehlednější zápis algoritmů a některé typy chyb se v nich snadněji hledají, ale v běžné programátorské praxi se již nepoužívají. Přechod z tohoto druhu zápisu ke klasickému je sice spojen s menšími potížemi, než přechod opačným směrem, nicméně jistou změnu zavedených zvyklostí vyžaduje. Až budou proto chtít žáci odchovaní Baltazarem přejít do nějakého klasického programovacího prostředí, budou se muset leccos naučit a leccos odnaučit.
Další nevýhodou je to, že tento styl programování výrazně upřednostňuje tvorbu algoritmů před tvorbou potřebných datových struktur. Jacksonovy diagramy vám totiž ukazují pouze strukturu algoritmu. O datech, nad nimiž tento algoritmus běží, neříkají vůbec nic. Přitom současné programátorské trendy intenzivně směřují k tomu, že větší část řešeného problému spočívá ve správném návrhu datových struktur, s nimiž pak pracují tak jednoduché algoritmy, že k jejich návrhu žádné složité grafické znázornění nepotřebujeme.
Programy, s nimiž jsem se setkal a které byly v prostředí Baltazara vytvořeny, moji předchozí obavu pouze potvrzují. Nejsložitější použitou datovou strukturou v nich většinou bývá vektor. Řada operací, které by bylo lze řešit elegantně zavedením vhodných datových struktur, se pracně realizuje prostřednictvím algoritmů pracujících s jednoduchými proměnnými.
Neberte moje předchozí výhrady jako pomluvu Baltazara a v něm použitých datových struktur. Naopak. Uznávám, že jsou geniální. Jenže právě jejich jednoduchost a elegance svádí k tomu, že se programátoři (jak učitelé, tak žáci) snaží vše řešit prostřednictvím rafinovaných algoritmů vytvářených pomocí Jacksonových diagramů a zapomínají na to, že řadu problémů mohou daleko elegantněji vyřešit prostřednictvím jednoduchých algoritmů nad správně strukturovanými daty.
Baltík
Baltík je mladším bratrem Baltazara (demoverzi se můžete zadarmo stáhnout na stránkách firmy SGP). Přebral od něj čaroděje a jeho prostředí. Doplnil sadu předpřipravených předmětů na téměř 2000 a přidal i řadu dalších možností.
V čem je Baltík jiný - výhody
Baltík přišel s naprosto jiným způsobem zápisu programů. Jednotlivé příkazy, které Baltík zná, jsou sestavovány z prvků (mohli bychom označit za dlaždice), které jsou umístěny na speciálním příkazovém panelu, odkud si je programátor prostřednictvím myši bere a vkládá do programu. Tento drobný, avšak naprosto geniální nápad rázem odstraňuje mnohé z potíží, s nimiž jsme se museli v hodinách programování potýkat:
- Žákům vůbec nevadí, že se zpočátku neorientují na klávesnici. I nejmladší děti velice snadno a rychle vytvářejí své programy pomocí myši.
- Odpadá řada problémů se syntaxí jazyka. Děti nemusejí myslet na to, jestli smí či nesmí být několik příkazů na stejném řádku, případně jestli se mají jednotlivé příkazy oddělovat např. středníkem.
- Žáci mají neustále před očima kompletní sadu všech použitelných příkazů, a nemusí proto přemýšlet nad tím, jak přesně se ten který příkaz jmenuje.
- Pokud si žáci nemohou vzpomenout, který příkaz použít, stačí na jednotlivé prvky postupně ukazovat myší a přečíst si na stavovém řádku jejich význam.
- Žáci se rychle naučí kopírovat či přesouvat pomocí myši prvky po programu, a dále tím výrazně zvyšují efektivitu své práce.
- Programy jsou pro žáky mnohem přehlednější, než tomu bývá u programů psaných v klasických programovacích jazycích.
Děti Baltíka milují. Jeho ovládání je tak jednoduché a intuitivní, že v něm s chutí programují i ti, u nichž bych to donedávna nečekal. Baltíka považuji za naprosto jednoznačného a jasného favorita v konkurzu o nejlepší nástroj pro vstupní kurzy programování.
Podíváte-li se na seznam podmínek, které by měly jazyk a jeho vývojové prostředí splňovat, pak zjistíte, že Baltík vyhoví většině z nich. Programy můžete s dětmi vytvářet prakticky okamžitě, umožňuje látku správně rozvrhnout a nadávkovat, příklady považují děti za zajímavé a jejich řešení neobsahují prakticky žádný šum. Jeho jednoduchá syntaxe navíc umožňuje, aby se děti soustředili na řešený problém a neodvádí jejich pozornost jiným směrem.
Vzhled Baltíkových programů je sice velmi osobitý a nestandardní, ale na druhou stranu je jeho syntaxe relativně blízká syntaxi klasických programovacích jazyků, takže na ně děti později bez problémů přecházejí.
Mezi jeho výhodné vlastnosti patří i to, že nabízí řadu elegantních a přitom mocných nástrojů na vytváření animací a doplňování programů o nejrůznější multimediální efekty.
Baltíkovy nevýhody
Avšak ani Baltík není dokonalý a dala by se mu řada věcí vytknout.
V režimu určeném pro začínající programátory neumožňuje používat procedury. Chceme-li začít vštěpovat dětem od začátku základy moderního programování, mezi něž bezesporu patří dekompozice složitých problémů na posloupnost problémů jednodušších, musím zbytečně brzo přepínat Baltíka do režimu určeného pro zkušenější programátory.
Jeho ladící prostředky jsou naprosto minimální, ba téměř nulové. Nejen že neumožňuje krokování programu, ale dokonce neumožňuje ani prohlížení běžícího programu. Ladění složitějších programů je proto velmi obtížné. Na jeho obhajobu musím přiznat, že obdobný postoj k ladění vykazuje i většina ostatních prostředí, nicméně u tak dobrého produktu, jakým Baltík je, mne to mrzí dvojnásob.
Umožňuje pracovat pouze s jednoduchými proměnnými a poli. Neumožňuje definovat žádné vlastní datové typy. Před výukou pokročilejší práce s daty je proto třeba Baltíka opustit a přejít k některému z klasických programovacích jazyků.
Příkazy, které nabízí v režimu pro zkušenější programátory, mají poněkud heterogenní syntaxi. V jednom příkazu se např. předmět chová jako číslo, avšak chcete-li jej jako číslo použít v některém jiném příkazu, Baltík vám neporozumí. Takovýchto příkladů bychom mohli najít více.
Uvedené nevýhody naštěstí nejsou koncepční a lze očekávat, že mnohé z nich budou v příští verzi odstraněny.
Petr
Petr je z rodiny programů inspirovaných Karlem nejmladší (jeho demoverzi si můžete stáhnout na stránkách firmy Gemtree). Přestože to jeho autoři popírají, je na něm vidět silná inspirace Baltazarem a Baltikem. Nebudu zde rozebíral před dvěma lety vášnivě diskutovanou otázku o tom, nakolik je to plagiát, a pokusím se jej pouze stručně charakterizovat.
Jeho autoři nahradili kouzelníka malým králíčkem, jehož pohyb není navíc omezen čtyřmi světovými stranami, ale umí, stejně jako např. šachový král, přejít přímo na kterékoliv z osmi sousedních polí. Nabízí ještě řadu dalších zajímavých rozšíření, nicméně tato rozšíření nejsou z hlediska výuky programování podstatná.
Důvodem pro to, abych jej pro výuku programování nedoporučoval, je způsob zápisu jeho programů. Programy pro králíka Petra se totiž zapisují do stejné stromové struktury, jakou nám ukazuje např. Průzkumník při zobrazování struktury složek. Pro tuto strukturu platí v bleděmodrém totéž, co jsem vytýkal Baltazarovi: je to něco naprosto jiného, než to, s čím se děti později potkají. Naučí-li se v ní někdo vytvářet programy, bude se to muset při přechodu ke klasickým programovacím jazykům zase odnaučovat.
Na rozdíl od Baltazara navíc Petrovi chybí možnost tvorby datových typů, kterou jsem před chvílí vytýkal Baltíkovi. Stejně tak mu chybí jakékoliv ladící prostředky.
Rudolf Pecinovský
0 komentářů:
Okomentovat