Výuka programování – nástroje pro ilustraci činnosti mikroprocesoru

29. 11. 2011
Doba čtení: 20 minut

Sdílet

Ve třinácté části seriálu o programovacích jazycích a prostředích určených pro výuku programování se budeme zabývat popisem nástrojů, které mohou pomoci vysvětlit činnost mikroprocesoru. Tyto nástroje jsou většinou založeny na imaginárním mikroprocesoru s jednoduchou a snadno pochopitelnou instrukční sadou.

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

9. Odkazy na Internetu

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:

  1. Papírový počítač CGS – Root.cz
    http://www.ro­ot.cz/clanky/pa­pirovy-pocitac-cgs/
  2. Computer Game System
    http://mmm.web­z.cz/pocitadla/cgs­.html
  3. CARDIAC paper computer emulator
    http://boingbo­ing.net/2009/06­/03/cardiac-paper-comput-1.html
  4. cardiac
    http://www.por­ticus.org/bell/be­lllabs_kits_car­diac.html
  5. CARDboard Illustrative Aid to Computation (Wikipedia)
    http://en.wiki­pedia.org/wiki/CAR­Dboard_Illustra­tive_Aid_to_Com­putation
  6. cinc – CARDIAC computer naprogramovaný v Javě
    http://source­forge.net/pro­jects/cinc/
  7. CARDIAC computer – recreation
    http://www.ky­lem.net/pages/pro­jects/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:

  1. Little Man Computer (JavaScript Emulator)
    http://matt.kru­tar.org/LMC4/
  2. Little Man Computer (emulátor pro Android)
    http://android­.pdassi.de/124580/L­MC_Emulator.html
  3. Little man computer (Wikipedia)
    http://en.wiki­pedia.org/wiki/Lit­tle_Man_Compu­ter
  4. The „Little Man“ Computer
    http://elearnin­g.algonquinco­llege.com/cou­rsemat/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 CARDIACLMC vlastně modelují činnost prakticky shodných počítačů s von Neumannovou architekturou a mikroprocesorem s jediným akumulátorem.

http://cdn2.staz­tic.com/screen­shots/lmc-emulator-150–1.jpg

Obrá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
pc102_07

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ě.

pc102_08

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).

pc102_09

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:

  1. Czechoslovakian Home-Computers
    http://www.ho­mecomputer.de/pa­ges/easteurope_cz­.html
  2. Minimalism (computing)
    http://en.wiki­pedia.org/wiki/Mi­nimalism_(com­puting)
  3. Tesla PMI-80
    http://osmi.tar­bik.com/cssr/pm­i80.html
  4. PMI-80
    http://en.wiki­pedia.org/wiki/PMI-80
  5. PMI-80
    http://www.old-computers.com/MU­SEUM/computer­.asp?st=1&c=1016
  6. Root.cz: Československé osmibitové počítače
    http://www.ro­ot.cz/clanky/ces­koslovenske-osmibitove-pocitace/
  7. Root.cz: Československé osmibitové počítače 2 – PMD 85
    http://www.ro­ot.cz/clanky/ces­koslovenske-osmibitove-pocitace-2-ndash-pmd-85/
  8. Root.cz: Československé osmibitové počítače: emulátory PMD 85
    http://www.ro­ot.cz/clanky/ces­koslovenske-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í.

bitcoin školení listopad 24

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:

  1. Arduino home page
    http://www.ar­duino.cc/
  2. Arduino: vývojový kit pro hrátky s hardware (Root.cz)
    http://www.ro­ot.cz/clanky/ar­duino-vyvojovy-kit-pro-hratky-s-hardware/
  3. Intro to the Arduino – Weekend Project PDFcast
    http://blog.ma­kezine.com/ar­chive/2007/09/in­tro-to-the-arduino-week.html
  4. Arduino Diecimila: Začněte s mikroprocesory
    http://www.techdot­.eu/index.php/2008/01­/19/arduino-diecimila-zacnete-s-mikroprocesory/
  5. Arduino (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Ar­duino
  6. Arduino (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Ar­duino
  7. Amicus home page
    http://www.my­amicus.co.uk/

9. Odkazy na Internetu

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