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. [-Na
začiatok-] |
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 :
[-Na
začiatok-] |
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. [-Na
začiatok-] |
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 :
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. [-Na
začiatok-] |
Základné charakteristiky mini-jazyka
:
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. [-Na
začiatok-] |
Ú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ť [-Na
začiatok-] |
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
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
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
[-Na
začiatok-] |
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
[-Na
začiatok-] |
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. [-Na
začiatok-] |
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í. [-Na
začiatok-] |
Použitá literatúra :