Obsah
1. Výuka programování – nástroje pro ilustraci činnosti mikroprocesoru
2. „Papírové“ pomůcky vysvětlující činnost počítače
3. Instrukční sada papírového počítače CARDIAC
4. Little Man Computer (LMC) – imaginární počítač s deseti instrukcemi
5. Instrukční sada počítače LMC
6. Porovnání LMC s počítačem CARDIAC a demonstrační příklad
7. Jednoduché mikropočítače používané mj. i pro výuku
8. Emulátor mikropočítače s mikroprocesorem 6502 naprogramovaný v JavaScriptu
1. Výuka programování – nástroje pro ilustraci činnosti mikroprocesoru
V předchozích dvanácti částech seriálu o programovacích jazycích navržených takovým způsobem, aby je bylo možné efektivně použít pro výuku programování, jsme se seznámili jak s klasickými jazyky používanými na školách již po relativně dlouhou dobu, tak i s nástroji, které vznikly teprve nedávno. Mezi dnes již klasické jazyky určené pro výuku programování patří zejména jazyk Karel (k němuž se ještě jednou vrátíme, protože se tento jazyk dočkal hned několika pěkných „webových“ reinkarnací), dále pak programovací jazyk Logo, různé varianty BASICu (které mnohdy mají s původním BASICem společný už jen název) a částečně také Squeak. Relativní novinky na tomto poli představují projekty Scratch, BYOB (jenž je založen na Scratchi), Panther (taktéž založen na Scratchi) a v neposlední řadě i projekt Alice, což je poměrně komplexní nástroj vhodný pro různé věkové skupiny, jehož popisem se budeme zabývat v některé následující části tohoto seriálu.
Obrázek 1: SIMCO je název pro velmi jednoduchý fiktivní počítač určený pro snadné vysvětlení funkcí procesoru.
Všechny výše zmíněné programovací jazyky i další programové nástroje a aplikace mají i přes množství odlišností jednu vlastnost společnou – zavádí totiž dosti vysokou úroveň abstrakce od principu práce samotného počítače. To samozřejmě není při výuce programování na škodu, spíše je tomu právě naopak. V některých situacích, zejména na odborných středních a vysokých školách (ale i v různých zájmových kroužcích), je však nutné vhodným a především názorným způsobem vysvětlit i princip práce počítače a zejména pak (mikro)procesoru, který tvoří jeho ústřední část. I pro tento účel vzniklo poměrně velké množství pomůcek, ať již se jedná o různé typy „papírových počítačů“, tak i o simulátory zjednodušených ale i reálných mikroprocesorů. K dispozici byly a dodnes jsou i velmi jednoduché mikropočítače s minimem periferních zařízení, které lze pro vysvětlení činnosti počítače (mikroprocesoru) využít. Mezi tato zařízení lze zahrnout i populární jednodeskové minipočítače Arduino a Amicus.
Obrázek 2: Papírový počítač CARDIAC popsaný v následujících dvou kapitolách.
Máte dojem, že má v současnosti smysl výuka assembleru a architektur procesorů?
2. „Papírové“ pomůcky vysvětlující činnost počítače
Mezi jedny z nejstarších pomůcek určených pro vysvětlení činnosti mikroprocesoru patří takzvané „papírové počítače“. Někteří čtenáři Roota si určitě pamatují na papírový počítač nazvaný poněkud honosně Computer Game System, který byl vydaný Mladou frontou (VTM) v roce 1982 v magazínu „Logika v kostce“, nebo na podobnou pomůcku vydanou v roce 1986 časopisem ABC (viz odkazy uvedené na konci této kapitoly). Ovšem papírové počítače jsou ve skutečnosti mnohem starší. Mezi nejznámější pomůcku tohoto typu patří CARDIAC, neboli plným názvem CARDboard Illustrative Aid to Computation. Jedná se o papírovou obdobu procesorové jednotky s jedním akumulátorem a připojenou pamětí navrženou již v letech 1966 až 1968 Davidem Hagelbargerem a Saulem Fingermanem pro společnost Bell Telephone Laboratories. Účelem této pomůcky byla především výuka algoritmizace s využitím jazyka symbolických instrukcí (assembleru), popř. též přímo strojového jazyka. Překlad z assembleru do strojového jazyka byl v tomto případě prováděn ručně, jednalo se však o jednoduchou mechanickou činnost.
Obrázek 3: Takto vypadá originální papírový počítač CARDIAC.
Užitečné odkazy:
- Papírový počítač CGS – Root.cz
http://www.root.cz/clanky/papirovy-pocitac-cgs/ - Computer Game System
http://mmm.webz.cz/pocitadla/cgs.html - CARDIAC paper computer emulator
http://boingboing.net/2009/06/03/cardiac-paper-comput-1.html - cardiac
http://www.porticus.org/bell/belllabs_kits_cardiac.html - CARDboard Illustrative Aid to Computation (Wikipedia)
http://en.wikipedia.org/wiki/CARDboard_Illustrative_Aid_to_Computation - cinc – CARDIAC computer naprogramovaný v Javě
http://sourceforge.net/projects/cinc/ - CARDIAC computer – recreation
http://www.kylem.net/pages/projects/cardiac.html
3. Instrukční sada papírového počítače CARDIAC
Papírový počítač CARDIAC pracoval s numerickými číslicemi o základu 10 a kapacita jeho paměti byla rovna přesně jednomu stu paměťových buněk, z nichž každá mohla obsahovat celočíselnou hodnotu od –999 do 999. Většina paměťových buněk se chovala jako běžná paměť RAM s výjimkou první buňky (adresa=0), jež vždy obsahovala jedničku a taktéž buňky poslední (adresa=99), která sloužila pro zapamatování původní adresy programového čítače. Jednalo se vlastně o jednoúrovňový zásobník, který zde musel být použit, protože instrukční sada neobsahovala příkaz typu RETURN (namísto toho stačilo provést skok na obsah buňky 99). Kromě paměti o kapacitě 100 číslic obsahoval procesor tohoto počítače i akumulátor, u nějž bylo možné testovat, zda obsahuje kladnou či zápornou hodnotu. Programy se pro tento papírový počítač zapisovaly v jazyku symbolických instrukcí (assembleru), přičemž instrukční sada byla velmi jednoduchá, protože obsahovala pouhých deset instrukcí.
Obrázek 4: jcinc je jednoduchý emulátor počítače CARDIAC naprogramovaný v Javě.
Každá instrukce se ručně překládala do strojového kódu, přičemž kód každé instrukce byl složen z trojice číslic – první číslice obsahovala vlastní operační kód instrukce a další dvě číslice obsahovaly adresu operandu, popř. adresu cíle skoku. Celý instrukční soubor tohoto počítače je pro ilustraci zapsán v následující tabulce:
Operační kód | Zkratka instrukce | Původní anglický termín | Význam instrukce |
---|---|---|---|
0 | INP | INPut | načtení čísla ze vstupní karty a zápis do paměti |
1 | CLA | CLear and Add | načtení hodnoty z paměti do akumulátoru |
2 | ADD | ADD | přičtení hodnoty z paměti do akumulátoru |
3 | TAC | Test Accumulator Content | test, zda akumulátor obsahuje kladné či záporné číslo (při záporném čísle se provede podmíněný skok) |
4 | SFT | ShiFT | bitový posun doleva či doprava |
5 | OUT | OUTput | zápis čísla ze zvolené paměťové buňky na výstup |
6 | STO | STOre | uložení obsahu akumulátoru do operační paměti |
7 | SUB | SUBtract | odečtení hodnoty načtené z paměti od akumulátoru |
8 | JMP | JuMP | skok na určenou adresu s uložením původního obsahu programového čítače do buňky 99 |
9 | HRS | Halt and ReseT | skok na zadanou adresu a zastavení programu |
Obrázek 5: Další, tentokrát vizuálně přesný emulátor počítače CARDIAC.
Jednoduchý program pro součet dvou čísel načtených ze vstupu by mohl vypadat následovně (převod z assembleru do strojového kódu byl proveden ručně):
Adresa | Operační kód | Assembler |
---|---|---|
17 | 034 | INP 34 ; načti vstup a ulož ho do buňky 34 |
18 | 035 | INP 35 ; načti vstup a ulož ho do buňky 35 |
19 | 134 | CLA 34 ; vymaž akumulátor a načti do něj obsah buňky 34 |
20 | 235 | ADD 35 ; přičti k akumulátoru obsah buňky 35 |
21 | 636 | STO 36 ; ulož výsledek součtu do buňky 36 |
22 | 536 | OUT 36 ; obsah této buňky (36) vytiskni na výstup |
23 | 900 | HRS ; finito |
Myslíte si, že je papírový počítač CARDIAC Turingovsky kompletní (uvažujme, že má nekonečnou RAM)?
4. Little Man Computer (LMC) – imaginární počítač s deseti instrukcemi
Papírový počítač CARDIAC samozřejmě není jedinou pomůckou užitečnou při vysvětlování principu činnosti počítače a mikroprocesoru. Další velmi podobnou pomůckou je Little Man Computer (LMC), což je velmi jednoduchý fiktivní počítač s von Neumannovou architekturou, který byl vytvořený Stuartem Madnickem již v roce 1965, ale používá se při výuce dodnes. Mezi CARDIACem a LMC můžeme objevit mnoho shodných vlastností, které se týkají jak architektur obou počítačů, tak i způsobu zápisu programů v jazyku symbolických instrukcí nebo přímo ve strojovém kódu (s tím rozdílem, že pro LMC existuje skutečný assembler s podporou symbolických adres=návěští, takže překlad není nutné provádět ručně). Fiktivní počítač LMC obsahuje operační paměť o kapacitě 100 buněk (nazývaných původně mailboxy), přičemž každá buňka může obsahovat trojciferné kladné číslo. Záporná čísla není možné do paměti ukládat; jedinou výjimkou je instrukce rozdílu (SUB), která dokáže do procesoru uložit příznak záporného výsledku.
Kromě operační paměti obsahuje fiktivní počítač LMC taktéž akumulátor, vstupní registr INPUT, výstupní registr OUTPUT a samozřejmě taktéž programový čítač PC, jehož obsah může nabývat hodnot 00 až 99. Instrukční kód počítače LMC obsahuje deset instrukcí a jednu pseudoinstrukci DAT, která je použita assemblerem pro symbolické pojmenování paměťového místa. To znamená, že v programech není nutné používat absolutní adresy, protože přepočet symbolických názvů (návěští/label) na adresy provede automaticky assembler.
Užitečné odkazy:
- Little Man Computer (JavaScript Emulator)
http://matt.krutar.org/LMC4/ - Little Man Computer (emulátor pro Android)
http://android.pdassi.de/124580/LMC_Emulator.html - Little man computer (Wikipedia)
http://en.wikipedia.org/wiki/Little_Man_Computer - The „Little Man“ Computer
http://elearning.algonquincollege.com/coursemat/dat2343/lectures.f03/12-LMC.htm
Obrázek 6: Emulátor počítače LMC naprogramovaný v JavaScriptu.
5. Instrukční sada počítače LMC
Podobně jako v případě výše popsaného papírového počítače CARDIAC si v této kapitole vypíšeme instrukční sadu počítače LMC. Ta je opět velmi jednoduchá:
Operační kód | Zkratka instrukce | Původní anglický termín | Význam instrukce |
---|---|---|---|
1×x | ADD | ADD | přičtení hodnoty z buňky xx k obsahu akumulátoru |
2×x | SUB | SUBtract | odečtení hodnoty z buňky xx od obsahu akumulátoru |
3×x | STA | STore Accumulator | uložení akumulátoru do buňky xx |
5×x | LDA | LoaD Accumulator | načtení hodnoty z buňky xx do akumulátoru |
6×x | BRA | BRAnch | nepodmíněný skok na adresu xx |
7×x | BRZ | BRanch if Zero | skok na adresu xx v případě, že je akumulátor nulový |
8×x | BRP | BRanch if Positive | skok na adresu xx v případě, že je akumulátor nulový nebo obsahuje kladnou hodnotu (testováno po operaci SUB) |
901 | INP | INPut | zápis hodnoty na vstupu do akumulátoru |
902 | OUT | OUTput | zápis hodnoty akumulátoru na výstup |
000 | HLT | HaLT | ukončení programu |
6. Porovnání LMC s počítačem CARDIAC a demonstrační příklad
Při pohledu na tuto instrukční sadu je patrné, že se instrukce fiktivního počítače LMC v podstatě ani příliš neliší od instrukcí výše popsaného počítače CARDIAC. Operační kódy instrukcí i jejich mnemotechnické zkratky jsou sice odlišné a i instrukce pro vstup a výstup pracují jinak (zde s obsahem akumulátoru, protože neobsahují adresní část), ale oba počítače CARDIAC i LMC vlastně modelují činnost prakticky shodných počítačů s von Neumannovou architekturou a mikroprocesorem s jediným akumulátorem.
http://cdn2.staztic.com/screenshots/lmc-emulator-150–1.jpgObrázek 7: Emulátor počítače LMC pro systém Android.
Podívejme se nyní na jednoduchý program pro součet dvou čísel načtených ze vstupu (podobný program je umístěný na této stránce):
INP ; načtení prvního čísla STA FIRST ; uložení do paměti INP ; načtení druhého čísla STA SECOND ; uložení do paměti LDA FIRST ; první načtené číslo do akumulátor ADD SECOND ; provedení součtu OUT ; součet je poslán na výstup HLT ; konec programu ; FIRST DAT ; pojmenovaná paměťová buňka pro první číslo SECOND DAT ; pojmenovaná paměťová buňka pro druhé číslo
Obrázek 8: Počítač Tesla PMI-80. Vlevo nahoře (zelený soket) můžeme vidět mikroprocesor MHB 8080A i další podpůrné obvody (včetně pamětí), vpravo je klávesnice a nad ní (červený pruh) devítimístný sedmisegmentový displej. Počítač zobrazený na tomto snímku byl upravený – LED na spodní části plošného spoje ani dvojice tlačítek „0“ a „D“ nejsou v originálním PMI-80 použity.
7. Jednoduché mikropočítače používané mj. i pro výuku
Kromě „papírových počítačů“ (CARDIAC, Computer Game System) nebo počítačů emulovaných na jiném typu stroje (Little Man Computer se na některých typech škol používají i jednoduché mikropočítače s minimem periferních zařízení, které jsou většinou osazené nějakým jednoduchým mikroprocesorem. Předností těchto zařízení je především to, že se jejich funkce dá vysvětlit v několika hodinách a navíc takové mikropočítače neobsahují žádné „magické“ součásti, jakou je například BIOS nebo složitý řadič disku či displeje. Jedním z velmi jednoduchých mikropočítačů používaných především v minulosti v tuzemsku (ČSSR), je počítač nazvaný PMI-80, jenž byl vyráběný od roku 1982 v Tesle Piešťany. Jedná se o počítač, který byl určený především pro výuku programování (konkrétně se jedná o programování v assembleru či přímo ve strojovém kódu mikroprocesoru Intel 8080), jehož architektura byla z velké části postavena na (tehdejší) tuzemské součástkové základně.
Obrázek 9: Detail klávesnice počítače PMI-80.
Základem osmibitového počítače PMI-80 byl mikroprocesor Intel 8080 (který se v ČSSR vyráběl pod označením MHB 8080A) taktovaný v případě tohoto počítače na 1 MHz, ovšem frekvence se dala poměrně jednoduše zvýšit: postačilo pouze změnit rutiny pro čtení a zápis dat na magnetofon. Tento mikroprocesor byl doplněn o operační paměť s kapacitou 1 KB, paměť ROM taktéž s kapacitou 1 KB a další nezbytné podpůrné obvody, především čipy 8224 a 8228, ke kterým byl v počítači PMI-80 přidán ještě obvod 8255 nabízející tři konfigurovatelné osmibitové vstupně/výstupní brány zajišťující jak řízení displeje a klávesnice, tak i umožňující připojení dalších periferních zařízení k tomuto počítači. Jako vnější paměť se používal běžný magnetofon (páskový či kazetový). Ve školních laboratořích se v pozdějších dobách tento počítač doplňoval obvodem UART umožňujícím komunikaci s osobním počítačem PC, takže se jako vnější paměť dal použít i jeho pevný disk (poněkud paradoxní přitom je, že DSP procesor na disku má mnohem větší výkonnost než celý PMI-80).
Obrázek 10: Integrované obvody, které tvořily ústřední část počítače PMI-80: osmibitový mikroprocesor MHB 8080A, podpůrné obvody 8224 a 8228, paměť ROM, paměť RAM (2×1024×4 bity) a paralelní vstupně-výstupní brány realizované obvody 8255. Paměťové čipy typu MHB 2114 měly strukturu 1024×4 bity, doba přístupu do paměti dosahovala 450 ns a maximální příkon byl 500 mW. Tyto čipy měly 10 adresových pinů, 4 vstupně/výstupní piny pro data, pin pro výběr čipu (!CS) a pin pro řízení čtení/zápisu (!WE), což spolu s dvěma piny pro napájení (Ucc, GND) znamenalo, že se tento čip umisťoval do pouzdra DIL s 18 nožičkami a přitom nebylo nutné používat multiplexování adresy.
PMI-80 dále obsahoval jednoduchou klávesnici určenou pro zápis programů ve strojovém kódu, spouštění těchto programů a dokonce i jejich krokování s možností výpisu obsahu registrů po každém kroku. Hlavním výstupním zařízením byla osmice sedmisegmentových displejů složených z LED, které byly ovládány programově, takže bylo možné se pokusit o výpis čísel, textů (s problematickými písmeny M, X, V) atd. Jednalo se skutečně o velmi jednoduchý stroj, v jehož 1 KB paměti ROM byl základní operační systém, který byl taktéž snadno pochopitelný. Další předností tohoto technologicky dávno překonaného zařízení byla možnost připojení osciloskopu k libovolným pinům mikroprocesoru, k jeho podpůrným obvodům či k paměti, takže se například mohla jednoduše sledovat komunikace po sběrnici. To je přednost, kterou při použití mikrořadičů částečně ztrácíme, protože mikrořadiče obsahují veškeré potřebné podpůrné obvody i paměť na jediném čipu.
Užitečné odkazy:
- Czechoslovakian Home-Computers
http://www.homecomputer.de/pages/easteurope_cz.html - Minimalism (computing)
http://en.wikipedia.org/wiki/Minimalism_(computing) - Tesla PMI-80
http://osmi.tarbik.com/cssr/pmi80.html - PMI-80
http://en.wikipedia.org/wiki/PMI-80 - PMI-80
http://www.old-computers.com/MUSEUM/computer.asp?st=1&c=1016 - Root.cz: Československé osmibitové počítače
http://www.root.cz/clanky/ceskoslovenske-osmibitove-pocitace/ - Root.cz: Československé osmibitové počítače 2 – PMD 85
http://www.root.cz/clanky/ceskoslovenske-osmibitove-pocitace-2-ndash-pmd-85/ - Root.cz: Československé osmibitové počítače: emulátory PMD 85
http://www.root.cz/clanky/ceskoslovenske-osmibitove-pocitace-aplikace-a-emulatory-pmd-85/
8. Amicus a Arduino ve funkci zmodernizované varianty PMI-80
V současnosti sice taktéž existují podobné specializované počítače s vlastní klávesnicí a jednoduchým displejem, ovšem pro výuku (zejména v různých počítačových a elektrotechnických kroužcích) se používají spíše malé a současně i levné jednodeskové počítače založené na některém moderním mikrořadiči; především jsou využívané osmibitové mikrořadiče řady PIC16 a PIC18, dále čipy Atmel či mikrořadiče s jádrem ARM. Oblíbené jsou zejména mikropočítače Arduino (i když instrukční sada jejich procesorů je relativně složitá, takže se používají zejména pro výuku Céčka a na „bastlení“ různých přídavných zařízení) a taktéž mikropočítače Amicus založené na mikrořadičích PIC18, jejichž instrukční sada je velmi jednoduchá, i když je v některých ohledech poněkud neobvyklá. Kromě toho lze využít i herní konzoli Uzebox, s jejímž popisem jsme se již seznámili v paralelně běžícím seriálu o architekturách počítačů.
Obrázek 11: Vývojový kit Amicus s mikrořadičem PIC. Tento vývojový kit byl inspirován kitem Arduino určeným pro mikrořadiče Atmel AVR.
Všechna zmíněná zařízení se na rozdíl od výše popsaného osmibitového mikropočítače PMI-80 programují přímo na osobním počítači, což je v mnoha ohledech výhodnější, protože uživatelské programy je možné připravovat v mnohdy velmi sofistikovaných vývojových prostředích, používat assemblery namísto ručního překladu strojového kódu (i když tomu samozřejmě pro účely výuky nic nebrání) a taktéž si program odzkoušet v emulátoru, což alespoň částečně nahrazuje krokování a použití osciloskopu na reálném HW. Předností je i nízká pořizovací cena a možnost tvorby reálně použitelných systémů, protože všechny zmíněné jednodeskové počítače mají dostatečnou kapacitu paměti programu i dostatečnou výpočetní rychlost pro řízení různých robotů, ovládání plotterů, syntézu hudby atd. Navíc mikropočítač/herní konzole Uzebox dokáže programově generovat video signál, což s sebou přináší i další zajímavé oblasti použití.
Obrázek 12: Herní konzole Uzebox obsahující osmibitový mikrořadič AVR řady ATmega, konkrétně typ ATmega644. Na základní desce můžeme vidět dvojici konektorů určených pro připojení ovladačů SNES, konektor pro výstup kompozitního videa i patici pro připojení menšího plošného spoje s vlastním mikrořadičem.
Užitečné odkazy:
- Arduino home page
http://www.arduino.cc/ - Arduino: vývojový kit pro hrátky s hardware (Root.cz)
http://www.root.cz/clanky/arduino-vyvojovy-kit-pro-hratky-s-hardware/ - Intro to the Arduino – Weekend Project PDFcast
http://blog.makezine.com/archive/2007/09/intro-to-the-arduino-week.html - Arduino Diecimila: Začněte s mikroprocesory
http://www.techdot.eu/index.php/2008/01/19/arduino-diecimila-zacnete-s-mikroprocesory/ - Arduino (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Arduino - Arduino (Wikipedia EN)
http://en.wikipedia.org/wiki/Arduino - Amicus home page
http://www.myamicus.co.uk/
9. Odkazy na Internetu
- Little Man Computer (JavaScript Emulator)
http://matt.krutar.org/LMC4/ - Little Man Computer (emulátor pro Android)
http://android.pdassi.de/124580/LMC_Emulator.html - Little man computer (Wikipedia)
http://en.wikipedia.org/wiki/Little_Man_Computer - The „Little Man“ Computer
http://elearning.algonquincollege.com/coursemat/dat2343/lectures.f03/12-LMC.htm - LC-3 (Wikipedia)
http://en.wikipedia.org/wiki/LC-3 - Papírový počítač CGS – Root.cz
http://www.root.cz/clanky/papirovy-pocitac-cgs/ - Computer Game System
http://mmm.webz.cz/pocitadla/cgs.html - CARDIAC paper computer emulator
http://boingboing.net/2009/06/03/cardiac-paper-comput-1.html - CARDboard Illustrative Aid to Computation (Wikipedia)
http://en.wikipedia.org/wiki/CARDboard_Illustrative_Aid_to_Computation - cinc – CARDIAC computer naprogramovaný v Javě
http://sourceforge.net/projects/cinc/ - cardiac
http://www.porticus.org/bell/belllabs_kits_cardiac.html - CARDIAC computer – recreation
http://www.kylem.net/pages/projects/cardiac.html - Arduino home page
http://www.arduino.cc/ - Arduino: vývojový kit pro hrátky s hardware (Root.cz)
http://www.root.cz/clanky/arduino-vyvojovy-kit-pro-hratky-s-hardware/ - Intro to the Arduino – Weekend Project PDFcast
http://blog.makezine.com/archive/2007/09/intro-to-the-arduino-week.html - Arduino Diecimila: Začněte s mikroprocesory
http://www.techdot.eu/index.php/2008/01/19/arduino-diecimila-zacnete-s-mikroprocesory/ - Arduino (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Arduino - Arduino (Wikipedia EN)
http://en.wikipedia.org/wiki/Arduino - Amicus home page
http://www.myamicus.co.uk/ - 6502asm.com (emulátor 6502)
http://6502asm.com/ - Panther – home page
http://pantherprogramming.weebly.com/ - Panther – downloads
http://pantherprogramming.weebly.com/download-panther.html - Panther (Scratch Modification) – wiki
http://wiki.scratch.mit.edu/wiki/Panther_(Scratch_Modification) - Scratch Programming Wiki – Panther
http://scratch.wikia.com/wiki/Panther - Scratch: oficiální stránka projektu
http://scratch.mit.edu/ - Scratch: galerie projektů vytvořených ve Scratchi
http://scratch.mit.edu/galleries/browse/newest - Scratch: nápověda
file:///usr/share/scratch/Help/en/index.html - Scratch: obrazovky nápovědy
file:///usr/share/scratch/Help/en/allscreens.html - Scratch (Wikipedie CZ)
http://cs.wikipedia.org/wiki/Scratch - Scratch (programming language)
http://en.wikipedia.org/wiki/Scratch_(programming_language) - Mitchel Resnick (Wikipedia EN)
http://en.wikipedia.org/wiki/Mitchel_Resnick - Domácí stránka Mitchela Resnicka
http://web.media.mit.edu/~mres/ - BASIC-256 – BASIC256 – An easy to use BASIC language and IDE
http://www.basic256.org/ - PythonTurtle
http://pythonturtle.org/ - Turtle graphics for Tk
http://docs.python.org/library/turtle.html - Scratch Lowers Resistance to Programming
http://www.wired.com/gadgetlab/2009/03/scratch-lowers/ - Stopařův průvodce jedním převážně neškodným programovacím jazykem
http://www.squeak.cz/ - CamelCase
http://en.wikipedia.org/wiki/Camel_case - Smalltalk tutorial chapter 5 – Variables
http://www.tutorials4u.com/smalltalk/smalltalk-tutorial-05.htm - History around Pascal Casing and Camel Casing
http://blogs.msdn.com/b/brada/archive/2004/02/03/67024.aspx - Xerox Alto
http://en.wikipedia.org/wiki/Xerox_Alto - WIMP (computing)
http://en.wikipedia.org/wiki/WIMP_(computing) - Graphical user interface
http://en.wikipedia.org/wiki/GUI - Xerox Star
http://en.wikipedia.org/wiki/Xerox_Star - The Xerox Star 8010 „Dandelion“
http://www.digibarn.com/collections/systems/xerox-8010/index.html - Fibonacci number
http://en.wikipedia.org/wiki/Fibonacci_number - Squeak home page
http://www.squeak.org/ - XO: The Children's Machine
http://wiki.laptop.org/go/The_Children's_Machine - Squeak na Wikipedii EN
http://en.wikipedia.org/wiki/Squeak - Squeak na Wikipedii CZ
http://cs.wikipedia.org/wiki/Squeak - Squeak by Example
http://squeakbyexample.org/ - Squeak Land
http://www.squeakland.org/ - SqueakNotes
http://squeak.zwiki.org/SqueakNotes - Squeak FAQ
http://wiki.squeak.org/squeak/471 - Learning Squeak
http://c2.com/cgi/wiki?LearningSqueak - 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/ - XKarel – 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 - Free tool offers ‚easy‘ coding
http://news.bbc.co.uk/2/hi/technology/6647011.stm - Základy želví grafiky
http://www.root.cz/clanky/zaklady-zelvi-grafiky/ - Bill Kendrick's Web Turtle
http://www.sonic.net/~nbs/webturtle/