neděle 12. března 2017

Bonus 1: Programovací jazyk Karel


Programovací jazyk Karel

Občas si dovolím trochu odbočit od her a vypíchnout i některá další zajímavá témata v hodně nárazových bonusových článcích. Naprosto ideální kandidát je právě "Karel", což je programovací jazyk určený pro úplné začátečníky, jenž se používá dodnes. Vymyslel ho Richard E. Pattis, který ho používal při výuce základů algoritmizace na Stanfordské univerzitě a pojmenoval ho po našem Karlu Čapkovi.

Richard E. Pattis

V Československu byl tento jazyk obrovsky populární, což dokazují porty na většinu dostupných platforem. Máme tu verzi pro ZX Spectrum (1985) od Jana Rupperta, ze které je úvodní obrázek (ten maloval Franta Fuka). Od Tomáše Bartovského máme verze pro počítače Ondra a ZX-81 (1985). Nejvíce verzí však vzniklo pro počítač PMD 85, což dává smysl, protože ten se vyskytoval téměř výhradně ve školách. Svoje verze vytvořili Tomáš Bartovský, Marián Vittek a Karel Šuhajda.

Úvodní obrazovka, verze pro Spectrum
Karel je vlevo dole a chystá se vydat do bludiště a najít značku (nahoře).
Vlevo je výpis příkazu "najdi" s rekurzí.

V programu ovládáme robota a zadáváme mu příkazy, které pak plní. Problém je, že zná jen naprosté základy a zbytek si musíme naprogramovat sami. Karel se pohybuje po šachovnicovém poli, kterému se zde říká "město". Na začátku můžeme město upravit a přidat zdi (vytvořit bludiště) a značky (předměty, které Karel může zvedat a pokládat).

V základu jsou pouze tyto příkazy:
  • krok (= jdi na pole před tebou)
  • vlevo-vbok (= otoč se o 90°)
  • polož (= polož značku)
  • zvedni (= zvedni značku)
  • stop (= ukonči vykonávání příkazu)

Samozřejmě umí většinou i vyhodnocovat podmínky (když, dokud) a cykly (opakuj x krát). Typicky první úlohou je naučit se, jak robota přimět, aby se otočil doprava, když na to nemáme příkaz. Ten si musíme sami vytvořit tím, že zadáme 3x vlevo-vbok a je hotovo. Zdá se to jako jednoduchá věc, ale samozřejmě pro děti jsou tyto základy algoritmizace klíčové, ostatně budu citovat svého kamaráda Crashe, který vzpomínal na svůj první kontakt s Karlem:

"Pamatuju si právě tu první hodinu, kdy učitel začal tím, že Karel umí jen "vlevo v bok", tak jakpak ho naučíme "vpravo v bok"? Čuměl jsem na něj jak idiot a říkal si, že ho to naučíme asi těžko, když je tak blbej. Načež nám byl samozřejmě nenásilnou formou vysvětlen cyklus s pevným počtem opakování tedy "opakuj 3x vlevo v bok" a bylo vymalováno. Byla to naprosto primitivní věc, ale tehdy to prozření a pochopení algoritmu na mě mělo dost zásadní vliv a i mnohem později, když jsem se někde ve svých programovacích pokusech zasekl a měl pocit, že to prostě nejde, tak jsem si vždycky vzpomněl, že Karel taky vpravo v bok neuměl, a že to určitě nějaké řešení mít bude."
Na internetu se stále dají najít příklady a můžete si tak rychle vyzkoušet některé pokročilejší věci. Já si zkusil třeba automatické vytvoření šachovnice či "postavení domu".

Karel sám položil šachovnici a vrátil se vlevo dolů na výchozí políčko
Nevypadá to nic moc, ale skrývá se za tím velké množství kódu !

Robot Karel se objevuje jako postava i v některých hrách - například jako nepřítel mě hodně potrápil v Itemiadě a dokonce si za něj můžeme zahrát ve hře "Robot Karel" na Atari. Verze od Mariána Vitteka je dokonce v pseudo 3D grafice.

3D verze pro PMD 85 od M. Vitteka
Verze pro PMD 85 od K. Šuhajdy
Verze pro ZX81 od T. Bartovského

Pochopitelně je ovšem v dnešní době už neskutečně nepohodlné a zdlouhavé tohle "vývojové prostředí" používat. Než napíšete nějaký složitější příkaz, trvá to strašně dlouho, stejně tak prohlížení již napsaného kódu. Na internetu se ovšem dají najít i verze určené pro prohlížeč, jež jsou o něco příjemnější. Stále jsou to ovšem v porovnání s moderními IDE galeje. Pokud se chcete naučit programovat, stáhněte si raději Python ;)

Žádné komentáře:

Okomentovat