Malé jazyky: spôsob ako naučiť zásady programovania
OBSAH :
  • Všeobecne o mini-jazykoch
  • Nedostatky klasického prístupu vo výučbe programovania
  • Alternatíva malých jazykov
  • Stručný prehľad malých jazykov
  • Základné charakteristiky mini-jayzka
  • Úloha prostredia programovacieho jazyka
  • Sady problémov
  • Použitie viacerých mikrosvetov súčasne
  • Malé jazyky a "pod-jazyky"
  • Záver
  • Všeobecne o mini-jazykoch

        Malé jazyky sú vizuálne intuitívny, jednoduchý a silný nástroj na uvedenie študentov do sveta programovacích jazykov. Sú dobrým základom pre všeobecné počítačové učenie, poskytujú nahliadnutie do programovania pre bežného človeka a učia algoritmickému mysleniu.

        Vynaložilo sa mnoho úsilia na vytvorenie špeciálnych jazykov, ktoré by podporovali počiatočné kroky vo výučbe programovania. Pravé pochopenie podstaty prišlo s Logom – korytnačou grafikou (Papert, 1980). Úspech Loga vo všeobecnosti, konkrétne korytnačej grafiky, stimuloval rozvoj mini-jazykov pre výučbu princípov programovania.

        Ideou mini-jazykov je vypracovať malý a jednoduchý jazyk pre vstup do programátorského sveta. Vo väčšine malých jazykov študent pomocou jednoduchých príkazov ovláda nejaký objekt (korytnačku, robota alebo inú “živú bytosť”)v jej mikrosvete. Študent priamo na obrazovke pozoruje správanie objektu a sleduje, ako sa vykonávajú jeho príkazy. Objekt môžeme ovládať zadávaním jednoduchých príkazov do príkazového riadku, alebo písaním zložitejších programov. Malý jazyk v zásade obsahuje príkazy a operácie na riadenie objektu. Väčšina mini-jazykov obsahuje základné riadiace štruktúry (podmienené vykonávanie, cyklus, rekurziu, atď.) a mechanizmus na vytváranie nových inštrukcií (príkazov, podprogramov). Termínom malé jazyky označujeme kombináciu objektu a jazyka, ktorým tento objekt ovládame.

        Existuje viacero dôvodov, prečo vyučovať malé jazyky. Predovšetkým poskytujú dobrý základ pre učenie vyšších jazykov, ako Pascal, C, LISP a iné. Otvárajú cestu k novej vzdelávacej príležitosti. Malé jazyky tiež poskytujú pevný základ pre systematické riešenie problému aj pre ľudí, ktorí budú “programovať” len na úrovni tabuľkových procesorov, databázových systémov, alebo iných aplikačných programov. Mini-jazyky samozrejme podporujú algoritmické myslenie.

    Nedostatky klasického prístupu vo výučbe programovania

        V súčasnej dobe, väčšina študentov, ktorí sa začínajú učiť základy programovania, prichádza do styku s profesionálnymi programovacími jazykmi. Predkladá sa im množina problémov z oblasti spracovania čísel a symbolov. Odborníci však tvrdia, že efektívnosť klasického prístupu je všeobecne veľmi malá. Dokonca čím mladším študentom sa predkladá, tým horšie sú jeho výsledky. Hlavné nevýhody profesionálnych programovacích jazykov, ktoré spôsobujú nemalé prekážky pre programátorov – začiatočníkov :

    • Sú príliš veľké a vyžadujú až nadmiernu presnosť (sú veľmi citlivé). Študenti si teda osvojujú základy jazyka a súčasne zásady programovania. Spolu je to pre nich obrovské množstvo nového. Namiesto zdôraznenia zásad programovania jazyk nabáda študentov pochopiť špecifiká daného jazyka a jeho implementácie.
    • Nie sú vizuálne orientované. Väčšinou sa programy vykonávajú “skryto”, čím sa u študenta prehlbuje myslenie orientované na vstupy a výstupy. Toto je prekážkou pre zvládnutie sémantiky jazyka.
    • Keďže sú orientovaná na spracovanie čísel a symbolov, prvé problémy, ktoré môžeme pri vyučovaní použiť, sú vzdialené každodenným skúsenostiam študentov. Teda sú neatraktívne.
    • Pri vytváraní poučnej a zaujímavej aplikácie sa študent musí naučiť pomerne veľkú podmnožinu príkazov a štruktúr jazyka, nehovoriac o zvládnutí programovacieho prostredia. Taktiež sa to odzrkadlí na dĺžke samotného programu. Toto predstavuje ďalší rušivý moment.
    Alternatíva malých jazykov

        Zásady programovania je téma, s ktorou by sa žiak mal stretnúť už v prvých ročníkoch na škole. Poskytuje základ pre logické i abstraktné myslenie, čo je dôležitý moment vo vyučovacom procese.

        Prvou výhodou mini-jazykov je, ako samotný názov napovedá, že sú malé. Majú malú syntax a jednoduchú sémantiku. Teda žiak, aj na úrovni základnej školy, môže za veľmi krátky čas zvládnuť tento programovací jazyk. Ďalej sa venuje riešeniu rôznych zaujímavých úloh, osvojuje si algoritmické princípy (študenti vysokých škôl) a zásady programovania (všeobecnejšie publikum).

        Druhou veľkou výhodou malých jazykov je, že sú postavené na metafórach, Umožňujú vytvárať bohaté množiny problémov, ktoré zahŕňajú základné myšlienky malého jazyka a priamo súvisia s životnými skúsenosťami žiakov.

        Operácie vykonávané objektom sú vždy viditeľné, čím sa odhaľuje sémantika jazyka, jazykovej konštrukcie. Vizuálny sled umožňuje nováčikovi pochopiť sémantiku predkladaných konštrukcií, objasňuje princípy programových štruktúr a zabraňuje množeniu chýb. Vizualizácia podporuje učenie sa bádaním.

        Ďalšou dôležitou výhodou malých jazykov je, že tvorca jazyka nie je viazaný na syntax a sémantiku “veľkých” programovacích jazykov, ktoré nie sú vhodné pre začiatočníkov. Jazyk je vytvorený pre presne určený vzdelávací cieľ, pre presne definovanú skupinu študentov. Môže používať prirodzený jazyk študentov. Jeho prostredie je veľmi atraktívne.

    Stručný prehľad malých jazykov

        Vývoj mini-jazykov bol silne ovplyvnený korytnačou grafikou Loga. V istom zmysle ju môžeme považovať za prvý príklad malého jazyka, i keď Logo nebolo vyvinuté špeciálne za účelom vyučovať programovanie. Korytnačia geometria sa však javí ako dobrý nástroj pre vstup nováčikov do programátorského sveta.

        Prvý a stále najpopulárnejší skutočný mini-jazyk “Robot Karel” bol navrhnutý a realizovaný Richardom Pattisom na Stanfordskej univerzite (USA) ako mierny úvod do štruktúrovaného programovania v jazyku Pascal pre univerzitných študentov. Karel obsahuje všetky dôležité pascalovské štruktúry, učí základným predstavám o procedurálnej abstrakcii, sekvenčnému a podmienenému vykonávaniu príkazov. Neobsahuje však žiadne premenné, typy ani výrazy. Objekt robot Karel vykonáva rôzne úlohy vo svete stien, značiek a tehličiek. Jeho hlavné aktivity sú “pohni sa”, “otoč sa”, “polož tehlu”, “zodvihni tehlu”, “polož značku” a “zodvihni značku”. Pomocou 18 základných príkazov môže tento robot kontrolovať stav svojho mikrosveta.

    Ďalšie mini-jazyky, ktoré sa priamo inšpirovali Karlom :Karel 3D pre MS-DOSKarel 3D pre Windows

    • Karel-3D (Hvorecky, 1992) na Slovensku. Jazyk je upravený pre žiakov základných a stredných škôl.
      Obsahuje isté zmeny oproti klasickému Karlovi:
      • robot sa pohybuje už v trojrozmernom priestore, na rozdiel od pôvodnej verzie, ktorá pracuje v rovine
      • robot je ovládaný v troch režimoch: klávesmi v priamom režime, príkazmi v dialógovom režime, alebo vlastnými príkazmi v editovacom režime
         
    • Marta (Calabrese, 1989) v Taliansku
      • Martu môžeme ovládať šípkami, čo je veľmi vhodné najmä pre menších žiakov
      • vie postaviť svoj vlastný mikrosvet
      • môže byť riadená “potme”, kde nevidno prekážky a značky
      • pomerne jednoducho sa dajú definovať nové príkazy a operácie písaním Logovských procedúr
      • programovať možno na viacerých úrovniach : priamy jednoriadkový režim, viacriadkový režim a editovací režim (Logovské procedúry)
         
    • Josef the Robot (Tomek, 1982;1983)
      • tento mini-jazyk bol vytvorený v tom istom čase ako Karel
      • je kombináciou jazykov Karel a Logo, používa konštrukcie mini-jazykov
      • jeho filozófia spočíva v príprave malých programátorov na vytváranie programov vo “veľkom” jazyku
         
    • Wayfarer (Kouchnirenko 1988)
      • navrhnutý pre kurz programovania študentov katedry Mechaniky a matematiky Moskovskej Štátnej univerzity
      • hlavným cieľom bolo zaujať študentov hneď od prvej hodiny množinou zaujímavých problémov
      • úlohy rieši pohybujúci sa Wayfarer, ktorý vie označovať políčka pomocou jazyka “Mini”
         
    • Turingal (Brusilovsky, 1991)
      • malý jazyk, vytvorený v roku 1983 pre študentov Počítačovej katedry Moskovskej Štátnej univerzity
      • poskytuje kontrolu známej algoritmickej teórie – Turingovho stroja, ktorý pracuje s páskou symbolov
      • základné operácie jazyka sú jednoduché a názorné – pohyb vľavo a vpravo po páske, písanie symbolov na pásku
      • jazyk ponúka riadiace štruktúry (podmienené vykonávanie a cykly) a tvorbu podprogramov s podobnou syntaxou a sématikou ako v jazyku Pascal
         
    • Tortoise (Brusilovsky, 1994)
      • vytvorený pre 14 – 15 ročných študentov ruských škôl
      • podobá sa Turingalu, je však upravený tak, aby bol atraktívny pre mladých študentov
      • napr. páska so symbolmi je reprezentovaná dvojrozmerným poľom symbolov
         
    • Darel (Kay a Tyler, 1993) v Austrálii, Martino (Olimpo a kol., 1985) v Taliansku
        Existujú rôzne typy malých jazykov, ktoré slúžia na rôzne účely. Sady riadiacich príkazov a typ ovládaného objektu závisia predovšetkým od veku, záujmov a vyučovacích cieľov u žiaka.

    V článku sa autori zaoberajú hlavne vyučovaním procedurálnych jazykov. Mini-jazykový prístup sa však dá aplikovať aj na iné paradigmy. Napríklad pre paralelné programovanie je vhodný projekt “Robot Brothers” (Olimpio, 1998), príkladom objektovo-orientovaného prostredia sú “Playground” (Fenton and Beck, 1989), “Gravitas” (Sellman, 1992) a “KidSim” (Smith a kol., 1994). Niektorí autori považujú objektovo-orientované malé jazyky za najlepšiu možnosť, ako vyučovať mladších študentov základy programovania.

    Základné charakteristiky mini-jazyka :
    • jednoduchosť v syntaxi aj sémantike
    • názornosť - pri väčšine operácií s objektom sú zmeny viditeľné v mikrosvete, reprezentovanom na obrazovke počítača
    • atraktívnosť a zmysluplnosť - zameraný pre danú kategóriu študentov ( napr. v Japonsku s motívom Sumo zápasenia – Algo-Arena (Kato and Ide, 1993), alebo iný systém s metafórou nakupovania v supermarkete (Comr and Pintelas, 1989))
    • “zhovorčivosť” - dialógový režim – t.j. každý príkaz sa vykonáva v riadiacom alebo programovacom móde
    • modularita – mal by obsahovať mechanizmus na vytváranie abstraktných inštrukcií (procedúr), tieto procedúry by mali tvoriť nezávislé jednotky, ktoré možno využiť pri riešení čiastkových problémov
        Dobrý mini-jazyk by mal byť doplnený o sadu atraktívnych a účelných problémov, ktoré by riešili študenti. Riešenie problémov je najefektívnejšou cestou zdokonaľovania sa v jazyku. Tieto problémy musia byť zaujímavé či už z pohľadu dosiahnutia cieľa, alebo ešte v čase riešenia.

        Prostredie malého jazyka by malo ponúkať štruktúrový editor (napr. ako v Karel 3D), ktorý pomáha študentovi vyvarovať sa syntaktických chýb a pomáha orientovať sa v názvoch konštrukcií – príkazov.

        Keď učíme princípy programovania malých žiakov, vo veku 7 – 9 rokov, špeciálny dôraz sa kladie na atraktívnosť objektu mikrosveta. Spôsobov ako ho zatraktívniť je viacero. Dôležité je však, aby sme sa priblížili reálnemu svetu. Vhodným námetom, predovšetkým u menších žiakov, môže byť robot, ako je to napr. v Lego–Logu. Iným príkladom môže byť použitie robota v paralelnom programovaní, s ktorým sa stretávame v MultiLogu (Resnick, 1990). Nahradením objektov mikrosveta reálnymi sa programovacie jazyky stávajú nielen atraktívnejšími, ale taktiež podporujú spoluprácu pri riešení problému.

     
    Úloha prostredia programovacieho jazyka

        Dobré programovacie prostredie by malo umožniť, aby bol na obrazovke viditeľný mikrosvet a zároveň aj študentov program. Taktiež by sa mal znázorňovať riebeh vykonávania programu. Program by mal vykonať naraz jednu inštrukciu, zatiaľ čo interpreter ju v programe vysvieti a efekt sa zobrazí v mikrosvete. Dôležité je tiež vizualizovať premenné a zásobník volaní podprogramov.

        Prostredie by malo ponúkať štruktúrový editor, na zvýšenie študentovej produktivity. Pomáha vyvarovať sa syntaktických chýb a poskytuje bezprostedné určenie ostatných chýb. Tiež napomáha orientovať sa v názvoch konštrukcií.

        Dobrý príklad mini-jazykového programovacieho prostredia s požadovanými funkciami predstavuje Karel Genie (Miller a kol., 1994). Poskytuje množinu špeciálne vytvorených nástrojov - štruktúrový editor, pohľad dekompozície programu a run-time system.Karen Genie je integrované programovaci eprostredie. Zdrojový kód sa počas vykonávania vysvecuje

        Prostredie je vhodné rozšíriť o inteligentnú tútorovú súčasť a hypermediálnu súčasť. Inteligentný tútor môže zmenšiť množstvo nekreatívnej práce učiteľa a ušetriť
    jeho čas pre prácu so študentmi, ktorí majú špeciálne požiadavky. Poskytuje potrebné množstvo vedenia: študentovi navrhuje ďalšiu koncepciu pri riešení problému
    vzhľadom na jeho súčasné vedomosti. Hypermediálna súčasť rozširuje priestor bádateľskému vyučovaniu, poskytuje študentmi poháňaný prístup ku konceptuálnym
    vedomostiam a príkladom.

    Sady problémov

        Dobrý malý jazyk by mal byť doplnený o dobrú sadu atraktívnych a zmysluplných problémov určených pre študentov na vyriešenie. Riešenie problémov je
    najefektívnejšia metóda na osvojenie si jazyka a na podporu dôležitých koncepcií. Sada musí obsahovať problémy rôznej zložitosti a zahŕňať všetky dôležité
    koncepcie. Úlohy musia byť pre študentov zaujímavé, z hľadiska dosiahnutia cieľa i samotným procesom vyvíjania riešenia. Už pri vytváraní malého jazyka by
    sme mali myslieť na zbierku zaujímavých úloh.

        Veľmi úspešný je nasledujúci prístup: študentovi predostrieme nový zmysluplný problém, potom mu predstavíme novú programovú konštrukciu, ktorá problém
    vyrieši.

        Zatiaľ sme hovorili o situácii "jeden mikrosvet – mnoho problémov". Existuje aj iný prístup "jeden mikrosvet – jeden problém", kde mikrosvet je orientovaný na
    riešenie jedného, avšak stále viac zložitého problému (napr. nájsť východ z labyrintu). Dobrými príkladmi sú TRAPS system (Witschital et al.,  1989) - presúvanie objektu po pohyblivej doske pomedzi prekážky a Algo-Arena (Kato and Ide, 1993) - riadenie sumo zápasníkov.
     

    Použitie viacerých mikrosvetov súčasne

        Môžme použiť aj viaceré mikrosvety súčasne, alebo za sebou na zdôraznenie rôznych aspektov témy alebo na výučbu rôznych častí. Pochopenie nového jazyka si
    však vyžaduje množtvo času a mentálneho úsilia. Ak sme so študentami začali používať nový programovací jazyk, očakávajú, že sa s ním budú stretávať dlhšiu dobu.
    Taktiež malé jazyky ovládajúce rôzne objekty môžu byť veľmi podobné.
     

    Malé jazyky a "pod-jazyky"

        Myšlienkou "pod-jazykového" prístupu je navrhnúť špeciálnu podmnožinu jazyka obsahujúcu niekoľko "ľahko vizualizovateľných" operácií. Množina štyroch "korytnačích" príkazov Loga je príkladom "pod-jazyka". Tento prístup zvyčajne aplikuje rovnakú ideu – aktívny objekt žijúci v mikrosvete.

        "Pod-jazykový" prístup sa líši od prístupu mini-jazykového v jednej veľmi dôležitej veci. Kým v mini-jazykovom prístupe používame špeciálny malý jazyk s vlastnými príkazmi a riadiacimi štruktúrami, "pod-jazykový" prístup poskytuje len množinu príkazov a operácií ako časť nejakého "veľkého" jazyka. Ak je priamym cieľom študenta naučiť sa "veľký" jazyk, je vhodnejšie zvoliť "pod-jazykový" prístup.
     

    Záver

        Skúsenosti autorov ukazujú, že mini-jazykový prístup pri vyučovaní fundamentálnych zásad programovania pre rôzne skupiny študentov je úspešný. Nemôžme pritom vyhlásiť, že existuje jeden správny a perfektný malý jazyk. Voľba objekt a kontrolných štruktúr závisí od skupiny študentov - od ich veku, prostredia, záujmov a cieľa, ktorý chcú zvládnuť.

    Malý jazyk nikdy nie je samotným cieľom. Je to metóda na osvojenie, naplnenie istých predstáv a zručností.

    V súčasnosti je veľmi málo článkov obsahujúcich skúsenosti z vyučovania či experimentov s malými jazykmi. Je čas overovať tieto skúsenosti a referovať zistenia.

        Je čas preniesť všetky tieto nápady a skúsenosti do "reálneho sveta". Tieto skvelé programovacie prostredia pre začiatočníkov by mali opustiť laboratóriá a univerzity, kde boli stvorené a nájsť si cestu do škôl, univerzít a domovov. Súčasné "veľké" programovacie prostredia (ako napr. Borland Pascal) by sa mali poučiť zo skúseností najlepších začiatočníckych prostredí. Poskytujú síce prostriedky na ladenie programu, krokovanie a sledovanie hodnôt premenných, stále im však chýba veľa užitočných vlastností.
     

    Použitá literatúra :

    1. Education and Information Technologies 2, 1997, str. 65 - 83


    Spracoval: Martin Compeľ, 5MI, 1999