Obsah
1. Programovací jazyk Pascal – výuka návrhu datových struktur a algoritmizace
2. Využití Pascalu v minulosti
3. Programovací jazyk Pascal v současnosti
4. Python aneb síla dynamicky typovaného programovacího jazyka
5. Vývojové prostředí pro Python
6. Výukové nástroje kombinující programovací jazyk a interaktivní grafické uživatelské rozhraní
1. Programovací jazyk Pascal – výuka návrhu datových struktur a algoritmizace
Při popisu programovacích jazyků, které byly navrženy s ohledem na to, aby byly snadno použitelné při výuce programování, samozřejmě nesmíme zapomenout ani na programovací jazyk Pascal, který byl po poměrně dlouhou dobu používán jak ve školství, tak i, což je pro „výukový jazyk“ poněkud netypické, pro tvorbu komerčních aplikací. Jedná se o jazyk, který byl navržen již v průběhu let 1969 a 1969 Niklausem Wirthem s ohledem na to, aby se v něm mohly jednoduše psát programy splňující zásady strukturovaného programování (Wirth ještě před vytvořením Pascalu napsal vlastní verzi programovacího jazyka ALGOL nazvanou ALGOL W, kterým je Pascal inspirován). S ohledem na podporu strukturovaného programování obsahuje Pascal oba typy (nepočítaných) programových smyček, tj. smyčku s podmínkou vyhodnocovanou na začátku (WHILE-END) i smyčku s podmínkou uváděnou a vyhodnocovanou na konci (REPEAT-UNTIL). Kromě těchto dvou typů smyček obsahuje Pascal i počítanou smyčku FOR, která je zde ovšem, na rozdíl od mnoha dalších (Algolských) programovacích jazyků, omezena na použití celočíselných proměnných vystupujících v roli počitadla smyčky.

Obrázek 1: Historická první verze vývojového prostředí Delphi 1.0 běžícího ve Windows 3.11.
Další vlastností Pascalu, jež vychází ze zásad strukturovaného programování, je podpora pro tvorbu uživatelských procedur a funkcí (ty byly v původním jazyku poměrně striktně oddělené, na rozdíl od céčka, C++ či Javy), dokonce bylo možné tvořit procedury a funkce uvnitř jiných procedur a funkcí, což například umožňovalo lépe program rozdělit na vzájemně oddělené a izolované části. Pravděpodobně nejzajímavější vlastností Pascalu jsou však jeho vestavěné datové typy (například typ množina, který bylo možné využít mnoha způsoby) a současně i možnost tvorby vlastních datových typů. Z těchto důvodů, ke kterým ještě můžeme přidat možnost jednoprůchodového (a tedy i velmi rychlého) překladu Pascalovských programů do strojového kódu, se programovací jazyk Pascal vyučoval (a dodnes vyučuje) jak na středních školách, tak i na některých školách vysokých jako první programovací jazyk, i když mnohé školy postupně přechází na některé jiné programovací jazyky, například na Javu nebo Python. Jedním z důvodů přechodu na jiný programovací jazyk je i to, že standardní Pascal nepodporuje OOP, i když při použití Delphi či FreePascalu je díky rozšíření jazyka OOP plně podporováno.

Obrázek 2: Grafické uživatelské rozhraní projektu Lazarus, který se snaží napodobit Delphi. Tento projekt lze používat jak na MS Windows, tak i na Linuxu.
2. Využití Pascalu v minulosti
Překladače programovacího jazyka Pascal se začaly poměrně masivně rozšiřovat na různé typy počítačů již během první poloviny sedmdesátých let minulého století. Jednalo se většinou o implementace pro sálové počítače a minipočítače. Později, konkrétně v osmdesátých letech minulého století, vznikly překladače Pascalu pro většinu domácích osmibitových mikropočítačů. Pravděpodobně nejznámějším z těchto překladačů byl Turbo Pascal určený původně pro osmibitové mikropočítače s operačním systémem CP/M. V tuzemských podmínkách byly překladače tohoto programovacího jazyka dostupné například na počítačích JSEP (Jednotný systém elektronických počítačů) používaných na některých vysokých školách, dále na počítačích ADT a taktéž na prakticky všech československých osmibitových mikropočítačích, především na PMD-85 a taktéž na IQ-151, kde mohl být editor a překladač Pascalu použit v rámci operačního systému AMOS.

Obrázek 3: Hlavní menu editoru a překladače programovacího jazyka PASCAL na československém osmibitovém mikropočítači PMD-85.
Později byl Pascal implementován firmou Borland na osobních počítačích PC a právě zde se dočkal pravděpodobně svého největšího rozšíření. Produkty Turbo Pascal a Borland Pascal byly na těchto počítačích oblíbené zejména z toho důvodu, že obsahovaly integrované vývojové prostředí s editorem, překladačem i debuggerem a v pozdějších verzích i s integrovanou kontextovou nápovědou. Překlad byl navíc tak rychlý (především při překladu pouze do operační paměti, nikoli při zápisu výsledného spustitelného .EXE souboru na disk), že se Turbo Pascal dal používat prakticky stejným způsobem jako interpretované programovací jazyky, zejména v té době stále oblíbený a rozšířený Basic. Na tomto místě je možná vhodné zmínit historku o tom, jak Bill Gates osobně velmi nelibě nesl, že Turbo Pascal má tak rychlý překladač, protože Microsoft nebyl schopný v té době přijít s produktem, který by byl podobně rychlý a současně nenáročný na systémové prostředky jako Turbo Pascal. Gatesova frustrace patrně vycházela i z toho, že sám začínal jako vývojář programovacích jazyků (MBasic, AppleSoft Basic) určených původně pro osmibitové mikropočítače.

Obrázek 4: Hlavní menu vývojového prostředí Turbo Pascalu 1.0.
Zajímavá fakta o Turbo Pascalu 1.0:
- Byl provozovatelný na počítačích s mikroprocesorem Intel 8086 (DOS) nebo Zilog Z-80 (CP/M)
- Vyžadoval pouze 64 kB paměti
- Dodáván na disketě, na níž bylo obsazeno pouze 130 kB
- Disketa obsahovala pouze deset souborů, viz následující tabulka:
Soubor | Význam |
---|---|
TURBO.COM | compiler and editor |
TURBOMSG.OVR | error messages file |
TINST.COM | development environment installation program |
TINSTMSG.OVR | message file for TINST program |
TLIST.COM | program lister |
ERROR.DOC | addendum to the Turbo Reference Manual |
CALC.PAS | MicroCalc (spread sheet demo program) |
CALCMAIN.PAS | Root demo program demonstrating include file usage |
CALC.HLP | On-line manual for MicroCalc |
CALCDEMO.MCS | Example spread sheet definition |

Obrázek 5: Disketa určená pro počítače IBM PC popř. pro jejich klony, která obsahuje Turbo Pascal verze 1.0.
3. Programovací jazyk Pascal v současnosti
V současnosti lze pro výuku programování s využitím Pascalu použít buď některou ze starších verzí Turbo Pascalu či Borland Pascalu (například na některých tuzemských školách se dodnes zachovaly učebny se staršími počítači s nainstalovaným MS-DOSem a právě některým vývojovým prostředím firmy Borland, což například z ekonomického hlediska, ale i kvůli snadné administraci nemusí být úplně špatné řešení), nebo lze použít vývojový nástroj Delphi firmy Embarcadero Technologies (původně Borland), popř. jako ekonomicky výhodnější řešení volně dostupné integrované vývojové prostředí Lazarus, které pro překlad využívá FreePascal (samotný FreePascal je totiž tvořen pouze překladačem, takže se pro výuku moc nehodí). Integrované vývojové prostředí Lazarus lze využít na platformě MS Windows, Linux i Mac OS X, přičemž vytvářené programy jsou, samozřejmě ve zdrojové formě, mezi těmito platformami přenositelné.
Odkazy na stránky týkající se prostředí Lazarus:
- Lazarus (Home page)
http://www.lazarus.freepascal.org/ - Lazarus FAQ
http://wiki.lazarus.freepascal.org/Lazarus_Faq - Lazarus (Software)
http://en.wikipedia.org/wiki/Lazarus_%28software%29 - FreePascal
http://www.freepascal.org/
4. Python aneb síla dynamicky typovaného programovacího jazyka
Dalším programovacím jazykem, na který nemůžeme v tomto článku zapomenout, je Python. Nejedná se sice o programovací jazyk specializovaný na výuku programování (toto zaměření měl spíše další jazyk vytvořený Guido van Rossumem nazvaný ABC), ovšem díky některým svým vlastnostem začal Python postupně pronikat i do školních učeben a laboratoří. Jednou z významných vlastností Pythonu je jeho důraz na minimalistickou syntaxi (malý počet klíčových slov), takže první programy je možné začít psát již po několika desítkách minut studia. To je velmi důležité především z toho důvodu, aby se předmět typu „výuka programování“ nakonec nezvrhl pouze ve vysvětlování syntaxe a sémantiky některého programovacího jazyka, což se často stane například při pokusu o nasazení C++ či Java (ale v minulosti i Pascalu, který je v některých ohledech značně rigidní) jakožto prvního programovacího jazyka, se kterým se studenti mají setkat.

Obrázek 6: Jednou z pomůcek programátora v Pythonu je IPython, což je interaktivní shell, v němž je možné editovat, spouštět i ladit Pythonovské programy. IPython může nahradit specializovaná vývojová prostředí, navíc je spouštěn přímo v textové konzoli, takže je s jeho pomocí možné ladit i skripty umístěné na jiném počítači (připojení přes SSH atd.).
Obliba Pythonu při výuce spočívá i v tom, že podporuje (ale současně nevyžaduje!) objektově orientovaný přístup v programování. V praxi se například mohou studenti nejdříve seznámit se základními konstrukcemi používanými při strukturovaném programování (tj. s podmínkami, programovými smyčkami, uživatelskými funkcemi) a teprve po zvládnutí základních technik se mohou začít věnovat objektově orientovanému návrhu a objektově orientovanému programování. Další vlastností Pythonu, které zjednodušuje programování jak začátečníkům, tak i profesionálům, je dynamické typování, což znamená, že se kontrola typů provádí až v době běhu programu a nikoli při jeho překladu (což ostatně mnohdy není, například i kvůli použití polymorfismu, možné ani ve staticky typovaných jazycích). Díky použití bílých znaků, tj. mezer a tabulátorů, se navíc studenti musí od začátku naučit korektně odsazovat jednotlivé bloky programového kódu (tato vlastnost Pythonu pravděpodobně vzbuzuje nejvíce emocí jak na straně jejích zastánců, tak i odpůrců).

Obrázek 7: Grafické uživatelské prostředí IDLE s otevřeným programem, který je možné přímo z tohoto prostředí spouštět či ladit. IDLE je napsáno v samotném Pythonu, přičemž využívá knihovnu Tk volanou přes wrapper Tkinter.
Následuje výpis jednoduchého programu napsaného v jazyce Python, v němž je pro kreslení takzvané „dračí křivky“ využit balíček turtle, tj. želví grafika převzatá z minule zmíněného programovacího jazyka Logo:
from turtle import right, left, forward, speed, exitonclick, hideturtle def dragon(level=4, size=200, zig=right, zag=left): if level <= 0: forward(size) return size /= 1.41421 zig(45) dragon(level-1, size, right, left) zag(90) dragon(level-1, size, left, right) zig(45) speed(0) hideturtle() dragon(6) exitonclick() # click to exit

Obrázek 8: Trojrozměrná varianta dračí křivky.
5. Vývojové prostředí pro Python
Při využití programovacího jazyka Python ve výuce je samozřejmě možné mít k dispozici vhodné vývojové prostředí, protože samotný Python sice obsahuje možnost spuštění interaktivní konzole, ovšem ta uživatelům nabízí pouze základní možnosti editace (řádkový editor s historií zapsaných řádků), ale například neobsahuje žádnou podporu pro barevné zvýraznění syntaxe či automatického doplňování názvů objektů (funkcí, proměnných). Jednou z mnoha možností je použití IPythonu, což je interaktivní shell, který uživatelům nabízí vylepšené (textové) uživatelské rozhraní, v němž se například zvýrazňuje syntaxe jednotlivých jazykových prvků, funguje doplňování názvů funkcí či proměnných, pro zápis delších částí kódu lze volat vybraný textový editor atd. I přes zdánlivou jednoduchost se IPython ukazuje jako velmi výkonný nástroj, který dokonce může být při výuce vhodnější než vývojová prostředí s grafickým uživatelským rozhraním, ve kterých se začínající programátor může poměrně snadno „ztratit“.

Obrázek 9: Vývojové prostředí Eric s otevřeným zdrojovým textem psaným v Pythonu. Ve spodní části okna vývojového prostředí se nachází interaktivní konzole Pythonu, v níž je možné jak vyhodnocovat jednotlivé výrazy, tak i díky reflexi zkoumat strukturu jednotlivých systémových i uživatelských objektů.
Z vývojových prostředí využívajících grafické uživatelské rozhraní je možné jmenovat například poměrně jednoduché a současně i přehledné IDLE používající pro zobrazení oken i ovládacích prvků knihovnu Tk volanou přes wrapper Tkinter, nebo mnohem rozsáhlejší integrované vývojové prostředí Eric, které je naopak implementované s využitím knihoven PyQt a Qt. Pokud by však ani Eric nenabízel všechny potřebné funkce (což je v případě výuky základů programování spíše nepravděpodobné), jsou k dispozici i nadstavby nad některými vývojovými prostředími určenými původně pro vývoj v Javě. Jedná se o NetBeans IDE a především PyDev, což je nadstavba nad Eclipse. Všechna zmíněná vývojová prostředí nabízí svým uživatelům možnost doplňování jmen objektů, funkcí i proměnných, zvýraznění syntaxe v integrovaném editoru, kontextovou nápovědu a samozřejmě podporují i ladění programů.

Obrázek 10: Asistent nabízející doplnění názvu objektu, který je v daném kontextu viditelný a který odpovídá uživatelem zapsanému prefixu ve vývojovém prostředí PyDev.
Seznam dalších vývojových prostředí vhodných pro programování v Pythonu je možné nalézt na stránce http://en.wikipedia.org/wiki/List_of_integrated_development_environments_for_Python#Python.

Obrázek 11: Asistent nabízející doplnění názvu metody a/nebo atributu objektu ve vývojovém prostředí PyDev.
6. Výukové nástroje kombinující programovací jazyk a interaktivní grafické uživatelské rozhraní
Zatímco v předchozích čtyřech kapitolách jsme se zabývali programovacími jazyky, pro jejichž provozování v tom nejjednodušším případě postačuje pouze textový terminál (či v minulosti děrovačka děrných štítků a tiskárna připojená k počítači s překladačem Pascalu, jak jistě mohou doložit starší absolventi VUT v Brně či dalších vysokých škol), v následujících kapitolách se zaměříme především na ty projekty, v nichž má vedle vlastního programovacího jazyka nezastupitelnou úlohu i interaktivní a mnohdy velmi propracované grafické uživatelské rozhraní nabízející začínajícím programátorům buď klasickou dvourozměrnou grafiku (vektorovou, rastrovou, orientovanou na jednotlivé grafické objekty) nebo v některých případech i možnost práce v trojrozměrném prostoru. Jedná se o například o projekty NetLogo (ovšem s původním Logem má tento projekt již společného jen velmi málo), Squeak (založený na Smalltalku) či Scratch a Alice, o nichž se zmíníme (a to poměrně podrobně) v následujících částech tohoto seriálu.

Obrázek 12: Ukázka grafického uživatelského rozhraní projektu Squeak.
Prvopočátky využití počítačové grafiky (nejenom) při výuce programování se sice datují již do druhé poloviny šedesátých let minulého století (viz minule popsaný vznik programovacího jazyka Logo), ovšem skutečné interaktivní grafické uživatelské rozhraní (kde je možné „programovat“ mnohdy i bez nutnosti zápisu zdrojového kódu) se začalo v této oblasti ve větší míře prosazovat především v posledních deseti letech – nejednalo se ani tak o technické problémy, které by znemožňovaly implementaci plnohodnotného GUI na starších počítačích (příkladem může být například nenáročný český Baltazar nebo i Squeak, jenž je možné spustit i na průměrně výkonném PDA), ale spíše o změněný pohled na to, jakým způsobem by se mělo programování vyučovat – především na základních školách samozřejmě co nejzáživnějším způsobem, nejlépe tak, že si děti ani neuvědomí, že se právě učí programovat :-)

Obrázek 13: Grafické uživatelské rozhraní projektu NetLogo spuštěného na počítači s Mac OS X.
7. NetLogo
Projekt nazvaný NetLogo patří mezi zajímavé moderní implementace programovacího jazyka Logo, o němž jsme se již zmiňovali v předchozí části tohoto seriálu. NetLogo je vyvíjeno v programovacím jazyku Java, čímž je do značné míry zaručena nezávislost na použité platformě. V současnosti jsou oficiálně podporovány operační systémy Linux (od jádra 2.4), Microsoft Windows 98 a vyšší i Mac OS X a vyšší, ovšem s velkou pravděpodobností bude možné tuto aplikaci spustit i na dalších platformách (nenechte se zmást požadavky uvedenými na domovské stránce tohoto projektu, protože verze 4.0.5 běží i na starší Javě 1.5). Na postarších systémech Mac OS 8 a Mac OS 9 je možné spustit předchozí verze NetLoga, což však spíše souvisí s požadavky použité JRE (Java Runtime Environment), než s konkrétními nároky této aplikace, které ostatně nejsou (na javovskou aplikaci) nijak vysoké.

Obrázek 14: Instalační program NetLoga.
Na stránce http://ccl.northwestern.edu/netlogo/download.shtml je možný výběr verze NetLoga, přičemž pro stažení je nutná registrace. K dispozici jsou instalace pro Microsoft Windows, Mac OS X a obecná instalace. Je možné získat jak samotné NetLogo, tak i NetLogo s přibalenou JRE (Java Runtime Environment). Druhá varianta je vhodná pro ty uživatele, kteří nemají žádnou JRE nainstalovanou (verze 4.0 využívá JRE Javy 6). Už instalace NetLoga vypadá velmi profesionálně, především díky kvalitnímu instalačnímu programu vytvořenému v Javě. Samotná instalace verze 3.x zabere (bez JRE) cca 40MB, nezávisle na použitém operačním systému, verze 4.x již 50 MB. Součástí instalace je i hypertextová nápověda a mnoho demonstračních příkladů, většinou simulací, z nichž některé jsou zobrazeny na přiložených obrázcích.

Obrázek 15: Grafické uživatelské prostředí NetLoga
NetLogo je sice možné použít i bez zaplacení (viz http://ccl.northwestern.edu/netlogo/), nejsou však k dispozici zdrojové kódy a také se nesmí dále šířit upravované verze. NetLogo je zvláštní tím, že podporuje tvorbu dvourozměrné i trojrozměrné grafiky, po které se může pohybovat neomezené množství želv. Želvy spolu mohou komunikovat a vytvářet tak mezi sebou různé vazby. Z těchto důvodů se tato implementace Loga používá zejména pro simulace paralelních systémů, systémů se zpětnými vazbami apod. Pro účely tvorby různých simulací je v NetLogu k dispozici mnoho prvků grafického uživatelského rozhraní (GUI), včetně posuvníků, grafů, přepínacích tlačítek apod.

Obrázek 16: Spuštěná simulace – stlačování plynu ve válci s pístem

Obrázek 17: Další simulace – odrážející se kuličky

Obrázek 18: Celulární automat
8. Squeak
Posledním projektem, o němž se v dnešním článku (prozatím jen ve stručnosti) zmíníme, je Squeak. Jedná se o implementaci objektově orientovaného programovacího jazyka Smalltalk, který je doplněn o virtuální stroj, propracované grafické uživatelské rozhraní (jednotlivá okna je například možné otáčet o libovolný úhel atd.) a velké množství knihoven. V knihovnách jsou dostupné funkce pro práci s multimédii, 2D i 3D grafikou, přístupu k různým internetovým službám atd. Squeak lze spouštět na různých platformách, samozřejmě včetně Linuxu, MS Windows a Mac OS, ovšem lze ho provozovat, jak již bylo zmíněno v šesté kapitole, i na některých PDA a smartphonech – viz též obrázky číslo 20 a 21 (osobně Squeak bez nejmenších problémů provozuji na Asus EEE).

Obrázek 19: Desky učebnice Squeaku, která je dostupná na webu ve formátu PDF.
To, co dělá Squeak tak zajímavým, je právě programovací jazyk Smalltalk, který je plně objektově orientovaný (objektem jsou zde například i čísla nebo pravdivostní hodnoty) a reflexivní. Navíc je tvorba programů ve Squeaku od dalších produktů odlišná i v tom, že se programy automaticky stanou součástí celého prostředí a jsou uchovány až do dalšího startu Squeaku (ten se vlastně nikdy neukončuje, pouze hibernuje). Vzhledem k velkému množství možností, které Squeak nabízí, se mu budeme věnovat v následující části seriálu, podobně jako projektu Scratch (pravděpodobně nejpropracovanější prostředí pro výuku programování), který je na Squeaku založen.

Obrázek 20: Squeak běžící na jednom velmi populárním mobilním zařízení.

Obrázek 21: Squeak běžící na různých platformách.
9. Odkazy na Internetu
- Lazarus (Software)
http://en.wikipedia.org/wiki/Lazarus_%28software%29 - FreePascal
http://www.freepascal.org/ - Why I Love Python" slides
http://www.mindviewinc.com/downloads/pub/eckel/LovePython.zip - Why I love Python (presentation)
http://www.slideshare.net/didip/why-i-love-python - První jazyk: Python
http://macek.sandbox.cz/texty/prvni-jazyk-python/ - Programovací jazyk Python
http://www.py.cz/FrontPage - Python – Wikipedia CS
http://cs.wikipedia.org/wiki/Python - IPython
http://en.wikipedia.org/wiki/Ipython - IPython: an interactive computing environment
http://ipython.scipy.org/moin/ - Category:Python
http://rosettacode.org/wiki/Category:Python - Educational programming language
http://en.wikipedia.org/wiki/Educational_programming_language - Seriál Letní škola programovacího jazyka Logo
http://www.root.cz/serialy/letni-skola-programovaciho-jazyka-logo/ - Logo Tree Project:
http://www.elica.net/download/papers/LogoTreeProject.pdf - Language Poster (O'Reilly):
http://www.oreilly.com/news/graphics/prog_lang_poster.pdf - Informace o Comenius Logu:
http://www.comlogo.input.sk/index.html - Stránka nabízející stažení Comenius Loga:
http://www.comlogo.input.sk/nastiahnutie.html - Seminární práce o Comenius Logu:
http://nwit.pedf.cuni.cz/rotal9ap/logo/ - Informace o LEGO/Logu:
http://education.otago.ac.nz/nzlnet/Logo/legologo.html - Informace o systému Elica:
http://www.elica.net/site/index.html - Informace o systému NetLogo:
http://ccl.northwestern.edu/netlogo/ - Stažení NetLoga:
http://ccl.northwestern.edu/netlogo/download.shtml - Uživatelský manuál NetLoga ve formátu PDF:
http://ccl.northwestern.edu/netlogo/docs/NetLogo%20User%20Manual.pdf - NetLogo FAQ:
http://ccl.northwestern.edu/netlogo/docs/faq.html - Domácí stránka Daniela Azumy (autora implementace Turtle Tracks):
http://alumnus.caltech.edu/~dazuma/home/ - Informace o aUCBLogu:
http://www.physik.uni-augsburg.de/~micheler/ - Domácí stránka MSW Loga:
http://www.softronix.com/logo.html - Karel online
http://karel.oldium.net/ - EDU-SIG: Python in Education
http://www.python.org/community/sigs/current/edu-sig/ - Guido van Robot
http://en.wikipedia.org/wiki/Guido_van_Robot - The Guido van Robot Programming Language
http://gvr.sourceforge.net/ - An Introduction to Programming with Karel J. Robot
http://blog.thingoid.com/2003/10/karel-intro/ - Teaching a young robot new tricks
http://blog.thingoid.com/2003/11/karel-new-tricks/ - Karel and Company – More Robots
http://blog.thingoid.com/2003/12/karel-and-company/ - Karel heads for the stars
http://blog.thingoid.com/2004/03/karel-star/ - Karel programming language documentation
http://mormegil.wz.cz/prog/karel/prog_doc.htm - Karel J. Robot
http://www.mainlandregional.net/dklipp/Honors%20Computer%20Science%20Java.htm - Karel (programming language)
http://en.wikipedia.org/wiki/Karel_(programming_language) - Richard E. Pattis
http://en.wikipedia.org/wiki/Richard_E._Pattis - XKarel home page
http://xkarel.sourceforge.net/eng/ - KKarel – screenshoty oken
http://xkarel.sourceforge.net/eng/program.php#Okna - Greenfoot
http://www.greenfoot.org/about/whatis.html - Computer programming – Educational programming languages
http://www.kidslike.info/computer_programming_educational_programming_languages - Making Great Programmers: Why BASIC is Still Relevant
http://kidbasic.sourceforge.net/en/why.html - Gambas Wiki
http://en.wikibooks.org/wiki/Gambas - Squeak home page
http://www.squeak.org/ - XO: The Children's Machine
http://wiki.laptop.org/go/The_Children's_Machine - Squeak
http://en.wikipedia.org/wiki/Squeak - Squeak by Example
http://squeakbyexample.org/ - Scratch home page
http://scratch.mit.edu/ - Scratch (programming language)
http://en.wikipedia.org/wiki/Scratch_(programming_language) - Free tool offers ‚easy‘ coding
http://news.bbc.co.uk/2/hi/technology/6647011.stm - Scratch Lowers Resistance to Programming
http://www.wired.com/gadgetlab/2009/03/scratch-lowers/ - Základy želví grafiky
http://www.root.cz/clanky/zaklady-zelvi-grafiky/ - Bill Kendrick's Web Turtle
http://www.sonic.net/~nbs/webturtle/