3. Daniel Dennet o register machine
INTUITION PUMPS AND OTHER TOOLS FOR THINKING
Geniální myšlenku registračního stroje představil na úsvitu
počítačového věku logik Hao Wang (1957), mimochodem žák Kurta
Gödela a filozof. Je to elegantní nástroj pro myšlení a měli byste ho mít
ve své vlastní výbavě. Není zdaleka tak známý, jak by měl být.
Registrový stroj (register machine) je idealizovaný, imaginární (a
dokonale možný) počítač, který se skládá pouze z určitého (konečného
počtu) registrů a výpočetní jednotky.
4. Daniel Dennet o register machine
INTUITION PUMPS AND OTHER TOOLS FOR THINKING
Registry jsou místa v paměti, každé s jedinečnou adresou (registr 1,
registr 2, registr 3 atd.) a každé může mít jako obsah jedno celé číslo (0,
1, 2, 3, . . .). Každý registr si můžete představit jako velkou krabici, která
může obsahovat libovolný počet zrnek, od 0 do nekonečna , ať už je
krabice jakkoli velká. Obvykle uvažujeme, že krabice mohou jako obsah
obsahovat libovolné celé číslo, což by ovšem vyžadovalo nekonečně
velké krabice. Pro naše účely postačí velmi velké krabice.
5. Daniel Dennet o register machine
INTUITION PUMPS AND OTHER TOOLS FOR THINKING
Zpracovávající jednotka (processing unit) je vybavena pouze třemi
jednoduchými kompetencemi, třemi "instrukcemi", které může
"následovat", a to postupně, po jedné. Jakákoli posloupnost těchto
instrukcí je program a každá instrukce má číslo, které ji identifikuje.
6. Daniel Dennet o register machine
INTUITION PUMPS AND OTHER TOOLS FOR THINKING
Instrukce:
Inkrementace registru n (přičtení 1 k obsahu registru n; vložení fazole
do krabice n) a přechod k dalšímu kroku, kroku m.
Dekrementace registru n (odečtení 1 od obsahu registru n; odebrání
jedné fazole z krabice n) a přechod na další krok, krok m.
Konec. To znamená, že se může zastavit nebo vypnout.
7. Daniel Dennet o register machine
INTUITION PUMPS AND OTHER TOOLS FOR THINKING
Instrukce Decrement funguje stejně jako instrukce Increment, až na
jednu veledůležitou komplikaci: Co má dělat, když je číslo v registru n
rovno 0? Nemůže od něj odečíst 1 (registry nemohou mít jako obsah
záporná celá čísla; z prázdné krabice nemůžete vyndat fazoli), a tak se
musí rozhodnout pro Branch. To znamená, že musí přejít na jiné místo v
programu, aby získal další instrukci. To vyžaduje, aby každá instrukce
Decrement vypsala místo v programu, na které se má jít dál, pokud má
aktuální registr obsah 0.
8. Daniel Dennet o register machine
INTUITION PUMPS AND OTHER TOOLS FOR THINKING
Zde je tedy náš soupis všeho, co umí registrační stroj, s praktickými
krátkými názvy: End, Inc a Deb (pro Decrement-or-Branch).
Na první pohled by se mohlo zdát, že takový jednoduchý stroj nemůže
dělat nic moc zajímavého; jediné, co umí, je vložit fazoli do pole nebo ji
z pole vyjmout (pokud ji najde, a větvit na jinou instrukci, pokud
nemůže). Ve skutečnosti však dokáže spočítat cokoli, co dokáže
spočítat jakýkoli počítač.
11. ADD program
Add the contents of register 1 to the contents of register 2
Registr 1 Registr 2 Registr 3
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
12. ADD program
Add the contents of register 1 to the contents of register 2
Registr 1 Registr 2 Registr 3
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
13. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
14. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
15. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
16. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
17. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
18. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
19. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
20. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
21. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
22. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
23. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
24. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
25. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
26. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
27. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
28. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
29. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
30. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
31. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
32. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
33. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
34. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
35. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
X
36. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
X
37. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
X
38. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
X
39. ADD program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO
STEP]
1. Deb 1 2 3
2. Inc 2 1
3. End
Registr 1 Registr 2 Registr 3
41. MOVE program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO STEP]
1. Deb 3 1 2
2. Deb 2 3 4
3. Inc 3 2
4. End
Registr 1 Registr 2 Registr 3
42. COPY program
Add the contents of register 1 to the contents of register 2
STEP INSTRUCTION REGISTER GO TO STEP [BRANCH TO STEP]
1. Deb 3 1 2
2. Deb 2 2 3
3. Deb 1 4 6
4. Inc 3 5
5. Inc 2 3
6. Deb 2 7 8
7. Inc 1 6
8. End
Registr 1 Registr 2 Registr 3
44. 1. Kompetence bez porozumění. Něco - např. register
machine - může provádět dokonalé aritmetické
výpočty, aniž by musel chápat, co dělá.
45. Kompetence bez porozumění
Sedm tajemství počítačů: první tajemství
Jedná se o distinkci mezi schopností provádět určitou operaci a schopností
"chápat" tuto operaci. Například, když kalkulačka sčítá dvě čísla, dělá to bez
porozumění tomu, co je sčítání, co jsou čísla, nebo proč je to děláno. Je
"kompetentní" ve smyslu, že může provádět výpočty, ale nemá "porozumění",
protože nemá žádný kontext nebo "uvědomění" týkající se těchto výpočtů.
Tento koncept je relevantní v několika disciplínách, včetně kognitivní vědy, filozofie
a umělé inteligence. Zvláště v AI je toto téma často zkoumáno v souvislosti s
otázkami o "uvědomění", "vědomí" a "inteligenci". Dennett tento bod používá k
ukázání, že komplexní chování nebo funkce nevyžadují nutně komplexní "mysl".
46. 2. Co číslo v registru znamená, závisí na
programu, který jsme sestavili.
47. Co číslo v registru znamená, závisí na programu
Sedm tajemství počítačů: druhé tajemství
Pomocí stavebních kamenů, které jsme již vytvořili, můžeme sestavit
působivější operace. S dostatkem trpělivosti bychom mohli nakreslit blokový
graf a napsat program pro ODMOCNINU čísla v registru 7, nebo program pro
ZJIŠTĚNÍ PRŮMĚRU obsahů registrů 1 až 20.
Zvláště užitečná rutina by prohledala stovku registrů, aby zjistila, zda některý z
nich má určitý obsah, a do registru 101 by vložila číslo adresy tohoto registru.
(Jak by to fungovalo? Do registru 102 vložit číslo cíle a do registru 103 jeho
kopii; vynulovat registr 101 a pak, počínaje registrem 1, odečíst jeho obsah od
obsahu registru 103 (po inkrementaci registru 101) a hledat nulovou odpověď.
48. Co číslo v registru znamená, závisí na programu
Sedm tajemství počítačů: druhé tajemství
Register machine je pouze mechanismus, který manipuluje s čísly v registrech podle pravidel
definovaných programem. Hodnota v registru nemá "vnitřní" význam; místo toho je její význam
stanoven tím, jak je použita v rámci konkrétního programu.
Například, pokud máme program, který sčítá dvě čísla, číslo v jednom registru může reprezentovat
jedno z těchto sčítaných čísel. Ve druhém programu, který řeší nějakou úplně jinou úlohu, například
vyhledávání největšího společného dělitele (NSD), by toto samé číslo v registru mohlo mít úplně jiný
význam, třeba jeden z čísel, pro která hledáme NSD.
To je podobné jako v programovacích jazycích, kde hodnota uložená v proměnné získává svůj význam v
kontextu konkrétního algoritmu nebo programu. Tento bod zdůrazňuje, že "smysl" nebo "význam" dat v
systému je závislý na tom, jak jsou tato data interpretována v rámci vyššího výpočetního procesu.
49. 3. Protože číslo v registru může znamenat cokoli, znamená
to, že register machine může být v zásadě navržen tak, aby
si "poznamenal" cokoli, aby "rozlišil" jakýkoli vzor nebo
vlastnost, kterou lze spojit s číslem - nebo s řadou čísel.
50. Protože číslo v registru může znamenat cokoli
Sedm tajemství počítačů: třetí tajemství
Například černobílý obrázek - jakýkoli černobílý obrázek, včetně obrázku této stránky - může být reprezentován
velkou bankou registrů, jedním registrem pro každý pixel, s 0 pro bílé místo a 1 pro černé místo.
Představa, že černobílý obrázek může být reprezentován sadou registrů, kde každý registr odpovídá jednomu
pixelu, je způsob, jakým může register machine "rozlišovat" nebo "poznamenávat" informace na úrovni, která
přesahuje pouhou aritmetiku. Každý registr může obsahovat hodnotu 0 nebo 1, což reprezentuje bílý nebo černý
pixel, a tím se stává jedním 'bodem' ve větším obrazovém vzoru.
To zdůrazňuje, že potenciál registračních strojů není omezen na číselné operace, ale rozšiřuje se na schopnost
reprezentovat a zpracovávat širokou škálu informací. To zahrnuje i vizuální data, text, zvukové vzory atd., za
předpokladu, že lze tyto data kvantifikovat a reprezentovat číselně. Tento koncept je v souladu s Dennettovým
bodem, že registrační stroje mohou být "navrženy tak, aby si 'poznamenaly' cokoli", což dále podtrhuje jejich
univerzálnost a flexibilitu.
51. 4. Protože číslo může znamenat cokoli,
může také znamenat instrukci nebo
adresu.
52. 4. Číslo může vznamenat instrukci nebo adresu
Sedm tajemství počítačů: čtvrté tajemství
Číslo v registru můžeme použít jako symbol instrukce, například ADD
nebo SUBTRACT nebo MOVE nebo SEARCH, a jako symbol adresy
(registrů v počítači), takže do řady registrů můžeme uložit celou
posloupnost instrukcí.
Máme-li pak hlavní program (program A), který dává stroji pokyn, aby
přecházel z registru do registru a prováděl to, co mu daný registr
nařizuje, můžeme do těchto registrů uložit druhý program B. Když
spustíme stroj s programem A, první věc, kterou udělá, je, že se podívá
do registrů, které mu říkají, aby spustil program B, což následně udělá.
53. 4. Číslo může vznamenat instrukci nebo adresu
Sedm tajemství počítačů: čtvrté tajemství
Mějme Program A, který umí provádět 3 instrukce: ADD, SUB, END.
ADD přičte 1 k registru X.
SUB odečte 1 od registru X.
END ukončí program.
Program B je: [ADD, ADD, SUB, END], reprezentovaný jako [1, 1, 2, 3] (nebo jedním velkým číslem 1123).
Program A tedy přečte Program B a provede:
Přičte 1 k registru X.
Přičte 1 k registru X.
Odečte 1 od registru X.
Ukončí program.
54. 4. Číslo může vznamenat instrukci nebo adresu
Sedm tajemství počítačů: čtvrté tajemství
To znamená, že bychom mohli program A jednou provždy uložit v
centrální procesorové jednotce registračního stroje do vyhrazené sady
registrů (mohl by to být "firmware" vypálený do paměti ROM určené
pouze pro čtení) a pak použít program A ke spuštění programů B, C, D
atd. podle toho, jaká čísla vložíme do běžných registrů. Instalací
programu A do našeho registračního stroje z něj uděláme počítač s
uloženými programy.
55. 4. Číslo může vznamenat instrukci nebo adresu
Sedm tajemství počítačů: čtvrté tajemství
Program A dává našemu registračnímu stroji kompetenci věrně provádět jakékoli
instrukce, které vložíme (podle čísel) do jeho registrů. Každý možný program, který
může spustit, se skládá z řady čísel v pořadí, které bude program A konzultovat v
pořadí a provede to, co každé číslo určuje. A pokud vymyslíme systém pro
uvádění těchto instrukcí v jednoznačné podobě (například požadavek, aby jméno
každé instrukce bylo stejně dlouhé - řekněme dvoumístné), můžeme s celou řadou
čísel, která tvoří program B, zacházet řekněme takto,
86, 92, 84, 29, 08, 50, 28, 54, 90, 28, 54, 90 jako jedno velké dlouhé číslo:
869284290850285490285490
56. 4. Číslo může vznamenat instrukci nebo adresu
Sedm tajemství počítačů: čtvrté tajemství
Toto číslo je jak jedinečným "jménem" programu B, tak i samotným programem, který je
po jednotlivých krocích vykonáván programem A. Dalším programem je program
28457029759028752907548927490275424850928428540423, a další je
89082964724902849524988567433904385038824598028545442547
ale většina zajímavých programů by měla mnohem, mnohem delší názvy, dlouhé miliony
číslic. Programy, které máte uložené ve svém notebooku, například textový procesor a
prohlížeč, jsou právě takovými dlouhými čísly, dlouhými mnoho milionů (binárních) číslic.
Program o velikosti 10 megabajtů je řetězec osmdesáti milionů nul a jedniček.
57. 4. Číslo může vznamenat instrukci nebo adresu
Sedm tajemství počítačů: čtvrté tajemství
Z tohoto pohledu není rozdíl mezi daty a programem.
58. 5. Všem možným programům lze přiřadit jedinečné
číslo jako jméno, které pak lze považovat za
seznam instrukcí, jež má univerzální stroj provést.
59. Univerzální stroj
Sedm tajemství počítačů: páté tajemství
Univerzální Turingův stroj je zařízení s programem A (natvrdo
zadrátovaným, chcete-li), které mu umožňuje "přečíst" svůj program B
z papírové pásky a pak tento program vykonat s použitím čehokoli
jiného, co je na pásce jako data nebo vstup pro program B. Hao
Wangův registrační stroj může vykonat jakýkoli program, který lze
redukovat na aritmetiku a podmíněné větvení, a stejně tak Turingův
Turingův stroj.
60. Univerzální stroj
Sedm tajemství počítačů: páté tajemství
Jedinečné "číslo" každého programu je zde klíčové, protože funguje jako
identifikátor toho, co program dělá. V teoretickém modelu můžete toto
číslo interpretovat jako něco podobného ke QR kódu nebo čárovému
kódu v reálném světě. Každý QR kód vám poskytne určitou informaci
nebo funkci, pokud jej naskenujete pomocí odpovídajícího zařízení. Ve
stejném duchu, jedinečné "číslo" programu v Turingově stroji nebo
Wangově registračním stroji určuje, co se stane, když program spustíte.
61. 6. Všechna vylepšení počítačů od doby, kdy Turing
vynalezl svůj imaginární stroj s papírovou páskou, jsou
prostě způsoby, jak ho zrychlit.
62. Všechna vylepšení počítačů…
Sedm tajemství počítačů: šesté tajemství
Například John von Neumann vytvořil architekturu prvního seriózního
pracovního počítače, a aby ho zrychlil, rozšířil okno nebo čtecí hlavu
Turingova stroje z 1 bitu na mnoho bitů najednou. Mnoho raných
počítačů četlo 8bitová "slova" nebo 16bitová "slova" nebo dokonce
12bitová slova.
63. Všechna vylepšení počítačů…
Sedm tajemství počítačů: šesté tajemství
V tomto bodu Dennet zdůrazňuje, že ačkoliv moderní počítače mohou být výrazně rychlejší a mají
více funkcí než Turingův teoretický model, základní výpočetní schopnosti jsou v podstatě stejné.
Turingův stroj je univerzální model výpočtu; to znamená, že v teorii je schopen vykonat jakýkoli
výpočet, který je proveditelný na jakémkoliv moderním počítači.
Když Turing navrhl svůj stroj, definoval tak teoretické limity toho, co je výpočetně možné. Od té doby
se technologie vyvíjela v oblastech jako rychlost procesorů, kapacita paměti, grafické schopnosti
atd., ale tyto vylepšení jsou v podstatě jen optimalizacemi, které zrychlují procesy, které by teoretický
Turingův stroj mohl vykonat, byť mnohem pomaleji.
Je to podobné jako kdybychom porovnávali první automobil s moderním sportovním autem. Oba
mají čtyři kola, motor a schopnost přepravovat osoby z místa A do místa B. Moderní auto je
rychlejší, pohodlnější a bezpečnější, ale v základním principu "přepravy" se nic nezměnilo. Taková je
i povaha vylepšení v počítačové technologii od dob Turinga: veškerá vylepšení jsou vlastně způsoby,
jak zrychlit nebo optimalizovat to, co bylo již teoreticky možné od počátku.
65. Nejsou žádná tajemství…
Sedm tajemství počítačů: sedmé tajemství
Tento bod je ve své podstatě velmi optimistický a předpokládá, že veškeré
"problémy" nebo "výzvy" v oblasti výpočetní teorie nebo praxe jsou otázkami
optimalizace, efektivity nebo implementace, nikoliv zásadního omezení nebo
nového paradigmatu. Je to silné prohlášení o univerzálnosti a úplnosti našeho
současného teoretického rámce pro pochopení výpočtů.
Je však třeba poznamenat, že i když to může být pravda z hlediska klasického
pojetí výpočtu, stále existují otázky o tom, jak tato tradiční rámce vztahují k
novým formám výpočtu, jako je kvantový výpočet, neuromorfické výpočty a další,
které by mohly v budoucnu posunout naše chápání výpočetních možností.
67. Další odkazy
Intuition Pumps and Other Tools for Thinking
https://www.youtube.com/watch?v=4Q_mY54hjM0
RodRego - Register Machine Simulation (Ver 1.3)
https://sites.tufts.edu/rodrego/