Scratch - plnohodnotný programovací jazyk nebo jen dětské puzzle? (5. část: projekt Panther)

15. 11. 2011
Doba čtení: 18 minut

Sdílet

V dnešní části seriálu o programovacích jazycích navržených pro výuku programování se budeme zabývat popisem projektu Panther. Jedná se o projekt, jenž je sice založený na Scratchi, ovšem hned v několika oblastech jeho možnosti rozšiřuje. Týká se to například možnosti práce se soubory, práce s barvami atd.

Obsah

1. Projekt Panther aneb další rozšíření projektu Scratch

2. Práce se soubory a daty dostupnými přes URL

3. Barvy jako nový datový typ

4. První demonstrační příklad: základy práce s barvami v prostoru RGB

5. Druhý demonstrační příklad: použití barvového prostoru HSB

6. Nové operátory přidané do projektu Panther

7. Bloky pro práci s datem a časem

8. CYOB aneb Code Your Own Block

9. Odkazy na Internetu

1. Projekt Panther aneb další rozšíření projektu Scratch

V předchozích dvou částech seriálu o programovacích jazycích navržených pro výuku programování jsme si popsali základní vlastnosti projektu BYOB, neboli plným názvem Build Your Own Block. Cílem tohoto projektu bylo rozšíření možností původního vývojového prostředí Scratch o nové vlastnosti. Především se jednalo o možnost tvorby vlastních příkazových bloků, díky nimž mohl být celý řešený problém rozdělen na jednodušší a snadněji řešitelné podproblémy. Díky možnosti tvorby nových příkazových bloků bylo navíc umožněno realizovat rekurzivní algoritmy, a to jak algoritmy s přímou rekurzí (kdy se v těle bloku X volal opět blok X), tak i algoritmy s rekurzí nepřímou (v těle bloku X se volá blok Y, v jehož těle se opět volá blok X).

Obrázek 1: Grafické uživatelské rozhraní projektu Panther je založeno na původním Scratchi, od nějž se liší jen v několika detailech (a samozřejmě přítomností většího množství příkazových bloků i skupin bloků).

Kromě toho se součástí projektu BYOB stal i prozatím méně známý projekt Elements nabízející „vizuální“ tvorbu programů přímo v programovacím jazyce Smalltalk. Ovšem projekt BYOB není jediným v současnosti existujícím rozšířením Scratche. Nezávisle na aplikaci BYOB totiž vznikl projekt se jménem Panther, který taktéž nabízí oproti Scratchi různé rozšiřující funkce. Jedná se především o nové příkazové bloky sloužící pro práci se soubory, dále pak o bloky pro práci s barvami. V původním Scratchi totiž barva nebyla plnohodnotným datovým typem.

Obrázek 2: Formulář s nicky všech autorů projektu Panther.

V projektu Panther je možné tvořit nové příkazové bloky, ale poněkud odlišným způsobem, než tomu je v aplikaci BYOB: v Pantheru se pro tvorbu nových bloků musí využívat jazyk Smalltalk, tudíž lze využít všechny již existující třídy a objekty. Na druhou stranu je však tvorba nových bloků (alespoň v současné verzi) komplikovanější, neboť nelze využít vizuálního návrháře, tak jako je tomu v projektu BYOB. Ve skutečnosti však možná někdy v budoucnu dojde ke spojení vlastností obou projektů, které se oba nachází v poměrně rané fázi vývoje (samotný Scratch vznikl před dvěma lety, BYOB a Panther zhruba před rokem).

Obrázek 3: Zkopírováním souboru locale/cs.po ze Scratche do adresáře locale projektu Panther lze dosáhnout alespoň částečného počeštění jeho uživatelského prostředí.

2. Práce se soubory a daty dostupnými přes URL

Již při popisu projektu Scratch v předchozích částech tohoto seriálu jsme si řekli, že tento projekt byl navržen především z toho důvodu, aby co nejnázornějším a nejjednoznačnějším způsobem zprostředkoval uživatelům základy programování (algoritmizace). Cílem tvůrců Scratche bylo vytvoření takového uživatelského rozhraní, které bude co nejjednodušší a nebude uživatele mást zbytečně velkým množstvím funkcí, které navíc za některých okolností mohou skončit s chybou. I z tohoto důvodu nenajdeme v původním Scratchi některé funkce, které by se mohly hodit v praktických programech, ale které nejsou nezbytně nutné pro výuku programování.

Obrázek 4: Nové příkazové bloky pro práci se soubory a daty dostupnými přes URL.

V první řadě se jedná o funkce určené pro práci se soubory. Ty nebyly v původním Scratchi implementovány kvůli možným problémům, které mohou při práci se soubory nastat. Soubory, s nimiž se pracuje, totiž nemusí existovat, nemusí být čitelné či zapisovatelné, soubor může být uzamknut jinou aplikací, může dojít k chybě při zápisu atd. atd. V neposlední řadě se při práci se soubory může některý důležitý soubor poškodit (i úmyslně, například spuštěním cizího programu). Tvůrci projektu Panther si jsou těchto skutečností samozřejmě vědomi. Z tohoto důvodu sice do svého projektu přidali nové bloky pro práci se soubory, ale dali uživatelům možnost operace se soubory zcela zakázat prostřednictvím dialogu zobrazeného při spuštění programu, který se soubory chce pracovat. V hlavním menu pak lze operace se soubory zcela zakázat pro všechny programy.

Obrázek 5: V hlavním menu projektu Panther je možné všechny vstupně/výstupní operace buď zcela zakázat, nebo je vždy povolit.

Projekt Panther je – jakožto moderní aplikace vytvořená v době všeobecného používání Internetu – vybaven i příkazovými bloky sloužícími pro získání obsahu souboru dosažitelného přes URL. Většinou se jedná o soubor umístěný na WWW serveru, k jehož obsahu se přistupuje pomocí protokolu HTTP, ovšem mohou se použít i další protokoly. To však není vše, protože kromě vcelku obyčejného přenosu dat přes HTTP (či jiný protokol) se může běžící Panther stát klientem či serverem ve vlastní „pantherovské“ síti (mesh). Programy v Pantheru si mohou v této síti posílat zprávy, popř. mohou na síti sdílet projekty.

Poznámka: pokud se snažíte projekt Panther rozjet v serverovém režimu a spojení se nedaří navázat, zkontrolujte si nastavení firewallu.

Obrázek 6: Dialog zobrazený po spuštění programu v Pantheru poté, co se tento program snaží přistoupit k souboru.

3. Barvy jako nový datový typ

V rámci projektu Panther došlo i k rozšíření původního typového systému Scratche. Zatímco ve Scratchi bylo možné pracovat pouze s číselnými (reálnými) proměnnými, řetězci a jednoduchými seznamy, lze v Pantheru podobným způsobem pracovat i s barvami. Tato možnost sice existovala již ve Scratchi, ale na mnohem jednodušší úrovni, protože v něm nebyla barva (z důvodů zmíněných v úvodních kapitolách) chápána jako plnohodnotný datový typ, což však komplikovalo či dokonce znemožňovalo tvorbu některých typů projektů.

Obrázek 7: Nové příkazové bloky používané při práci s datovým typem „barva“.

Připomeňme si, že v původním projektu Scratch existovalo pouze několik (konkrétně sedm) příkazových bloků umožňujících práci s barvami:

  1. Nastav barvu pera na [barva]
  2. Nastav barvu pera na [index barvy]
  3. Změň barvu pera o [offset]
  4. Nastav odstín pera na [index]
  5. Změň odstín pera o [offset]
  6. Dotýká se barvy [barva]?
  7. Barva [barva] je na barvě [barva]?

Obrázek 8: Smícháním žluté a červené barvy vznikne barva oranžová. Tuto základní operaci s barvami lze provést pomocí nového příkazového bloku.

Naproti tomu se v projektu Panther stala barva plnohodnotným datovým typem, což v prvé řadě znamená, že je možné vytvořit novou barvu, tj. relaci mezi jménem barvy a konkrétní barvou. Došlo dokonce k vytvoření samostatné kategorie bloků pro práci s barvami (pozadí těchto bloků je příznačně černé). Základ této kategorie tvoří bloky pro vytvoření nové barvy po zadání trojice barvových složek RGB (Red, Green, Blue). Podporován je taktéž barvový prostor HSB (Hue, Saturation, Brightness), jenž je pro nové uživatele snáze pochopitelný, než prostor RGB. Recipročně k blokům určeným pro tvorbu nové barvy z trojice číselných hodnot RGB či HSB existuje i šest bloků, které pro zadanou barvu vrací hodnotu zvolené barvové složky R, G, B, popř. odstín (H), sytost barvy (S) a světlost (B). Další bloky mohou být využity pro smíchání dvou barev, převod kódu barvy na řetězec atd. Pro některé aplikace je důležitý i blok vracející barvu zvoleného pixelu na hrací ploše.

Obrázek 9: Podobně jako lze vytvořit novou proměnnou či seznam, je možné vytvořit i novou barvu.

4. První demonstrační příklad: základy práce s barvami v prostoru RGB

Použití nového datového typu „barva“ si můžeme ukázat na jednoduchém demonstračním příkladu, který slouží pro vykreslení části barvové palety v barvovém prostoru RGB (Red, Green, Blue). Samotný program je poměrně jednoduchý – jeho ústřední částí je dvojice do sebe vložených programových smyček, v nichž se postupně provádí přesun kreslicího pera v oblasti o rozměrech 100×100 pixelů. Po přesunu pera se nastaví jeho barva (v horizontálním směru dochází ke změně červené složky barvy, ve směru vertikálním ke změně modré složky barvy) a pixel je následně vykreslen pomocí dvojice příkazů Pen down/Pen up.

Obrázek 10: Program, který ve čtverci o rozměrech 100×100 pixelů vykreslí část barvové palety RGB.

Důležitý je způsob nastavení odstínu, kterým se má pixel vykreslit, protože v projektu Panther se při specifikaci barvy v barvovém prostoru RGB každá barvová složka reprezentuje reálným číslem mezi nulou a jedničkou (nepoužívá se tedy rozsah 0 až 255, který je příliš orientován na technické parametry grafického subsystému počítačů).

Obrázek 11: Výsledek běhu programu, jehož kód je zobrazený na desátém obrázku.

Tento program je samozřejmě možné různým způsobem upravovat. Nejdůležitější je vycentrování vykresleného obrazce. Připomeňme si, že pracovní plocha ScratchePantheru má rozměry 480×360 pixelů a její střed leží ve středu souřadné soustavy [0, 0]. To znamená, že x-ová souřadnice všech bodů na ploše leží v rozsahu –240 až 240 a y-ová souřadnice leží v rozsahu –180 až 180. Vycentrování obrazce se tedy provede posunem ve směru záporné osy x i y.

Obrázek 12: Souřadný systém používaný jak Scratchem, tak i Pantherem.

Další možnou úpravou může být zvětšení stopy vykreslované perem a současně i zvětšení vzdálenosti mezi jednotlivými stopami (to vede k rychlejšímu vykreslení obrazce, protože se sami můžete přesvědčit, že kreslení pixel po pixelu je v Pantheru velmi pomalé). Velikost stopy se zadává jediným číselným parametrem (není tedy možné měnit tvar stopy) a při velikosti různé od jedničky si můžeme všimnout, že stopa je kruhová, což nám však v našem případě nemusí vadit, protože se stopy budou (a mohou) částečně překrývat.

Obrázek 13: Demonstrační příklad upravený tak, aby využíval větší velikost stopy a tím pádem i větší vzdálenost mezi jednotlivými stopami (taktéž se změnila konstanta použitá při výpočtu barvy).

Obrázek 14: Výsledek běhu programu, jehož kód je zobrazený na třináctém obrázku.

5. Druhý demonstrační příklad: použití barvového prostoru HSB

Jak jsme si již řekli ve třetí kapitole, je možné v projektu Panther namísto barvového prostoru RGB používat i barvový prostor HSB. Tato zkratka byla získána z označení trojice hodnot, jimiž je v tomto barvovém prostoru reprezentována každá barva. Jedná se v prvé řadě o odstín (H-Hue) reprezentovaný hodnotou ležící v rozsahu 0 až 360°. Odstín je zadán ve stupních z toho důvodu, že barvy jsou v tomto barvovém prostoru uspořádány do kruhu, podobně jako v barvovém prostoru HSV (Hue, Saturation, Value), který je použit mj. i při výběru barvy pomocí standardního GTK dialogu. Druhou složkou barvy je sytost (S-Saturation), což je hodnota ležící v rozsahu od nuly do jedné. Pokud je sytost nastavena na nulu, bude se jednat o šedý odstín ležící na škále od černé do bílé. Konečně třetí složkou je světlost či jas (B-Brightness), což je taktéž hodnota ležící v rozsahu od nuly do jedné.

Obrázek 15: Demonstrační příklad upravený takovým způsobem, aby se namísto nastavení barvy v prostoru RGB použila barva definovaná v barvovém prostoru HSB.

S touto znalostí již můžeme přikročit k jednoduché úpravě programu pro použití barvového prostoru HSB namísto prostoru RGB. První úprava spočívá ve vzorci pro výpočet odstínu; tento vzorec musí být změněn tak, aby vracel hodnoty od nuly do přibližně 360°. Další (nepovinná) úprava spočívá ve výpočtu sytosti, která je odvozena od součtu horizontální a vertikální pozice pera na pracovní ploše (pokud by byla sytost nulová, zobrazily by se jen stupně šedi).

Obrázek 16: Výsledek běhu programu, jehož kód je zobrazený na patnáctém obrázku obrázku.

6. Nové operátory přidané do projektu Panther

V projektu Panther se kromě nové sekce bloků určených pro práci se soubory a bloků pro práci s barvami objevily nové příkazové bloky taktéž v „zelené“ sekci operátorů. Jedná se především o dvojici bloků s podmínkou. Tyto dva bloky, které se od sebe liší pouze typem druhého a třetího operandu, nahrazují ternární podmínkový operátor ?:, jenž se používá například v programovacích jazycích C, C++ či Java. Tyto bloky akceptují trojici operandů, přičemž první operand se musí vyhodnotit na pravdivostní hodnotu true nebo false. V závislosti na vyhodnocené hodnotě se potom vyhodnotí (či vrátí) operand druhý popř. operand tře­tí.

Obrázek 17: Nová dvojice „podmínkových“ operátorů v Pantheru.

V případě, že se první operand vyhodnotí na pravdu (true), je vrácena hodnota druhého operandu, ovšem v případě, že se první operand vyhodnotí naopak na nepravdu (false), je vrácena hodnota operandu třetího. Povšimněte si, že jeden z těchto bloků má zkosené rohy, což znamená, že se tento blok může použít všude tam, kde je očekávána nějaká pravdivostní hodnota, zatímco druhý blok má rohy zakulacené, takže ho lze použít namísto číselné hodnoty.

Obrázek 18: Panel s nabídkou operátorů.

Tyto dva nové bloky mohou vést ke zjednodušení programů, především v těch případech, kdy by se musely použít přiřazovací příkazy uvnitř řídicího bloku typu if-then, popř. bloku if-then-else. Ostatně si můžete sami vyzkoušet změnit kód z devatenáctého obrázku tak, aby byl použit „žlutý“ rozhodovací příkaz s podmínkou.

Obrázek 19: Použití nových „podmínkových“ operátorů společně s bloky sloužícími pro práci s barvami.

7. Bloky pro práci s datem a časem

Z dalších nových bloků, které jsou uživatelům nově nabízeny v projektu Panther, je zajímavý a pro některé aplikace i velmi užitečný blok sloužící pro zjištění aktuálního data a času, který je umístěný na panelu Vnímání/Sensing. Podobně jako v případě „univerzálního“ bloku sloužícího pro zavolání libovolné (implementované) matematické funkce (viz též panel Operátory), je i u bloku pro vrácení data či času možné s využitím rozbalovacího seznamu určit, jaká hodnota se má při jeho zavolání vrátit. Vybrat lze následující typy návratových hodnot:

  1. Čas vrácený ve formátu řetězce „hh:mm:ss am/pm“
  2. Hodina vrácená jako číslo
  3. Minuta vrácená jako číslo
  4. Sekunda vrácená jako číslo
  5. Datum vrácený ve formátu řetězce „DD MMMM YYYY“
  6. Pořadové číslo dne v měsíci (1–31)
  7. Pořadové číslo dne v roce (1–366)
  8. Měsíc vrácený jako číslo (1–12)
  9. Měsíc vrácený ve formě jména (anglicky, prozatím není lokalizováno)
  10. Rok vrácený jako číslo
  11. Den v týdnu vrácený jako číslo
  12. Den v týdnu vrácený ve formě jména (anglicky, prozatím není lokalizováno)

Obrázek 20: Zjištění aktuální hodiny.

V případě, že je nutné datum či čas zformátovat odlišným způsobem, je nutné pro tento účel použít řetězcové operace, popř. seznamy obsahující přeložená jména měsíců či dnů v týdnu. Mimochodem – při pohledu na zdrojový kód tohoto bloku se můžete přesvědčit, že jména dnů v týdnu jsou ve zdrojovém kódu „zadrátována“, takže pouhá změna lokalizačních souborů v tomto případě nepomůže. Zadrátování se kupodivu týká převodu jména dne na jeho pořadové číslo a nikoli převodu opačného.

Obrázek 21: Zjištění aktuálního měsíce.

8. CYOB aneb Code Your Own Block

Poslední vlastností projektu Panther o níž se musíme zmínit, je podpora pro vytvoření nového bloku, popř. pro editaci již existujícího bloku. Zatímco v projektu BYOB se nové bloky vytvářely úplně stejným způsobem, jako vlastní programy, tj. s využitím přesunů a skládání bloků, je v projektu Panther blok tvořen přímo v programovacím jazyce Smalltalk. To má samozřejmě své přednosti i zápory. Mezi přednosti patří možnost využít jakoukoli existující třídu, popř. zavolat libovolnou metodu, což elegantně odstraňuje největší nedostatek Scratche – jeho uzavření vůči okolnímu systému. Připomeňme si, že Scratch a tím pádem i Panther jsou vytvořeny ve Squeaku, což je jedna z implementací Smalltalku s velmi rozsáhlou hierarchií tříd, které je všechny možné v Pantheru použít. Nevýhodou tohoto přístupu je vyšší pracnost tvorby nových bloků, která uživatele vlastně nutí naučit se hned dva programovací jazyky.

Obrázek 22: Kód metody (příkazového bloku) pro převod barvy na řetězec.

Do budoucna tedy pravděpodobně uvidíme sloučení postupů použitých v BYOBu (vizuální tvorba bloků) a Pantheru, možná dokonce i sjednocení se systémem Elements (což by bylo pravděpodobně nejrozumnější). Jak se vlastně blok vytváří a edituje? Pro vytvoření bloku stačí použít stejný příkaz, jako v projektu BYOB, ovšem ve formuláři se tělo bloku musí ručně zapsat. Výhodnější je ponechat tělo bloku prázdné, přesunout blok do prostřední části GUI (skript) a přes kontextové menu zvolit příkaz Show Code. Otevře se okno, které jsme již viděli při popisu Sqeaku (Workspace). Do tohoto okna lze psát programový kód a používat běžné sqeakovské příkazy typu do it, print it, inspect it a samozřejmě taktéž accept. Můžete si zde vyzkoušet příklady, které jsme si ukazovali při popisu Squeaku, například jednoduché zavolání metody factorial pro objekt typu „číslo“ (konkrétně Object→Magnitu­de→Number→Inte­ger):

ict ve školství 24

42 factorial (print it)

Obrázek 23: Kód metody (příkazového bloku) pro přístup k obsahu souboru.

Podobným způsobem lze prozkoumat zdrojové kódy již existujících bloků – blok stačí přesunout do prostřední části GUI (skripty) a z kontextového menu zvolit příkaz Edit block. Po volbě tohoto příkazu se zobrazí System Browser, s nímž jsme se již taktéž při popisu Squeaku setkali. Opět je možné si prohlédnout zdrojový kód zvolené metody, spustit tento kód, spustit ho se zobrazením návratové hodnoty atd.

9. Odkazy na Internetu

  1. Panther – home page
    http://panther­programming.we­ebly.com/
  2. Panther – downloads
    http://panther­programming.we­ebly.com/downlo­ad-panther.html
  3. Panther (Scratch Modification) – wiki
    http://wiki.scrat­ch.mit.edu/wi­ki/Panther_(Scrat­ch_Modificati­on)
  4. Scratch Programming Wiki – Panther
    http://scratch­.wikia.com/wi­ki/Panther
  5. Scratch: oficiální stránka projektu
    http://scratch­.mit.edu/
  6. Scratch: galerie projektů vytvořených ve Scratchi
    http://scratch­.mit.edu/galle­ries/browse/ne­west
  7. Scratch: nápověda
    file:///usr/sha­re/scratch/Hel­p/en/index.html
  8. Scratch: obrazovky nápovědy
    file:///usr/sha­re/scratch/Hel­p/en/allscreen­s.html
  9. Scratch (Wikipedie CZ)
    http://cs.wiki­pedia.org/wiki/Scrat­ch
  10. Scratch (programming language)
    http://en.wiki­pedia.org/wiki/Scrat­ch_(programmin­g_language)
  11. Mitchel Resnick (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Mit­chel_Resnick
  12. Domácí stránka Mitchela Resnicka
    http://web.me­dia.mit.edu/~mres/
  13. BASIC-256 – BASIC256 – An easy to use BASIC language and IDE
    http://www.ba­sic256.org/
  14. PythonTurtle
    http://python­turtle.org/
  15. Turtle graphics for Tk
    http://docs.pyt­hon.org/libra­ry/turtle.html
  16. Scratch Lowers Resistance to Programming
    http://www.wi­red.com/gadge­tlab/2009/03/scrat­ch-lowers/
  17. Stopařův průvodce jedním převážně neškodným programovacím jazykem
    http://www.squ­eak.cz/
  18. CamelCase
    http://en.wiki­pedia.org/wiki/Ca­mel_case
  19. Smalltalk tutorial chapter 5 – Variables
    http://www.tu­torials4u.com/sma­lltalk/smalltalk-tutorial-05.htm
  20. History around Pascal Casing and Camel Casing
    http://blogs.msdn­.com/b/brada/ar­chive/2004/02/0­3/67024.aspx
  21. Xerox Alto
    http://en.wiki­pedia.org/wiki/Xe­rox_Alto
  22. WIMP (computing)
    http://en.wiki­pedia.org/wiki/WIM­P_(computing)
  23. Graphical user interface
    http://en.wiki­pedia.org/wiki/GUI
  24. Xerox Star
    http://en.wiki­pedia.org/wiki/Xe­rox_Star
  25. The Xerox Star 8010 „Dandelion“
    http://www.di­gibarn.com/co­llections/sys­tems/xerox-8010/index.html
  26. Fibonacci number
    http://en.wiki­pedia.org/wiki/Fi­bonacci_number
  27. Squeak home page
    http://www.squ­eak.org/
  28. XO: The Children's Machine
    http://wiki.lap­top.org/go/The_Chil­dren's_Machine
  29. Squeak na Wikipedii EN
    http://en.wiki­pedia.org/wiki/Squ­eak
  30. Squeak na Wikipedii CZ
    http://cs.wiki­pedia.org/wiki/Squ­eak
  31. Squeak by Example
    http://squeak­byexample.org/
  32. Squeak Land
    http://www.squ­eakland.org/
  33. SqueakNotes
    http://squeak­.zwiki.org/Squ­eakNotes
  34. Squeak FAQ
    http://wiki.squ­eak.org/squeak/471
  35. Learning Squeak
    http://c2.com/cgi/wi­ki?LearningSqu­eak
  36. Lazarus (Software)
    http://en.wiki­pedia.org/wiki/La­zarus_%28softwa­re%29
  37. FreePascal
    http://www.fre­epascal.org/
  38. „Why I Love Python“ slides
    http://www.min­dviewinc.com/dow­nloads/pub/ec­kel/LovePython­.zip
  39. „Why I love Python“ (presentation)
    http://www.sli­deshare.net/di­dip/why-i-love-python
  40. První jazyk: Python
    http://macek.san­dbox.cz/texty/prvni-jazyk-python/
  41. Programovací jazyk Python
    http://www.py­.cz/FrontPage
  42. Python – Wikipedia CS
    http://cs.wiki­pedia.org/wiki/Pyt­hon
  43. IPython
    http://en.wiki­pedia.org/wiki/I­python
  44. IPython: an interactive computing environment
    http://ipython­.scipy.org/mo­in/
  45. Category:Python
    http://rosetta­code.org/wiki/Ca­tegory:Python
  46. Educational programming language
    http://en.wiki­pedia.org/wiki/E­ducational_pro­gramming_langu­age
  47. Seriál Letní škola programovacího jazyka Logo
    http://www.ro­ot.cz/serialy/let­ni-skola-programovaciho-jazyka-logo/
  48. Logo Tree Project:
    http://www.eli­ca.net/downlo­ad/papers/Logo­TreeProject.pdf
  49. Language Poster (O'Reilly):
    http://www.ore­illy.com/news/grap­hics/prog_lan­g_poster.pdf
  50. Informace o Comenius Logu:
    http://www.com­logo.input.sk/in­dex.html
  51. Stránka nabízející stažení Comenius Loga:
    http://www.com­logo.input.sk/nas­tiahnutie.html
  52. Seminární práce o Comenius Logu:
    http://nwit.ped­f.cuni.cz/rotal9ap/lo­go/
  53. Informace o LEGO/Logu:
    http://educati­on.otago.ac.nz/nzlnet/L­ogo/legologo.html
  54. Informace o systému Elica:
    http://www.eli­ca.net/site/in­dex.html
  55. Informace o systému NetLogo:
    http://ccl.nor­thwestern.edu/ne­tlogo/
  56. Stažení NetLoga:
    http://ccl.nor­thwestern.edu/ne­tlogo/download­.shtml
  57. Uživatelský manuál NetLoga ve formátu PDF:
    http://ccl.nor­thwestern.edu/ne­tlogo/docs/Net­Logo%20User%20Ma­nual.pdf
  58. NetLogo FAQ:
    http://ccl.nor­thwestern.edu/ne­tlogo/docs/faq­.html
  59. Domácí stránka Daniela Azumy (autora implementace Turtle Tracks):
    http://alumnus­.caltech.edu/~da­zuma/home/
  60. Informace o aUCBLogu:
    http://www.phy­sik.uni-augsburg.de/~miche­ler/
  61. Domácí stránka MSW Loga:
    http://www.sof­tronix.com/lo­go.html
  62. Karel online
    http://karel.ol­dium.net/
  63. EDU-SIG: Python in Education
    http://www.pyt­hon.org/commu­nity/sigs/curren­t/edu-sig/
  64. Guido van Robot
    http://en.wiki­pedia.org/wiki/Gu­ido_van_Robot
  65. The Guido van Robot Programming Language
    http://gvr.sou­rceforge.net/
  66. An Introduction to Programming with Karel J. Robot
    http://blog.thin­goid.com/2003/10­/karel-intro/
  67. Teaching a young robot new tricks
    http://blog.thin­goid.com/2003/11­/karel-new-tricks/
  68. Karel and Company – More Robots
    http://blog.thin­goid.com/2003/12­/karel-and-company/
  69. Karel heads for the stars
    http://blog.thin­goid.com/2004/03­/karel-star/
  70. Karel programming language documentation
    http://mormegil­.wz.cz/prog/ka­rel/prog_doc.htm
  71. Karel J. Robot
    http://www.ma­inlandregional­.net/dklipp/Ho­nors%20Computer%20Sci­ence%20Java.htm
  72. Karel (programming language)
    http://en.wiki­pedia.org/wiki/Ka­rel_(programmin­g_language)
  73. Richard E. Pattis
    http://en.wiki­pedia.org/wiki/Richar­d_E._Pattis
  74. XKarel home page
    http://xkarel­.sourceforge.net/en­g/
  75. XKarel – screenshoty oken
    http://xkarel­.sourceforge.net/en­g/program.php#Ok­na
  76. Greenfoot
    http://www.gre­enfoot.org/abou­t/whatis.html
  77. Computer programming – Educational programming languages
    http://www.kid­slike.info/com­puter_program­ming_educatio­nal_programmin­g_languages
  78. Making Great Programmers: Why BASIC is Still Relevant
    http://kidbasic­.sourceforge.net/en/why­.html
  79. Gambas Wiki
    http://en.wiki­books.org/wiki/Gam­bas
  80. Free tool offers ‚easy‘ coding
    http://news.bbc­.co.uk/2/hi/tec­hnology/6647011­.stm
  81. Základy želví grafiky
    http://www.ro­ot.cz/clanky/za­klady-zelvi-grafiky/
  82. Bill Kendrick's Web Turtle
    http://www.so­nic.net/~nbs/web­turtle/

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.