Legendární programovací jazyk Karel dostal novou verzi, a to v rámci svého čtyřicátého výročí. Aktualizovanou a zdarma dostupnou variantu Karel 1981 má na starost český vědecký spolek IHPCI.org. Moderní iterace Karla nadále slouží k výuce programování.
„Chceme vytvořit sérii tutorialů a lekcí, aby se s programem lépe pracovalo a učení bylo efektivnější. Rádi s našimi uživateli debatujeme, sbíráme zpětnou vazbu a vymýšlíme další kroky společně. Je skvělé, že i po čtyřiceti letech existence dokáže program držet krok s dobou a stále se vyučuje jak na vysokých školách, tak v zájmových kroužcích programování,“ popisují autoři.
Kateřina Maierová, Ondřej Kotora a Aleksei Lukashevich v rozhovoru pro Lupu popisují, jak to s komunitami a vývojem Karla je, co může dnes nabídnout nebo co plánují do budoucna.
Kolik komunit kolem Karla v Česku existuje?
Kateřina Maierová (KM): Funkčních verzí Karla, které najdete volně na síti, je přibližně pět až deset. Záleží na tom, jak dobře umíte hledat na internetu a jak moc se snažíte. Většina z nich je poměrně zastaralá a schovaná v hlubinách internetu bez modernizace a updatů. Nejnovější pocházejí z roku 2013 a dále se nerozvíjejí.
Když jsme zjistili, že se studenti vysokých škol s Karlem stále setkávají, padlo rozhodnutí ho resuscitovat. Vyšlo to na čtyřicáté narozeniny od jeho vzniku, což se nám moc líbilo. Okolo naší skupiny je dle statistik komunita ve stovkách uživatelů. Aktivních komunitních uživatelů, kteří sdílí zpětnou vazbu a podílí se nějakým způsobem na rozvoji, je v řádu nižších desítek.
Jaká je moderní historie Karla?
KM: V roce 1970 student postgraduálního studia na Stanford University Richard E. Pattis vytvořit jednoduchý programovací jazyk a prostředí, které by studentům sloužily jako vstupní brána do programování a syntaxe. V programu vystupuje robot Karel, pojmenovaný na počest Karla Čapka jako vynálezce slova robot.
Původní koncepce jazyka Karel je popsána Pattisem v knize Karel The Robot: A Gentle Introduction to the Art of Programming z roku 1981. Odtud pramení název naší varianty Karel 1981. Program se od té doby používá v různých formách jak na Stanfordu, tak ve světě dodnes.
V devadesátých letech se postupně měnil způsob programování na objektově orientované programování, na což v roce 1996 reagoval Pattis vydáním publikace Karel++: A Gentle Introduction to the Art Of Object-oriented Programming (původní koncepce Karla je typu strukturovaného programování). Syntaxe Karel++ je podobná programovacímu jazyku C++.
Karel byl ve své době velice populární a stal se inspirací mnoha lidem se zájmem o programování. Díky tomu vzniklo po celém světě mnoho variant prostředí a jazyka robota Karel. Příklady implementací vytvořených v jazyce Java jsou KarelJ či Jarel, v jazyce Python je pak pyKarel, další koncepce vznikly v JavaScriptu a existují i 3D verze.
V roce 2001 vznikla edukativní metodická příručka pro kroužky programování pro děti, která obsahuje praktická cvičení a implementace. Později v roce 2017 napsal student ze Zlína bakalářskou práci na téma jazyka Karel, ke které v rámci praktické části vytvořil knihovnu, jež program oživuje a dává mu zajímavější grafickou podobu.
Souvislejší upgrade se ale nekoná nikde. V současné době tedy Karel obecně upadá částečně v zapomnění, protože většina implementací byla vytvořena před dlouhou dobou a není k dispozici mnoho volně dostupných řešení pro moderní operační systémy, které by byly pro uživatele zajímavé a dostupné. Proto jsme se letos rozhodli, že investujeme více času a energie na oživení naší verze Karla.
Jak se ke Karlovi dostala vaše organizace?
KM: Parta technologických nadšenců se rozhodla v roce 2013 implementovat Karla na tablety, důvodem byly vzpomínky a sentiment. Časem se zjistilo, že je program stále validní a může mladým programátorům něco dát. Proto jeho další vývoj převzalo neziskové sdružení IHPCI.org, kde se někteří z původních iniciátorů angažují.
Kolik vás na Karlovi dělá?
KM: Aktuálně se dva členové spolku IHPCI.org zabývají komunikací s komunitou, PR, produktovým rozvojem a uživatelským testováním. K dispozici máme vývojářskou kapacitu několika spřátelených programátorů. Takže celkem tým asi pěti lidí.
Jak se Karel rozvíjí? Jsou to iterace původního kódu, refaktoring a podobně?
Ondřej Kotora (OK): V roce 2013 publikovala skupina kolem spolku IHPCI.org program v současném retro stylu. Puvodně je Karel napsán pro Android v Javě a pro iOS v Objective-C. V průběhu času proběhl jen debugging a technické upgrady.
Letos jsme začali s refaktoringem, odstraněním bugů a vylepšením UX. Nová verze je napsaná ve Flutteru v Dartu. Implementace do Flutteru probíhala tak, že se vzal původní kód a přepsal se do Dartu, což nikdy nejde jedna ku jedné, takže se některé původní části musely kompletně přepsat, aby to zapadlo do modelu, na jakém funguje Flutter.
KM: Před sebou máme spoustu nových funkcí k implementaci a zároveň shromažďujeme množství podnětů od uživatelů. Cílem je poskytovat ucelený začátečnický program s návody a lekcemi, které uživatele provedou základy programování a syntaxí, a to zábavnou formou.
Co lze v současné době od Karla očekávat?
KM: Appka je dostupná pro iOS a Android, určená je pro tablety. Karel operuje s pěti základními příkazy, které ovládají celou hru:
– move – robot Karel se posune o jeden blok vpřed ve směru, ve kterém je natočen;
– turnLeft – robot Karel se otočí o 90 stupňů vlevo;
– pickBeeper – robot Karel zvedne jeden bzučák na rohu, na kterém stojí, a vloží si jej do batohu;
– putBeeper – robot Karel vezme z batohu jeden bzučák a položí jej na místo, na kterém právě stojí;
– turnOff – robot Karel se vypne.
Také umí vyhodnocovat několik podmínek, které mu pomáhají získat informace o situaci na hrací ploše. Může testovat, zda je před ním či okolo něj volno a na kterou ze světových stran je natočen. Umí zjistit, jestli se na rohu, na kterém stojí, nachází bzučák a zda má nějaké bzučáky v batohu.
Když žáci a studenti zvládnou Karla, do jakých jazyků se jim poté nejlépe naskakuje?
KM: Jazyk Karel je dobrou vstupní branou k Javě, C++. Dále využívá podobných principů, konstrukcí a syntaxe jako jazyk Pascal.
U programovacích jazyků jde ale spíše o to, jak dotyčný zvládá logicky uvažovat, a hlavně, jestli má zápal se programování dál věnovat. Pak není problém se přesunout na jakýkoliv programovací jazyk. A o to jde u Karla především – vytvořit příjemný a plynulý start, aby programování svou složitostí začátečníky neodrazovalo, ale naopak zapálilo žáky v tom posouvat se dál.
Jak je u nás velká komunita kolem Karla? Vyučuje se například na vysokých školách a v zájmových kroužcích?
Aleksei Lukashevich (AL): Na dopravní fakultě ČVUT se učí v prvním ročníku předmět Algoritmizace a datové struktury. Cílem předmětu je naučit studenty, kteří většinou moc zkušenosti s programováním nemají, jak funguje počítač, procesor a co je algoritmus. Mimo jiné oblasti, například modelování algoritmu pomocí bloků pro pochopení příkazů a vazeb, se učí i Karel.
Tento software je mnohem lehčí pro pochopení než učení se nějakému programovacímu jazyku od nuly. Díky tomu, že nemá mnoho různých funkcí, ho lze jednoduše pochopit. Karel sám o sobě je zaměřen na seznámení se světem algoritmů a programování (psaní kódů) a studenti s ním získávají základy pro to, aby se v dalších semestrech naučili C++ nebo Python.
Je to první malý krok před učením se plnohodnotných programovacích jazyků. Často se stává, že složitost programování studenty odradí. Karel tak může pomoci žákům, studentům, a dokonce i dětem s tím, že algoritmizace pochopí a budou více ochotni se programování věnovat i dál.
Jak Karel dokáže obstát proti dnešním populárním projektům typu Scratch?
OK: Karel je přece jen starší záležitost, je omezený na hrací plochu a pár základních příkazů, které po ní robota posouvají. Scratch je drag & drop řešení, které není závislé na hrací ploše a posouvání robota po ní. Bylo by asi reálné implementovat podobnou věc jako Karla v rámci Scratche. Nemáme k tomu ale žádnou analýzu, podrobně jsme se tím nezabývali.
Co v rámci rozvoje Karla máte v plánu?
AL: Chceme udělat naši aplikaci co nejvíc atraktivní pro nové uživatele, kteří se s ní seznamují poprvé. Proto jsou naším cílem v tuto chvíli designové úpravy a vytvoření knihovny dalších možných funkcí a příkazů.
Velkým projektem je vytvoření wizardu – průvodce, který by nové uživatele provedl všemi funkcemi a možnostmi aplikace a ukázal, kde se lze podívat do hloubky. Nabídku návodů chceme rozšířit o užitečné informace ohledně toho, jak je algoritmizace Karla spojena s jinými programovacími jazyky. V podstatě chceme zájemcům říci to, o čem se spolu bavíme právě teď. Věříme, že tyto informace o uplatnění by zvýšily atraktivitu znalostí z Karla.
Chceme z Karla udělat nejen software, který s algoritmizaci a programováním seznamuje, ale i průvodce do světa programování a jednoduchým zdrojem informací. Do konce roku bychom rádi uvedli wizarda a tutoriály (vzorové scénáře s popisy) a vytvořili tak základ naši informační knihovny.
Jsme rádi za reakce od našich uživatelů a chceme i rozšířit jejich síť. V budoucnu plánujeme aplikaci přetvořit do online verze, vytvořit několik desítek různých úrovní, pracovat s vnitřní komunitou uživatelů a také se více globalizovat.