Vyšlo v týdeníku Computerworld č. 6/94,
Vytištěno z adresy: http://www.earchiv.cz/a94/a406c501.php3

Od tkalcovského stavu k von Neumannově koncepci

Tento článek vyšel v tzv. tématu týdne v CW 6/94, jako první ze série článků věnované prvopočátkům výpočetní techniky.

Pomůcky, které by jim usnadnily provádění nejrůznějších numerických výpočtů, si lidé vyráběli od nepaměti. Jednou z nejstarších forem byl tzv. abakus (na východ od nás dodnes známý spíše jako ščot), po kterém následovaly dokonalejší pomůcky typu logaritmických pravítek, mechanických sčítaček, násobiček a jiných kalkulátorů. Stále to však byly jen pasivní pomůcky, které prováděly jednotlivé úkony na bezprostřední pokyn člověka (či přímo pod jeho řízením), ale samy si nedokázaly volit další pokračování či další akce. Ty jim opět musel předepisovat člověk, který se tak musel sám starat o to, čemu se dnes říká řízení (anglicky: control).

První formou samočinného řízení na základě předem připraveného programu (programového řízení) nejspíše byly různé hrací mechanismy (hrací skříňky, skříně, flašinety apod.) ze 14. století, které měly k dispozici předem zaznamenanou hudební skladbu, a pak ji bez přímé lidské účasti reprodukovaly.

1724 - programové řízení (B. Bouchon)

S myšlenkou využít programové řízení k něčemu praktičtějšímu, než jen k zábavě, přichází v roce 1724 B. Bouchon, který použil děrnou pásku pro řízení tkalcovského stavu. O významné zdokonalení programově řízeného tkalcovského stavu se v roce 1804 postaral francouz Joseph-Marie Jacquard (1752-1834), který také nahradil děrnou pásku děrnými štítky. Tím výrazně přispěl k doslovné revoluci ve francouzském textilním průmyslu, který již v roce 1812 používal 11000 Jacquardových tkalcovských stavů. Nebyly to sice žádné počítače, ale myšlenka programového řízení byla na světě a ukázala, že se hodí i pro víc, než jen pro zábavu.

1833 - programování a počítač, řízený programem (Ch. Babbage)

S myšlenkou použít programové řízení pro postupné provádění složitějších numerických výpočtů přichází Charles Babbage (1791-1871), který se snažil sestrojit univerzální počítací stroj. Měl se jmenovat Analytical Engine, měl být pohánen parním strojem, být řízen programem na děrných štítcích, a měl být schopen měnit další průběh výpočtu v závislosti na výsledku prováděných operací. Ačkoli na něm Ch. Babbage pracoval téměř čtyřicet let (od roku 1833), nepodařilo se mu jej dokončit (protože jeho realizace se ukázala být nad tehdejší technické možnosti).

Kromě nedokončeného Analytical Engine však Babbage lidstvu zanechal koncepci počítače řízeného programem, obohacenou nejen o možnost podmíněných a nepodmíněných skoků, ale také o princip podprogramů. Za konkrétní autorku těchto dvou posledních myšlenek, a současně s tím i za prvního programátora (resp. programátorku) v historii je považována blízká spolupracovnice Ch. Babbage, lady Augusta Ada, hraběnka z Lovelace (1815-1853), dcera lorda Byrona. Podle ní pak také byl pojmenován jeden z moderních programovacích jazyků - jazyk ADA.

1854 - Booleova algebra (George S. Boole)

Obrovský rozvoj počítačů ve druhé polovině 20. století byl podmíněn nejen rozvojem nejrůznějších výrobních technologií, ale také pokrokem v teoretických disciplínách, které poskytly potřebný aparát pro navrhování, vývoj, ladění a další související činnosti.

Jednou z disciplín, které se v tomto směru uplatnily nejvíce, je i matematická logika. V roce 1854 přišel anglický logik George S. Boole (1815-1864) s takovým modelem matematické logiky, ve kterém vystačil jen se třemi základními operátory (and, or a not), a s jejich pomocí dokázal z jednotlivých výroků sestavovat složitější formule stejným způsobem, jakým se v matematice (konkrétně v algebře) sestavují matematické vzorečky. Svou logiku pak mohl formálně vybudovat jako algebru, které se dodnes říká Booleova algebra.

George Boole jistě netušil, že se jeho algebra stane základním teoretickým aparátem pro modelování kombinačních obvodů číslicových počítačů. Netušil také, že technikům se budou nejlépe dařit takové konstrukční prvky, které budou mít jen dva možné stavy, a kterým tedy bude odpovídat taková Booleova algebra, která má právě jen tyto dva prvky (zatímco George Boole ji navrhl pro obecný počet prvků, nejméně však jako dvouprvkovou).

Význam Booleovy algebry jako jeden z prvních ocenil William S. Jevons (1835-1882), který sestrojil mechanický stroj, provádějící logické operace právě na bázi Booleovy algebry. Ani on však netušil, že jednou zvítězí na celé čáře algebra dvouprvková - sám používal čtyřprvkovou Booleovu algebru.

Tím, kdo poprvé ukázal na souvislost dvouprvkové Booleovy algebry s číslicovými obvody, byl Claude Shannon. To ovšem bylo až v roce 1937. Mezitím se musela zrodit ještě jedna velmi důležitá myšlenka, která si vynutila používání právě dvouprvkové Booleovy algebry.

1919 - dvoustavový klopný obvod (Eccles a Jordan)

Na samém počátku 20. století došlo k základnímu zlomu v technologiích: v roce 1904 sestrojil angličan J.A.Fleming první diodu, a v roce 1906 Američan Lee de Forest první triodu.

Všechny elektronky jsou ale v zásadě analogovými součástkami, které pracují s analogovými veličinami (elektrickým proudem a napětím). Například trioda je nejjednodušší zesilovací prvek, a jako taková se začala používat především v nejrůznějších zesilovačích. Teprve v roce 1919 však přichází dva američané (W.H.Eccles a F.W.Jordan) na myšlenku zapojit dvě elektronky "proti sobě" takovým způsobem, aby se navzájem udržovaly v rovnovážném stavu. Ukázalo se dokonce, že toto jejich zapojení má rovnovážné stavy dva, a že je možné mezi nimi přecházet.

Tím se zrodil první tzv. klopný obvod (anglicky: flip-flop) se dvěma rovnovážnými stavy, který již ve svém názvu nese možnost "překlápění" (to flip) obvodu z jednoho stavu do druhého. Díky tomu, že každý z obou možných stavů klopného obvodu je rovnovážný, obvod v něm dokáže "vydržet" libovolně dlouho, dokud není vnějším popudem přinucen "překlopit se" do druhého stavu (a samozřejmě pokud je neustále napájen).

Dva možné stavy, ve kterých se klopný obvod může nacházet, pak mohou reprezentovat dvě různé diskrétní hodnoty - například dvě logické hodnoty (ano-ne), dvě číslice (např. 0 a 1) apod. Už tušíte, proč jsou dnešní počítače dvojkové, neboli binární?

1936 - abstraktní model počítače (Alan Turing)

V roce 1936 vydává anglický matematik Alan Mathison Turing (1912-1954) zásadní článek "On computable Numbers ...", ve kterém definuje abstraktní model číslicového počítače - tzv. Turingův stroj. Tím poskytuje základní teoretický aparát pro vědeckou disciplínu (tzv. teoretickou informatiku, theoretical computer science), která se spíše než praktickými otázkami a aktuálními schopnostmi zabývá potenciálními možnostmi počítačů - tím, co počítače mohou někdy dokázat, co z principu nedokáží, v jakém čase co dokáží apod.

Tentýž Alan M. Turing později formuluje další zásadní myšlenku, zaměřenou na řešení otázky, která již tehdy lidstvo trápila: jak poznat, zda nějaký stroj (míněno: počítač) je inteligentní? Turing navrhl podrobit jej testu - nechat jednoho člověka v roli tazatele klást otázky dvěma respondentům, které nemá možnost vidět. Jedním z nich bude člověk, a druhým počítač. Pokud člověk-tazatel nedokáže podle jejich odpovědí rozlišt, který z respondentů je člověk a který je stroj, pak je možné tento stroj považovat za inteligentní. Do dnešní doby však ještě žádný počítač neprošel tímto tzv. Turingovým testem.

1937 - základní aparát pro navrhování číslicových obvodů (Claude Shannon)

V roce 1937 obhajuje 21-letý Claude E. Shannon na MIT diplomovou práci, ve které poprvé ukazuje na parallelu mezi dvouprvkovou Booleovou algebrou a tzv. kombinačními obvody, které jsou základním kamenem číslicových počítačů. Shannon ukázal, že funkci libovolného kombinačního obvodu lze popsat formulí Booleovy algebry, a že naopak libovolnou formuli Booleovy algebry lze implementovat ve formě kombinačníhbo obvodu.

Tento zásadní objev pak umožnil použít pro navrhování kombinačních obvodů již tehdy poměrně propracovaný aparát Booleovy algebry, a vybudovat systematické metody návrhu kombinačních (i sekvenčních) obvodů. Jedním ze zajímavých důsledků paralely mezi kombinačními obvody a Booleovou algebrou bylo například zjištění, kolik různých druhů základních "stavebních kamenů (tzv. logických členů) je třeba k vytvoření libovolného kombinačního obvodu: v Booleově algebře existují dva různé operátory (tzv. spojky), z nichž každý sám o sobě stačí na sestavení libovolné formule v Booleově algebře. Vzhledem k paralele s kombinačními obvody toto znamená, že i pro sestavení libovolného kombinačního obvodu stačí mít k dispozici v dostečném množství jen jediný druh "součástky" (tzv. logické členy NAND, nebo logické členy NOR).

Claude Shannon se ovšem nezasloužil jen o aplikaci Booleovy algebry při navrhování kombinačních obvodů. Častěji je vnímán spíše coby zakladatel teorie informace jako disciplíny, která se zabývá přesnou kvantifikací objemu informací, přenášených sdělovacími kanály, efektivností využití těchto informací atd..

Jedním z bezprostředních a velmi praktických důsledků Shannonovy práce na tomto poli bylo i stanovení závislosti mezi šířkou přenosového pásma a maximálním objemem "užitečné" informace, který je možné po tomto kanálu přenést při dodržení určité minimální kvality přenášeného signálu (odstupu signálu od šumu). Výsledek je a navždy bude noční můrou všech výrobců telefonních modemů: říká totiž, že po komutovaném telefonním okruhu s přenosovým pásmem 300 až 3400 Hz nelze v principu dosáhnout vyšší přenosové rychlosti, než cca 30 000 bitů za sekundu (bez případné komprese).

1945 moderní architektura počítače (John von Neumann)

První počítače v dnešním slova smyslu se objevují až v průběhu druhé světové války a těsně po n. V té době pak také zcela zákonitě začínají krystalizovat představy o tom, jak by počítače měly být konstruovány a jak by měly fungovat.

Největší vliv na utváření těchto představ měly týmy odborníků, které pracovaly na vývoji počítačů v USA - zejména pak skupina, která na univerzitě v Pennsylvánii připravovala počítač ENIAC (Electronic Numerical Integrator and Computer). Významným momentem v práci této skupiny byl okamžik, kdy se k ní v roce 1944 přidal americký matematik maďarského původu John von Neumann (1903-1957), jehož myšlenky práci celého týmu výrazně ovlivnily. Ještě v průběhu práce na počítači ENIAC (který byl dokončen v roce 1946) začala vznikat koncepce ještě dokonalejšího počítače (posléze nazvaného EDVAC, od: Electronic Discrete Variable Automatic Computer). Tato představa byla záhy zveřejněna - v článku "First draft of a report on the EDVAC", vydaném v roce 1945, a během série přednášek, které John von Neumann a jeho spolupracovníci uspořádali na univerzitě v Pennsylvánii (v roce 1946). Dodnes je tato představa, či spíše soustava myšlenek a názorů na to, jak by počítače měly být konstruovány a jak by měly fungovat, známa jako tzv. von Neumannova koncepce, či von Neumannova architektura.

Podstatu a hlavní myšlenky von Neumannovy architektury shrnuje box "Von Neumannova architektura"