Pro pohodlnější navigaci i přístup k pokročilým funkcím Databáze-her.cz doporučujeme povolit si ve svém prohlížeči JavaScript.

Komentáře

  • PC 85
Her pro programátory je celá řada. Osobně jsem jich vyzkoušel jen pramálo. TIS-100 mě však zaujal natolik, že jsem mu byl ochoten věnovat svůj čas. Proč zrovna TIS-100? Líbí se mi nejvíc to, že  na jediné černobílé obrazovce řešíte zdánlivě jednoduchá zadání, jejichž řešení vás dokáží (díky velmi malé sadě instrukcí "assembleru" a díky dost archaické a omezené architektuře počítače TIS-100) potrápit klidně na 2 až 3 hodiny. Výsledek si můžete kdykoliv spustit, abyste se dozvěděli, zda vše funguje, jak má. Pokud nejsou očekávané výsledky, je možné spustit jednoduchý debugger, který prochází program krok za krokem a vy vidíte, kde se ve vašem programu nacházíte, a jaké jsou hodnoty v registrech. 

Celá architektura je postavena na 11 propojených uzlech (nodes), do nichž zapisujete instrukce. Platí zde omezení max. 12 řádků kódu na jeden uzel. Každý uzel má 2 registry, do nichž můžete  hodnoty ukládat, přičítat, odečítat a měnit znaménko. Ovšem k tomu druhému nemáte přímý přístup, což trochu komplikuje návrh hřešení. 

Instrukcí je pouze 13 a zahrnují čtení hodnot ze vstupů/posílání hodnot na výstupy z uzlu, práci s registry, skoky na návěštidla a velice jednoduché rozhodovací příkazy, kdy se pouze zjistí, zda hodnota v registru je nula, není nula, větší nebo menší než nula. A to je přátelé vše! Není to tedy klasický assembler, byť některé instrukce tak vypadají. A je to právě ta "dřevnost" assembleru, která mění řešení jednoduchého zadání v obtížný puzzle. Autoři si připravili 15 úkolů, jejichž obtížnost pomaličku narůstá. Hned prvním úkolem je jednoduše načíst hodnotu ze dvou uzlů a poslat ji přes další uzly do nejspodnějších uzlů a odtud ven. Jednotlivé úkoly jsou pojmenovány tak, že vám dávají smysl. Takže je tu zesilovač signálu, sekvenční generátor nebo třeba čítač sekvencí. V tom posledním zmíněném máte za úkol přijímat na jednom vstupu sérii čísel oddělených nulou. Je potřeba sčítat jednotlivá čísla a zároveň i počítat, kolik čísel přišlo. Jakmile dorazí nula, musíte poslat do dvou výstupů sumu i počet. To byl zrovna úkol, který mi dal zabrat, a při kterém jsem zjistil, že se dá využít jiný uzel jako další "registr". Jinými slovy je potřeba vymýšlet i ad hoc řešení, která vás na první dobrou nenapadnou. U každého úkolu vidíte, jaké hodnoty přijdou na vstupu a také očekávané výstupní hodnoty. Pokud se vám podaří spustit test a dopadne OK, spustí se další skvělá věc - vyhodnocení! Ve třech primitivních grafech uvidíte, jak jste si vedli v porovnání s ostatním světem. Kolika cykly musel váš program projít, kolik jste museli použít instrukcí a také kolik uzlů. Samozřejmě zde všude platí, že čím méně, tím lépe.

Celé to vaše snažení má ještě další smysl než jen udělat vám radost při řešení logických problémů. Počítač TIS-100 totiž má hned několik vadných částí paměti. Každý váš vyřešený úkol vlastně opravuje daný segment RAM. Postupně se dovídáte ústřižky pozadí toho, proč byl takový počítač vlastně vytvořen a kdo za ním stál. Ke hře existuje stylový manuál, který jako by vypadl z oka těm z 80. let. Absolutně doporučuji jej vytisknout a důkladně pročíst, jsou tam i jednotlivé příklady k některým instrukcím.

Zatím mám hotové funkční verze 8 z 15 základních. Devátý mi aktuálně dává hodně zabrat (interrupt handler). Už teď vím, že se poté vrhnu i na další produkty Zachtronics, asi nejvíce Last Call BBS a Shenzen I/O . A dovolím si TIS-100 doporučit opravdu každému (včetně ne-programátorů), protože jde spíše o logické problémy. Hra vás určitě nenaučí programovat. Už jen to spuštění hry, který emuluje spuštění prastarého počítače za to stojí! Je třeba si jen zvyknout na to, jak fungují uzly a kam se píší instrukce.

(kdo by se do toho chtěl pustit, nebojte se v diskusi na cokoliv zeptat) :)

Pro: atmosféra psaní instrukcí v jednoduchém assembleru na obstarožním počítači, skvělé programátorské "sudoku"

Proti: celý čas koukáte na jednu černobílou obrazovku (kde se může vyskytnout červená barva při chybě)

+10