Karel (programovací jazyk)

Karel je programovací jazyk (a väčšinou aj vývojové prostredie) zväčša určený na výuku programovania úplných začiatočníkov. V súčasnej dobe sa často používa aj na výučbu objektovo orientovaného programovania dokonca aj na vysokých školách.

Pôvodný robot Karel

V minulosti sa objavilo už niekoľko pokusov o vývoj špeciálnych jazykov uľahčujúcich prvé kroky pri vyučovaní dieťaťa. Medzi najznámejšie patrí korytnačia grafika. V polovici roku 1960 Seymour Papert, matematik, ktorý pracoval so Jeanom Piagetom v Ženeve, po príchode do USA spolu s Marvinom Minskym založili Laboratórium pre umelú inteligenciu na Masatchusetskom technologickom inštitúte (MIT). Papert pracujúci pre firmu BBN (Bolt, Beranek and Newman), pod vedením Wallace Feurzeiga, v roku 1967 vytvoril prvú verziu Loga.
Do konca roku 1970 sa Logo rozšírilo na MIT a niekoľko ďalších výskumných miest: Edinburgh, Škótsko, Tasmániu a Austráliu. V miestnych školách sa viedli  malé bádateľské aktivity. Dan Watt a iní výskumníci z MIT dokumentovali svoje práce niekoľkými žiakmi základných škôl, kde používali Logo. Ich výsledky boli v tom čase publikované v MIT.
Rozmach zažilo Logo koncom 70-tych rokov spolu so vstupom prvých osobných počítačov na scénu. MIT Logo skupina vyvinula verziu Loga pre dva typy počítačov: Apple II a Texas Instruments TI 99/4. Samotný programovací jazyk Logo bol v obidvoch verziách totožný, rozdiely boli len vo využití.
Nové verzie Loga boli implementované vo viac ako dvanástich jazykoch na rozmanitých počítačoch. V severnej Amerike boli populárne Atari a Commodore Logo. V tom čase bol veľký záujem o Logo ako seriózny programovací jazyk, zvlášť na nových počítačoch Macintosh. Coral Software vyvinuli objektovo orientovanú verziu Loga, nazvanú Object Logo. Aj napriek tomu, že obsahovala kompilátor, nestala sa veľmi populárnou.
Pomerne veľký úspech malo Logo v Latinskej Amerike, kde sa každé dva roky v inej krajine konal Logo kongres. Ďalšie krajiny, kam zavítalo Logo, sú Japonsko, Anglicko, Španielsko a samozrejme Slovensko (Comenius Logo).
Programovací jazyk Logo, “nárečie” Lisp-u nebol navrhnutý špeciálne na výučbu programovania a na používanie korytnačej grafiky, ale podmnožina Loga sa ukázala ako veľmi vhodná. Napriek úspechu korytnačej grafiky jej možno vytknúť jednu chybu: na rozdiel od iných malých jazykov je korytnačka akoby slepá a nedokáže odpovedať na požiadavky, kontrolovať stav svojho sveta.
Prvý a veľmi populárny malý jazyk bol „Karel the Robot“ navrhnutý Richardom Pattisom ako úvod k vysokoškolským prednáškam o jazyku Pascal. Pattisov „Karel the Robot“ sa „narodil“ v roku 1981. Bol opísaný v knihe s rovnakým názvom. Pattis rovnako navrhol prvé programovacie prostredie pre Karola. Jazyk obsahoval všetky dôležité štruktúry z Pascalu na riadenie činnosti programu. Dal sa použiť na výučbu sekvenčného vykonávania programu, procedúr, podmienok a cyklov. Zložitosť programovania bola znížená vypustením premenných, typov alebo výrazov. Ovládaný objekt – robot Karel sa pohyboval po miestnosti, kde sa nachádzali steny, tehly a ďalšie objekty, Karel mohol vyberať tehly zo svojho vreca. Medzi základné príkazy, na ktoré vedel robot reagovať, patrili: krok, vľavo, vpravo, zober a polož. Celkom 18 predikátov umožňovalo Karlovi (programátorovi) kontrolovať stav svojho mikrosveta (prítomnosť tehál v okolí, stien, smer, atď.).
Robot dostal meno podľa známeho českého spisovateľa Karla Čapka. Ten ako prvý v scenári divadelnej hry R.U.R. pomenoval stroj podobajúci sa človeku. Túto divadelnú hru prvýkrát uviedli v pražskom Národnom divadle 25. januára 1921. Vtedy ešte určite netušil, že jeho nápad sa bude používať aj ako motivačný prvok a základy detského programovania sa budú vyučovať pomocou robota, ktorý bude niesť meno po svojom objaviteľovi.
V Pattisovej verzii sa robot pohyboval v meste pozostávajúcom z vodorovných ulíc (streets) a zvislých bulvárov (avenues –- zvislý smer mali pripomínať prvé písmená: AV).
Robot rozumel piatim základným príkazom: move (presuň sa na ďalšiu križovatku), turnleft (otoč sa vľavo), putbeeper (polož bzučiak), pickbeeper (zdvihni bzučiak) a turnoff (vypni sa); dokázal testovať, či je pred ním voľno, či sú v jeho blízkosti bzučiaky a na ktorú stranu je otočený. S pomocou týchto základných príkazov a programových konštrukcií (sekvencie, slučky, podmienené príkazy) bolo možné definovať nové príkazy a používať ich v programe.

Príklad

Jednoduchý príklad programu v programovacom jazyku Karel:
BEGINNING-OF-PROGRAM
 
 DEFINE turnright AS
 BEGIN
   turnleft
   turnleft
   turnleft
 END
 
 BEGINNING-OF-EXECUTION
   ITERATE 3 TIMES
     turnright
 
   turnoff
 END-OF-EXECUTION
 
END-OF-PROGRAM

Karel v Česku

V Česku bola pôvodná myšlienka ľahko upravená. Robot sa pohyboval po obdĺžlnikovej, šachovnicovo usporiadanej ploche, na ktorej políčka ukladal a z nich zdvíhal značky. Jeho základnými príkazy boli: Krok, VlevoVbok, Polož (rozumej značku) a Zvedni (značku). Okrem toho vedel otestovať, či pred ním múr, či pod ním značka a či je otočený na sever.
Robot Karel môže vykonávať veľmi rozmanité činnosti: od primitívnych príkazov typu VpravoVbok cez jednoduché skoky, obehy poľa a kreslenie rôznych obrazcov z Karlových značiek, až ku zložitému hľadaniu značiek v bludisku alebo sčítanie a porovnávanie čísel (predstavovaných počtom značiek na jednotlivých políčkach).

Metodika

Okolo českej verzie Karla vznikla rozsiahla metodika so sériou najrôznejších výukových materiálov. Táto metodika v prvej etape výuky vôbec nepoužíva v programoch premenné, čím znižuje nároky na množstvo látky, ktorú je potrebné žiakom predniesť. Žiaci sa v tejto etape naučia predovšetkým dekomponovať zložitejšie problémy na sadu problémov jednoduchších a používať základné programovacie konštrukcie. Používanie premenných sa zavádza až pri prechode na konkrétny programovací jazyk. Tu žiaci používajú knižnicu simulujúcu im známy svet robota Karla. Najprv sa pri prepisovaní svojich programov pre robota Karla naučia základy syntaxe použitého programovacieho jazyka a v ďalších etapách začnú tieto programy zdokonaľovať s využitím premenných.

Karel++

Programovací jazyk Karel bol neskôr rozšírený na objektovo orientovaný jazyk označený Karel++ (podľa vzoru C++). Tento jazyk je syntakticky podobný jazyku Java.