Padesát let kolem počítačů

Svět se nám mění tak rychle, že se člověk stává pamětníkem, ani neví jak. Autoři této knížky soustředili spoustu materiálu o tom, jak a kdy počítače vznikly, a popsali významné etapy jejich vývoje. Jenže pro nás pamětníky je to i kus života, něco, co jsme krok za krokem sami zažívali a dokonce dělali – i když s jistým zpožděním za tím velkým světem za mořem. Začátky domácích počítačů jsem zpovzdálí sledoval od poloviny padesátých let, četl sborníky Laboratoře profesora Svobody a ucházel se tam i o místo mechanika.

Ale první počítač, na který jsem si mohl v roce 1964 sáhnout, se jmenoval ŘIP 1000 a vyvíjel ho v Karlíně Jiří Škarda. Byl to binární paralelní řídicí počítač, dost inspirovaný PDP 8, a s Vláďou Navrátilem jsme k němu přišli jako první „programátoři“. V uvozovkách proto, že jsme měli nejdřív navrhnout instrukční kód a pomoci psát jeho mikroprogramy. To byla pěkná úloha, stroj byl ovšem „ve stavu zrodu“, neměl žádné periferie a první programy (bootstrap) se musely do paměti ukládat bit po bitu baterkou. Když člověk sáhl vedle, musel všechno smazat a začít znovu.

Proti tomu bylo programování Eposu vyloženě komfortní: instrukce se psaly číselně, včetně adres, děrovaly dekadicky do štítků a občas se dalo i něco vytisknout. Bootstrap měl dvě instrukce: 190 505 000 000 a 010 475 005 000. Ty musel člověk umět a nadatlovat z panelu do registrů. Zaváděcí program uměl adresy „relokovat“, to jest přičítat k nim počáteční adresu, a brzy jsme přešli na jednoduchý assembler, jazyk symbolických adres a maker, který jsem si ovšem musel nejdřív sám ve strojovém kódu napsat. Měl 2000 štítků, a tak se právě vešel do jedné krabice. Zato se mi assembler tak zalíbil, že jsem u něj zůstal až do konce své programátorské kariéry v roce 1990. Jenom melouchy jsme později psávali v Cobolu nebo v Pascalu, měli jsme ovšem pocit, že už to není „opravdové programování“ a že se procesorem i pamětí nestoudně hýří. Člověk také neviděl „dovnitř“, a když se program… (řekněme slušně „odmlčel“), nebyl ani dump k ničemu.

Další pokrok byl program POP, jakýsi zárodek operačního systému, který umožňoval programy zavádět, spouštět a trochu i sledovat („krokovat“) z klávesnice psacího stroje. To byla báječná věc: když člověk po spuštění zjistil, že v programu je něco špatně (což skoro vždycky je), mohl instrukci přímo v paměti přepsat – samozřejmě číselně –, a dokonce se program dal i „pečovat“ (to patch), vkládat instrukce, které chyběly. Psaní programů tak bylo už docela komfortní, o to horší to však bylo s laděním. To je v assembleru nesnáz, protože se v něm prakticky nedá psát bez chyb a překladač je zpravidla nechytí. Aplikační programy se dají zkoušet na testových datech, ale chyby systému se hledaly ve stále větších „dumpech“, číselných výpisech celé paměti, když se systém „kousnul“ čili „zadřel“ a nic jiného s ním udělat nešlo. Američané tomu trefně říkali post mortem. Dnes to Windows dělají po webu – pokud se nekousnou samy – a ještě člověku poděkují. Později měl typický dump bratru sto až dvě stě stránek, sto tisíc hexadecimálních číslic bez ladu a skladu a při jeho „rozlejzání“ se teprve projevil skutečný mistr. V osmdesátých letech to byl nebožtík Vilda Labský, který dokázal rozlézt i pět, deset zákaznických dumpů za den, zjistit chybu a vymyslet příslušné peče, pro něž už bylo v programech vynechané místo. Protože zákazníků bylo pár stovek, měl o zábavu postaráno.

Vrcholem „opravdového programování“ byly ale po mém soudu přece jen mikroprogramy. Byly vcelku krátké – celá EC 1021 měla 6k slov mikroprogramové paměti, ovšem s délkou slova 72 bitů. Bylo to něco jako varhany s několika manuály: programátor tu přímo dosáhl na různá ta hardwarová střeva, basy, hradla, sčítačku, šifty, registry, čítače a ovšem paměť, které se programovaly paralelně. Protože na mikroprogramech závisela rychlost počítače, musel si s nimi člověk vyhrát a šetřit každý krok. Když se to povedlo, bylo to něco jako báseň v bitech. Feritová paměť byla proti mikroprogramu pomalá a operace se musely rozvrhnout do několika kroků, třeba zadat adresu, objednat, počkat a číst. Psalo se v hodně primitivním assembleru a žádné velké ladění si člověk nemohl dovolit. Chtělo to dlouho a přesně přemýšlet, pečlivě psát, pak nějaká ta simulace – a dost. Hotový mikroprogram se zašil do feritové matice a každá oprava by byl už pořádný průšvih. Zato byla EC 1021 s našimi mikroprogramy o 40 % rychlejší, než když je předtím napsali hardveráři.

Vývoj počítačů v pražském VÚMS začal – jak už víte – z podnětu Antonína Svobody, který si z USA přivezl velké zkušenosti z válečné doby. Jako reemigrant to neměl lehké a své spolupracovníky si musel teprve vychovat. Svobodův vědecký formát a zkušenosti znamenaly pro ústav nesmírně mnoho, jeho nesporná autorita však zároveň vedla k určité jednostrannosti. Svoboda viděl těžiště v logickém návrhu, v algoritmech a v kódech, kdežto technologickou stránku asi podceňoval – spolehlivost hardwaru rozhodně vždycky byla Achillovou patou našich počítačů. Důmyslný a složitý logický návrh, redundantní kódy a podobné věci dokonce tuto slabinu ještě prohlubovaly: dekadické kódování spotřebovalo mnohem víc paměťových prvků než binární a geniální algoritmus dělení, složitý instrukční kód a další vymyšlenosti dělaly počítač sice zajímavým, provozní spolehlivosti při dané technologické základně ale nepomohly.

Druhou stránkou stejného problému bylo Svobodovo přesvědčení, že jeho počítače vlastně žádný software nepotřebují. Dekadický kód je čitelný, Epos měl dokonce i hardwarové zařízení pro paralelní běh pěti programů, takže jakýpak software? Až když se po roce 1960 objevil jazyk Algol, začala skupina matematiků usilovně programovat překladač. Psali ho ale v číselném kódu a v absolutních adresách a teprve když napsali a vyděrovali nějakých dvacet krabic děrných štítků, začalo jim svítat, že ho nikdy nerozchodí. Svobodovo zaujetí pro dekadické počítače a dekadické Powersovy děrné štítky z Aritmy také komplikovaly práci s alfanumerikou, s nečíselnou informací, která je dnes daleko důležitější než ta číselná.

Přesto se Eposy (pod názvem ZPA 600) nakonec dostaly do výroby a do praktického provozu, hardware i náš software však byly deset až patnáct let za světovým vývojem. Když nás v roce 1968 „spolupráce“ RVHP donutila tuto koncepci opustit a začít kopírovat řadu IBM 360, některé z těchto jednostranností sice zmizely, teprve časem se nám ale ukazovalo, že právě IBM postupovala ve vývoji vlastně podobně. Extrémně složitý instrukční kód sice skvěle vyhovoval ambicím „opravdových programátorů“, naši technici ale neměli k dospozici americkou technologii, a tak složitost znamenala malou spolehlivost. Hezkým příkladem téhle školy byly disky IBM s formátem „count, key, data“. Na rozdíl od jiných firem, které už dělaly disky logicky co nejjednodušší, IBM si zakládala na tom, že její disky už v hardwaru „umějí“ bloky s proměnnou délkou a dokonce hledání podle klíče. To ale pozdější programování naopak komplikovalo, většina hardwarových „fíčur“ se nedala rozumně využít, zato kapacita se tím snižovala a spolehlivost jakby smet.

Když se hardware začal kopírovat podle hotových vzorů, změnila se podstatně i naše práce. Až do té doby jsme totiž začínali ladit na velmi jankovitých prototypech, které jejich tvůrci podpírali rukama nohama, „aby si to aspoň chvíli škytlo“. Díky tomu jsem ale na vlastní oči viděl také pár příkladů spontánní „umělé inteligence“. Jednou jsme takhle utíkali k prototypu MSP2, který se nečekaně právě rozběhl. Ve spěchu jsme naládovali z děrné pásky, ale to už stroji zřejmě docházel dech. Dálnopis sebou zaškubal a v posledním záchvěvu stačil napsat

p
p
p
prt

a pak se opravdu tiše …, odmlčel. Protože se mohu zaručit, že takové sdělení v programech nikde nebylo, pokládám to za nepochybný projev skutečné inteligence stroje. S přibývající spolehlivostí jí pak zřetelně ubývalo, a když jsme mohli ladit na dovezených „vzorech“, zmizela úplně. Někteří kolegové na ni však ještě dlouho spoléhali a nechodící programy tvrdošíjně „proráželi“: nemohli se smířit s myšlenkou, že by jejich program byl špatně, a pevně doufali, že na druhý nebo pátý pokus se musí rozběhnout.

Bude to pomalu patnáct let, co už u počítače sedám jen jako úplný laik, který ničemu nerozumí a jen žasne. Počítač je dnes něco úplně jiného. Například už skoro nepočítá a poslední Windows už nemají ani kalkulačku. Tím víc toho počítače píší, malují a dokonce snad hrají. První systém jsem psal pro počítač s tisíci slovy paměti, samozřejmě bez disku. MOS běhal v 16 kilobytech, DOS 3 vyžadoval aspoň 64k a virtuální paměť měla fantastických 16 megabytů – samozřejmě ryze virtuálních, protože na disku tolik místa nebylo. Staré „átéčko“, které už nemá ani cenu šrotu, by strčilo do kapsy všechny ty naše zázraky, gigabytový disk není dnes větší než krabička doutníků a dá se koupit v bazaru. Nikdy mu nespadnou hlavy a nikdo už ani neví, co je to vadná a náhradní stopa. To stará IBM 2311 vypadala jako statná lednička, musela mít klimatizovaný prostor a na výměnný „syreček“ se vešlo mizerných 7 megabytů. Když vystavovala hlavy, škubala sebou jako pračka při ždímání.

Jenom v softwaru jsou pořád chyby a občas zírám na něco, co by si moji kolegové nikdy nemohli dovolit. Například to, že se software před vypnutím musí „zavírat“. Co když vám vypadne proud, holoubkové? Buď to doopravdy nevadí – a pak si z nás autoři dělají legraci, anebo to vadí – a pak je to trestuhodná nedbalost, jakou by si našinec nikdy netroufl. Když nejde přečíst disketa, systém se úplně zblázní a počítač aby se pak snad dezinfikoval lysolem. Écéčko na vás, rozmazlenci. Mladší kolegové programují ve fantastických jazycích, které to za ně samy odladí, jejich programy ale nejsou podstatně kratší, než byly kdysi ty naše, a rychlost taky není úměrná závratnému výkonu procesoru. Kreslí na obrazovku pestrobarevné pohyblivé obrázky, ale když se program zacyklí, musí se vytáhnout šňůra ze zásuvky. Jako kdyby u Microsoftů pořád ještě nepochopili, co je to task management a kde musí být v systému zařazen. Třeba na to jednou také přijdou. Korunu tomu nasadil jeden editor, který se nestyděl ve třicetimegové paměti odmítnout rukopis knížky, něco kolem půl mega, že prý je too large! Hanba mluvit!

(In: Zelený, Jaroslav – Mannová, Božena, Historie výpočetní techniky. Praha: Scientia 2006)