Obsah
1. Počítač Setuň a Benderova noční můra
2. Trojková poziční číselná soustava
3. Hospodárnost poziční číselné soustavy
4. There's no such thing as two (vyvážená trojková číselná soustava)
5. Přednosti vyvážené trojkové číselné soustavy
6. Zápory trojkové soustavy v porovnání se soustavou binární
7. Historie vzniku a vývoje počítače Setuň
8. Základní technické parametry počítače Setuň
1. Počítač Setuň a Benderova noční můra
„Ahhh, what an awful dream. Ones and zeroes everywhere…[shudder] and I thought I saw a two.“
– Bender
„It was just a dream, Bender. There's no such thing as two“.
– Fry
(Futurama)
Padesátá a šedesátá léta minulého století jsou z hlediska vývoje výpočetní techniky velmi důležitá a především zajímavá – vždyť právě v tomto období zkoušeli konstruktéři navrhovat počítače založené na různých principech, došlo k přechodu z technologií elektromagnetických relé a později elektronek směrem k tranzistorům a později i integrovaným obvodům a mj. také vznikla celá řada algoritmů, operačních systémů i programovacích jazyků, z nichž mnohé se po různých modifikacích používají dodnes (a některé z vlastností těchto „zastaralých“ programovacích jazyků jsou nám dnes prezentovány jako převratná novinka). Konstruktéři počítačů tehdy ještě nebyli svázání tolika neměnitelnými technologiemi tak, jako je tomu dnes. Z těchto důvodů mohly mezi léty 1950 až cca 1965 vznikat zcela unikátní a dnes již nepoužívané konstrukce počítačů, zatímco současné počítače jsou ve velké míře seskládány z dílů vyráběných jinými firmami. Doba, kdy si každá významnější počítačová firma vyráběla například vlastní mikroprocesory, paměti či diskové mechaniky, je již dávno pryč (kromě jedné výjimky).
Obrázek 1: Sálový počítač IBM-702 z roku 1953 byl jedním z prvních počítačů specializovaných na hromadné zpracování dat.
Jedním z nejzajímavějších počinů (a současně i – alespoň prozatím – slepou uličkou vývoje) byly počítače založené na trojkové (ternární, terciální) číselné soustavě namísto dnes nejpoužívanější soustavy dvojkové (binární). Historie používání trojkové soustavy při stavbě počítačů (nebo jejich předchůdců – neprogramovatelných počítacích strojů) je velmi dlouhá. Již v roce 1840 zkonstruoval Thomas Fowler mechanický počítací stroj vyrobený ze dřeva, který většinu výpočtů prováděl právě v trojkové soustavě. To, že se tvůrci u několika počítačů rozhodli využít trojkovou soustavu, není až tak překvapivé, protože tato soustava má (především při použití její vyvážené neboli symetrické varianty) několik velmi zajímavých vlastností, které si popíšeme v následujících kapitolách. Na tomto místě možná stojí za připomenutí fakt, že některé první číslicové počítače (například i světoznámý Eniac) zpracovávaly přímo dekadické (desítkové) hodnoty, což s sebou přinášelo poměrně velké množství technicky obtížně řešitelných problémů.
Obrázek 2: Model Fowlerova mechanického počítacího stroje.
2. Trojková poziční číselná soustava
Trojková poziční číselná soustava je založena na stejném principu, jako poziční soustava dvojková, osmičková, šestnáctková či nejčastěji používaná soustava desítková. Numerické hodnoty jsou v těchto soustavách zapisovány sekvencí symbolů, přičemž počet použitelných symbolů určuje základ dané číselné soustavy (radix). Například u desítkové soustavy se používají symboly (cifry) 0 až 9, u soustavy binární pouze symboly 0 a 1 a u soustavy šestnáctkové symboly 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E a F. Pozice symbolu v zápisu čísla určuje jeho řád, neboli celočíselnou mocninu základu číselné soustavy (z tohoto důvodu se jedná o poziční soustavu, protože význam má nejenom použitý symbol, ale i jeho pozice v zapisovaném čísle). Naprosto stejným způsobem je vytvořena i trojková poziční číselná soustava, v níž se používají pouze symboly 0, 1 a 2. Hodnota libovolného čísla zapsaného sekvencí symbolů anan-1…a1a v poziční číselné soustavě o základu b se vypočte následovně:
x=anbn+an-1bn-1+…+a1b+a
Například trojkové číslo 210210 má v desítkové soustavě hodnotu:
2×35 + 1×34 + 0×33 + 2×32 + 1×31 + 0×3 =
2×243 + 1×81 + 0×27 + 2×9 + 1×3 + 0×1 =
486 + 81 + 18 + 3 =
3. Hospodárnost poziční číselné soustavy
Trojková soustava má oproti všem dalším pozičním číselným soustavám o celočíselném základu jednu poměrně zásadní přednost – právě v této soustavě je možné reprezentovat čísla tím nejhospodárnějším způsobem. Jak se však vůbec „hospodárnost“ nějaké reprezentace čísel měří? Jedná se o součin počtu cifer v zápisu čísla a počtu (použitelných) symbolů, kterými jsou cifry zapsány (počet symbolů odpovídá základu číselné soustavy). Přitom se předpokládá, že se všechny symboly v čísle vyskytují se stejnou pravděpodobností, což je u běžných pozičních soustav splněno (v opačném případě by byla efektivita reprezentace pouze nižší, nikdy vyšší, než u soustavy, kde se všechny symboly mohou vyskytovat se stejnou pravděpodobností).
Obrázek 3: Závislost hospodárnosti uložení číselných hodnot na základu soustavy, která je vynesená formou spojitého grafu. Jedná se o křivky, pro něž platí rw=konst., kde r je základ číselné soustavy a w je šířka čísla, tj. počet jeho cifer. Z grafu je patrné, že průběhy mají minimum v bodě r=e.
Například u desítkové soustavy se rozeznává deset symbolů (0–9), takže pro desítkové číslo 12345 je hospodárnost jeho zápisu rovna 5×10=50 (5 cifer krát základ soustavy), zatímco stejné číslo reprezentované ve dvojkové soustavě sekvencí symbolů 11000000111001 je zapsáno s efektivitou 14×2=28. Z teorie informace vyplývá, že nejhospodárnější by byla číselná soustava o základu e (Eulerova konstanta), kterému se nejvíce blíží celé číslo 3. A skutečně – desítkovou hodnotu 12345 lze v trojkové soustavě zapsat sekvencí symbolů 121221020, takže hospodárnost je rovna 9×3=27, tedy nižší, než u soustavy binární a mnohem nižší než u desítkového zápisu. V následující tabulce je vypsána hospodárnost uložení desítkové hodnoty 12345 pro poziční číselné soustavy o základu 2 až 36 (v zápisu čísel se používají jak běžné číslice, tak i písmena malé abecedy):
Základ číselné soustavy | Reprezentace čísla 12345 | Počet cifer | Hospodárnost |
---|---|---|---|
2 | 11000000111001 | 14 | 28 |
3 | 121221020 | 9 | 27 |
4 | 3000321 | 7 | 28 |
5 | 343340 | 6 | 30 |
6 | 133053 | 6 | 36 |
7 | 50664 | 5 | 35 |
8 | 30071 | 5 | 40 |
9 | 17836 | 5 | 45 |
10 | 12345 | 5 | 50 |
11 | 9303 | 4 | 44 |
12 | 7189 | 4 | 48 |
13 | 5808 | 4 | 52 |
14 | 46db | 4 | 56 |
15 | 39d0 | 4 | 60 |
16 | 3039 | 4 | 64 |
17 | 28c3 | 4 | 68 |
18 | 221f | 4 | 72 |
19 | 1f3e | 4 | 76 |
20 | 1ah5 | 4 | 80 |
21 | 16ki | 4 | 84 |
22 | 13b3 | 4 | 88 |
23 | 107h | 4 | 92 |
24 | la9 | 3 | 72 |
25 | jik | 3 | 75 |
26 | i6l | 3 | 78 |
27 | gp6 | 3 | 81 |
28 | fkp | 3 | 84 |
29 | ejk | 3 | 87 |
30 | dlf | 3 | 90 |
31 | cq7 | 3 | 93 |
32 | c1p | 3 | 96 |
33 | bb3 | 3 | 99 |
34 | an3 | 3 | 102 |
35 | a2p | 3 | 105 |
36 | 9ix | 3 | 108 |
Poznámka: předchozí tabulka byla získána pomocí této jednoduché utility napsané v céčku:
#include <stdio.h> #include <string.h> char* itoa(int val, int base) { static char buf[32] = {0}; int i = 30; for(; val && i ; --i, val /= base) { int n = val % base; buf[i] = n + (n < 10 ? '0' : 'a'-10); } return &buf[i+1]; } int main(void) { int i = 12345; int base; for (base = 2; base <= 36; base++) { char *number = itoa(i, base); printf("<tr><td>%2d</td><td>%s</td><td>%2d</td><td>%2d</td></tr>\n", base, number, strlen(number), strlen(number)*base); } return 0; }
Hospodárnost trojkové číselné soustavy má i své praktické stránky. Například při vytváření nabídek „předříkávaných“ telefonním automatem v různých telefonních službách (phone banking, služby telefonních operátorů – „stiskněte 1 pro dobití kreditu, stiskněte 2 pro…“ atd.) je nutné rozhodnout, zda bude každá úroveň nabídek obsahovat velké množství položek (například 1–9) a tím pádem i menší počet kroků, které musí uživatel provést, než se dostane k žádané funkci, nebo naopak malý počet položek v každém nabídce, ovšem s tou nepříjemností, že se celkový počet kroků zvýší. Ukazuje se, že v tomto případě bývá výhodné (v souladu s teorií), aby každý krok obsahoval pouze tři položky (1–3), takže čas na „předříkání“ celé nabídky je relativně krátký a celkový počet kroků není naopak příliš velký.
4. There's no such thing as two (vyvážená trojková číselná soustava)
V předchozích kapitolách jsme si popsali základní poziční trojkovou číselnou soustavu, která však není příliš zajímavá (samozřejmě kromě výše zmíněné efektivity při zápisu numerických hodnot); ostatně naprosto stejným způsobem jsou zkonstruovány i další číselné soustavy používané v různých oborech, například soustava osmičková, desítková, dvanáctková, šestnáctková a šedesátková. Ovšem kromě základní poziční trojkové soustavy existuje i mnohem zajímavější a taktéž častěji používaná vyvážená (symetrická) trojková číselná soustava. Tato číselná soustava taktéž využívá jako základ hodnotu 3, ovšem namísto cifer 0, 1, 2 jsou v ní využity cifry mající hodnoty –1, 0 a +1. Aby se zápis těchto cifer zjednodušil, zapisuje se hodnota +1 obyčejnou jedničkou a hodnota –1 symbolem 1 (popř. se namísto podtržení používá i čárka na jedničkou). Hodnota čísla reprezentovaného ve vyvážené trojkové číselné soustavě se počítá naprosto stejným způsobem, jako u běžné poziční soustavy, jen si samozřejmě musíme dát pozor na znaménko. Následují jednoduché příklady zápisu čísel ve vyvážené trojkové soustavě a převodu těchto čísel do soustavy desítkové:
Zápis čísla v symetrické trojkové soustavě | Desítkový ekvivalent čísla | Výpočet desítkové hodnoty |
---|---|---|
000 | 0 | 0×9+0×3+0×1 |
001 | 1 | 0×9+0×3+1×1 |
100 | 9 | 1×9+0×3+0×1 |
100 | –9 | –1×9+0×3+0×1 |
101 | 10 | 1×9+0×3+1×1 |
101 | 8 | 1×9+0×3–1×1 |
111 | 13 | 1×9+1×3+1×1 |
1111 | 14 | 1×27–1×9–1×3–1×1 |
101 | –8 | –1×9+0×3+1×1 |
111 | –13 | –1×9–1×3–1×1 |
5. Přednosti vyvážené trojkové číselné soustavy
Vyvážená trojková soustava přináší oproti jiným numerickým soustavám používaným ve výpočetní technice, tj. zejména soustavě dvojkové (ale i základní poziční soustavě trojkové), celou řadu předností, které umožňují zjednodušení některých výpočtů prováděných v aritmeticko-logických jednotkách ternárních počítačů. Jednou z těchto předností je fakt, že opačné číslo (tj. číslo, jehož součet s číslem původním dá nulovou hodnotu: -x+x=0) lze získat jednoduše tak, že se všechny jeho cifry s hodnotou 1 změní na hodnotu –1 a naopak (to mj. znamená, že cifry s hodnotou nula zůstanou nezměněné). Tuto jednoduchou a současně i dostatečně rychlou operaci je možné využít například při výpočtu rozdílu dvou čísel – z druhého operandu postačuje vytvořit číslo opačné a následně ho přičíst k operandu prvnímu: a-b = a+(-b) (u soustavy dvojkové, v níž jsou čísla nejčastěji reprezentována v dvojkovém doplňku, je výpočet opačného čísla složitější, naopak při použití doplňku jedničkového nastávají problémy s tím, že existuje „kladná“ a „záporná“ nula).
Druhou užitečnou vlastností vyvážené trojkové soustavy je fakt, že neexistuje žádný rozdíl mezi čísly se znaménkem a čísly bez znaménka, protože znaménko je v podstatě zakódováno v každé cifře (znaménko cifry s nejvyšším řádem pak určuje, zda se jedná o kladné či záporné číslo). Pokud by se tedy například implementoval programovací jazyk C či C++ na ternárních počítačích, nebylo by zapotřebí používat modifikátory signed a unsigned (ve skutečnosti je však céčko svázáno s binární soustavou do takové míry, že by ji bylo nutné emulovat i na ternárním počítači :-). U „konkurenční“ soustavy dvojkové je zapotřebí záporná čísla zakódovat nějakým vhodným způsobem – buď se před hodnotu prostě přidá znaménkový bit, nebo jsou záporná čísla uložena v inverzní podobě (hodnota každého bitu je negována), popř. se využívá kódování čísel s dvojkovým doplňkem, které je v současnosti zdaleka nejpoužívanější, protože se tím mj. zjednodušuje návrh aritmeticko-logické jednotky.
Třetí vlastnost vyvážené trojkové soustavy je zřejmá na první pohled: v soustavě existuje pouze jedna nula vyjádřená číslem, jehož všechny cifry mají hodnotu 0 a ostatní hodnoty jsou okolo nuly rozmístěny symetricky (počet všech čísel, které je možné reprezentovat pomocí ntritů, je vždy lichý, na rozdíl od binární soustavy, v níž se pomocí nbitů může rozeznat 2n různých stavů/hodnot). To znamená, že například při uložení čísel ve slovech o šířce dvou tritů je možné do takto širokých slov uložit jednu z hodnot –4, –3, –2, –1, 0, 1, 2, 3, 4, což ve vyvážené trojkové soustavě odpovídá následujícím kombinacím tritů:
První trit | Nultý trit | Dekadická hodnota |
---|---|---|
–1 | –1 | –4=(-3–1) |
–1 | 0 | –3=(-3+0) |
–1 | 1 | –2=(-3+1) |
0 | –1 | –1=(0–1) |
0 | 0 | 0=(0+0) |
0 | 1 | 1=(0+1) |
1 | –1 | 2=(3–1) |
1 | 0 | 3=(3+0) |
1 | 1 | 4=(3+1) |
Tuto v některých případech velmi důležitou vlastnost není možné zaručit například u soustavy dvojkové, která má buď všechny hodnoty rozmístěny symetricky okolo nuly, ale nula je reprezentována dvěma hodnotami (vyjádření čísel v jedničkovém doplňku, popř. se samostatným bitem nesoucím příznak kladného či záporného znaménka), nebo je použita reprezentace s jednou nulou, ale hodnoty nejsou okolo nuly rozmístěny rovnoměrně (dvojkový doplněk). Některé často používané způsoby binárního kódování čísel pomocí n-tic bitů jsou uvedeny v následující tabulce, v níž je ukázán přepočet tří bitů binárního čísla na dekadickou hodnotu při použití přímého binárního kódu (základní poziční binární soustavy), reprezentace čísel se znaménkem následovaným absolutní hodnotou (0=kladné znaménko, 1=záporné znaménko), jedničkového doplňku a dnes zdaleka nejčastěji používaného dvojkového doplňku:
Druhý bit | První bit | Nultý bit | Přímý binární kód | Znaménko + přímý kód | Jedničkový doplněk | Dvojkový doplněk |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 2 | 2 | 2 | 2 |
0 | 1 | 1 | 3 | 3 | 3 | 3 |
1 | 0 | 0 | 4 | –0 | –3 | –4 |
1 | 0 | 1 | 5 | –1 | –2 | –3 |
1 | 1 | 0 | 6 | –2 | –1 | –2 |
1 | 1 | 1 | 7 | –3 | –0 | –1 |
6. Zápory trojkové soustavy v porovnání se soustavou binární
Kromě několika užitečných vlastností, s nimiž jsme se seznámili v předchozích kapitolách, je použití trojkové soustavy ve velkém množství případů nevýhodné z technologického hlediska, protože například některé typy pamětí (v minulosti se jednalo o děrné pásky, děrné štítky či feritové paměti, dnes optické disky, paměti SRAM a částečně i paměti DRAM) již z principu své činnosti slouží pro uchování dat binárních, tj. sekvencí dvou stavů (samozřejmě je možné trity zakódovat do bitů, to však již s sebou přináší různé obtíže, takže si tvůrci moderních počítačů správně řekli, že nebudou věci komplikovat více, než je nezbytně nutné). Právě z těchto důvodů se počítače založené na trojkové soustavě nakonec nedočkaly většího rozšíření a dnes se téměř výhradně setkáváme s výpočetní technikou založenou na soustavě dvojkové (binární). Ostatně mnoho lidí si při přečtení sousloví „digitální počítač“ či „číslicový počítač“ představí právě stroj založený na binární soustavě, i když původním významem tohoto termínu bylo odlišit počítače pracující s analogovým signálem od počítačů zpracovávajících symboly.
Ovšem s trojkovou soustavou se můžeme dodnes v různých podobách setkat. Je na ní založena například Morseova abeceda (která kromě teček a čárek využívá i oddělovač písmen, protože jinak by nebylo zřejmé, kde leží hranice mezi jednotlivými písmeny a slovy), pomocí tří znaků se programuje v poněkud neobvyklém jazyku Whitespace (jehož nespornou výhodou je, že se při tisku programů ušetří spousta toneru :-), některé komunikační kanály využívají tří stavů, stav „unknown“ se využívá v třístavové logice (například v SQL při práci s hodnotami NULL) apod. Mimochodem: použitím trojkové soustavy se usilovně zabýval i náš velikán Jára Cimrman.:-)
7. Historie vzniku a vývoje počítače Setuň
V předchozích kapitolách jsme si popsali některé vlastnosti vyvážené trojkové soustavy. Tyto vlastnosti znali i tvůrci velmi zajímavého počítače Setuň (v azbuce Сетунь), který byl v průběhu let 1956 až 1958 navržen a sestrojen v Moskevské státní universitě mladým týmem složeným z čerstvých absolventů, jehož vedoucím byl S. L. Sobolev. Název tohoto počítače je odvozen od názvu řeky, která protékala nedaleko universitního kampusu. Cílem tohoto týmu byl návrh poměrně malého, levného a jednoduchého počítače určeného pro použití ve školách, výzkumných laboratořích i pro řízení výroby. Sobolev a jeho tým při návrhu počítače Setuň zvolil za základní stavební prvky polovodičové diody a feritové paměti, protože relé či elektronky nevyhovovaly účelům, pro které měl být počítač používán (nemělo se jednat o žádnou kopii obrovských počítačů Ural či Strela). Z polovodičových diod a dalších prvků byla sestrojena hradla pracující na principu prahové logiky.
Obrázek 4: Řeka Setuň.
Feritové paměti sloužily pro uchování zpracovávaných informací i jako mezipaměť pro data uložená v bubnové paměti, která byla nedílnou součástí mnoha dobových počítačů. Vzhledem k tomu, že se pracovalo s trity a nikoli s bity, bylo nutné pro zápis každého tritu do feritové paměti použít dvojici feritových jader, čímž se však do značné míry ztrácela efektivita trojkové soustavy při ukládání informací (do dvojice feritových jader je totiž možné zaznamenat čtyři stavy, z nichž pouze tři byly v počítači Setuň skutečně využity). Výsledkem práce Sobolevova týmu byl překvapivě rychlý a přitom spolehlivý počítač pracující ve velkém rozmezí teplot (na rozdíl od elektronkových počítačů), jehož design byl v následujících dvou letech (1958–1960) upraven tak, že se začalo zcela vážně uvažovat o jeho sériové výrobě. S plánovanou sériovou výrobou těchto počítačů se pojí jedna zajímavost – továrna na výrobu počítačů Setuň měla být postavena v Československu.
Obrázek 5: Pohled na počítač Setuň.
Ve skutečnosti se však sériová výroba těchto počítačů nikdy nerozjela, protože vlivní lidé v SSSR neměli pochopení pro počítač navržený převážně mladými lidmi na universitě (tj. nikoli váženými akademiky). Takže zatímco se již sešlo mnoho poptávek na tento typ počítače, byly plány na jeho sériovou výrobu zrušeny a namísto počítače Setuň se zákazníkům (v převážné většině se jednalo o firmy a výzkumné ústavy ze zemí RVHP) nabídl klasický „binární“ počítač se zhruba stejným výpočetním výkonem, ale jednou malou vadou – byl 2,5× dražší než počítač Setuň. Celkově bylo do roku 1965 vyrobeno 50 kusů těchto počítačů, třicet z nich bylo instalováno a používáno na universitách, zbylých dvacet ve výzkumných laboratořích a továrnách rozesetých po prakticky celém Sovětském Svazu. Uživatelé těchto počítačů chválili především jejich stabilitu, a to i v podmínkách, kdy docházelo k velkým změnám teploty nebo ke kolísání napájecího napětí.
Obrázek 6: Pohled na jiný model počítače Setuň.
8. Základní technické parametry počítače Setuň
Již v předchozí kapitole jsme si řekli, že se v počítači Setuň využívala mj. i feritová paměť. Její kapacita byla poměrně malá – jednalo se pouze o tři stránky paměti, z nichž každá obsahovala 54 slov. Instrukční kód tohoto počítače byl velmi jednoduchý – aritmetické a logické instrukce obsahovaly adresu jednoho operandu, který mohl být přičten či odečten k hodnotě uložené v jediném indexovém registru (rozhodnutí, zda se použila přímá adresa, adresa přičtená k index registru či adresa odečtená od tohoto registru, se dělo na základě hodnoty jednoho tritu – další výhoda třístavové logiky). Instrukční sada byla z dnešního pohledu minimalistická – obsahovala pouze 24 instrukcí zakódovaných do trojice tritů. Zbylé tři instrukční kódy (33-24=3) zůstaly nevyužity, protože tvůrci počítače Setuň zjistili, že žádné další instrukce již pro realizaci svých testovacích programů nepotřebují, takže zbytečně nekomplikovali jeho zapojení. ALU počítače dokázala zpracovávat operandy se šířkou 18 tritů, takže maximální reprezentovatelná hodnota byla rovna 387 420 489, což odpovídá binárnímu počítači se šířkou slov 29 bitů.
Obrázek 7: Informace o počítači Setuň vyšly i v DDR.
Velmi zajímavé, přímočaré a pro programátory jednoduché bylo použití třístavové logiky v případě podmíněných skoků (conditional jumps, branches). Zatímco u moderních počítačů existuje poměrně velké množství těchto skoků, které se provedou resp. naopak neprovedou na základě několika příznaků (programátoři v assembleru procesorů s architekturou i386 jistě znají instrukce typu JL, JLE, JE, JNE, JG, JGE, JC, JNC atd.) vedlo použití vyvážené trojkové soustavy, kde se není zapotřebí rozhodovat mezi čísly se znaménkem a bez znaménka, a třístavové logiky k velké redukci počtu podmíněných skoků. Ve většině případů si programátoři vystačili s jedinou podmínkou – porovnáním dvou čísel x a y a následného skoku v případě, že platí x<y, x=y či x>y (dtto při porovnávání číselné hodnoty s nulou). Pro programování tohoto počítače se využíval programovací jazyk DSSP, který měl mnoho vlastností společných s Forthem. Tento programovací jazyk si popíšeme v následující části tohoto seriálu.
Obrázek 8: Přední a zadní obálka knihy o počítači Setuň.
9. Odkazy na Internetu
- Číselná soustava
http://cs.wikipedia.org/wiki/Číselná_soustava - Poziční číselná soustava
http://cs.wikipedia.org/wiki/Poziční_číselná_soustava - Whitespace
http://compsoc.dur.ac.uk/whitespace/index.php - Whitespace Examples
http://compsoc.dur.ac.uk/whitespace/examples.php - Whitespace
http://cs.wikipedia.org/wiki/Whitespace - Whitespace (programming language)
http://en.wikipedia.org/wiki/Whitespace_(programming_language) - Antologie nejhorších IT řešení
http://connect.zive.cz/node/630 - ASCII vs. diakritika
http://www.hradec.org/cimrman/y-asci.html - Počítače s kuriózním hardwarem
http://www.fi.muni.cz/usr/jkucera/pv109/2007/xdamek.htm - Radix economy
http://en.wikipedia.org/wiki/Radix_economy - Ternary.info – special interest group on balanced ternary numeral system and trinary logic
http://ternary.info/modules/newbb/viewtopic.php?topic_id=116∓forum=10 - Setun
http://en.wikipedia.org/wiki/Setun - Nikolay Brusentsov – the Creator of the Trinary Computer
http://www.icfcst.kiev.ua/museum/Brusentsov.html - Balanced ternary
http://en.wikipedia.org/wiki/Balanced_ternary - The ternary calculating machine of Thomas Fowler
http://www.mortati.com/glusker/fowler/ - Fowler's ternary calculating machine – an overview
http://www.mortati.com/glusker/fowler/about.htm - Fowler's Binary and Ternary Tables
http://www.mortati.com/glusker/fowler/tables.htm - Ternary computer
http://en.wikipedia.org/wiki/Ternary_computer - Development of ternary computers at Moscow State University
http://www.computer-museum.ru/english/setun.htm - Online Emulation of Soviet Ternary Computer Setun
http://en.trinary.ru/projects/setunws/ - Ternary Computing Testbed 3-Trit Computer Architecture
http://xyzzy.freeshell.org/trinary/CPE%20Report%20-%20Ternary%20Computing%20Testbed%20-%20RC6a.pdf - Ternary logic
http://en.wikipedia.org/wiki/Ternary_logic - Third Base (American Scientist)
http://www.americanscientist.org/issues/pub/third-base/2 - Ternac
http://en.wikipedia.org/wiki/Ternac