Zapomenutá revoluce

Lidé se předhánějí ve vymýšlení nejrůznějších pitomostí ve snaze přijít s něčím novým. A často se zapomínají dívat na to, co vymysleli jiní před nimi, jestli to náhodou nevymysleli tehdy líp.
Povím vám příběh, a hádejte, jestli je pravdivý…

.On to v podstatě nebyl programátor. Byl to fyzik.
Už na fakultě ale potřeboval zpracovat na počítači nějaké astronomické rovnice, počítat efemeridy a pozice satelitů. Aby se vyhnul nutnosti rekompilovat program pro každý satelit s novými parametry znovu a znovu, napsal si krátký interpret rovnic.
A tím příběh začíná.
Když pak po škole a získání diplomu z fyziky pracoval na lineárním urychlovači, optimalizoval stávající program pro řízení paprsku elektronů s použitím metody nejmenších čtverců. K ovládání vlastního programu v Algolu použil pomocný program napsaný ve stále vylepšované verzi svého interpretu.
U počítačů se mu zalíbilo, a tak se naučil Fortran, Algol, Jovial, PL/I a několik assemblerů – a stal se programátorem na volné noze (krom jiného vytvořil třeba překladač z Fortranu do Algolu). A pak se v jednom malém městečku dostal k minipočítači IBM 1130.
Nebyl až tak mini jako jiné vznikající minipočítače té doby, ale měl 16bitový procesor, 8 K RAM, disk a hlavně grafický displej a překladač Fortranu.
Napsal si k němu nejdříve vlastní assembler – a když už byl v tom, napsal ten assembler ne v assembleru, ale ve svém vlastním interpretru. Když už měl interpret na počítači, použil ho i k pořádné práci. Zatímco ve Fortranu se dal vygenerovat statický 2D obraz, v tomhle interpretu se daly díky jeho rychlosti psát programy generující 3D obraz. Pochopitelně animovaný!
Jen tak propobavení přeportoval do svého jazyka i hru Spacewar a zkusil z Algolu přeportovat svůj dřívější šachový program. Ten se tím zrychlil, zkrátil a zjednodušil.
Zde už dosud bezejmenný interpretr dostal své jméno. A ano, právě počítač IBM 1130 hodně ovlivnil to, jak se jazyk začal jmenovat.
Postupně začal svůj jazyk používat všude, kde to bylo jen trochu možné.
Vadilo mu, že existuje strašná spousta vrstev, které oddělují uživatele od počítače. Používá se assembler pro popis kompilerů a operačního systému, skriptovací jazyk operačního systému pro řízení procesů, jazyk překladače pro popis aplikací a aplikační programy zase svůj jazyk.
Uživatel je nemusí znát, ani o nich vědět, ale jsou tu. Hotové babylónské zmatení jazyků.
Proto používal svůj jazyk. Jako operační systém. Jako assembler. Pro programování aplikací. Při běhu aplikace.
Byla jen jediná vrstva.
Na jednom konci komunikující přímo s uživatelem, na druhé straně přímos počítačem. Bez mezičlánků. Při zachování maximální jednoduchosti.
Dokonce i nové verze jazyka vznikaly samy na sobě.
Pak přišlo řízení jedenáctimetrového radioteleskopu. K dispozici byly dva už tehdy ne zcela moderní minipočítače s 16 a 32 K paměti, spojené sériovou linkou. programovací jazyky přímo pro ně k dispozici nebyly. Výrobce nabízel cross-assembler a cross-compiler Fortranu pro sálové počítače, na kterých se program napsal a zkompiloval, zkompilovaný se pak přenesl do minipočítače. Nutno říct, že zvlášť program přeložený ve Fortranu se do 16 K paměti většinou nevešel.
Výsledkem práce našeho fyzika bylo řízení pohybu radioteleskopu v reálném čase podle pohybu zaměřeného objektu, se současně probíhajícími měřeními, analýzou a záznamem dat, a současně mohla obsluha nerušeně hrabat pomocí interaktivního terminálu v datech už dříve naměřených a archivovaných na pásce. Oba počítače se podílely na všech dílčích úlohách.
Což bylo v době, kdy DEC teprve oznamovala vznik počítače PDP-11 a uvedení RTOS-11 s jakousi aspoň rudimentární podporou běhu některých aplikcí na pozadí, naprostá bomba.
Pak šéfa observatoře napadlo, protože náš programující fyzik bydlel daleko, najmout na částečný úvazek někoho na údržbu systému. Sehnal holku, systémovou analytičku, na místní univerzitě. Ta, když zjistila, že takto kritický systém je napsaný pomocí potrhlých zkratek, jimž rozumí jediný člověk na světě, zareagovala navykle a přirozeně:
Všechno přepsat do Fortranu!
Zjistila ale, že na to není ani čas, ani peníze, ani dostatek paměti v počítači. Jak to tam ten ďábel všechno nacpal?
Tak začala systém aspoń pořádně dokumentovat, aby se v něm někdo vyznal.
Za dva měsíce si všimla podivné věci: navzdory neuvěřitelně primitivním minipočítačům, podivnosti jazyka, a nepřítomnosti místních expertů a dalších zdrojů, dokázala během několika hodin strávených jednou týdně u počítače na observatoři udělat víc práce, než za zbytek týdne s neomezeným přístupem k sálovým počítačům!
Okamžitě univerzitu opustila a další část života věnovala jazyku, který objevila.
Systém řízení teleskopu, kde původní dva minipočítače s děrovačkou pásky nahradilo PDP-11 s diskem a čtyřmi dalšími terminály pro prohlížení naměřených dat navíc, byl v provozu celých 20 let.
Astronomové celého světa posílali žádosti o kopie programu, a jazyk se stal oficiálním programovacím jazykem Mezinárodní astronomické společnosti. Sám náš programující fyzik ho přeportoval na 18 různých procesorů!
Systém se nevyužíval jen k řízení radioteleskopů v reálném čase.
Každý, kdo zná Fortran, si pamatuje, jak je háklivý na formálnost zápisu. Kompilátor vám klidně odmítne zdroják třeba proto, že nemáte příkazy zarovnané do správného sloupce (pokud toto nevíte, tak neznáte Fortran). Proto náš hrdina vytvořil volný zápis sledu příkazů. Ale nebyly to obyčejné příkazy. Byla to slova. A slovo, to mohlo být skoro cokoliv. Třeba i objekt. Tehdy sice objektové programování nefrčelo, a náš programující fyzik ani neznal programátorské trendy poslední doby, ale naše holka z univerzity ho hned, jak vyšly práce od Dijsktry, konfrontovala se strukturovaným programováním. Zjistili, že jazyk jeho používání intuitivně podporuje. Nicméně, za slova bylo možno schovat i celé objekty a manipulovat s nimi, takže léta před tím, než se objektově orientované programování objevilo v jiných jazycích, jako byla Modula či Smalltalk, bylo intuitivně zakomponováno do tohoto systému.
Do jazyka přibyl i systém ovládání disků. Když už byly disky, nejpřirozenějším způsobem, jak je využívat, bylo přistupovat k nim jako k virtuální paměti. Když už bylo k dispozici tolik paměti,byť jen na discích, přibyl databázový engine. Samozřejmostí byl multitasking a podpora více uživatelů.
Databázový engine byl prvně nasazen v prostředí, kde 32 terminálů komunikujících s 300 MB databází vznášelo 100 000 transakcí denně (přitom původní požadavek byl 40 000). Ani poté, co se databáze rozrostla na 600 MB a počet terminálů na 64, neklesla doba odezvy pod sekundu!
Objektové programování se objevilo v systému zpracování obrazové informace pro NASA. A to jak zapouzdření (objekt “obrázek” měl metody, které na něj bylo možné aplikovat), tak dědičnost (nové obrázky mohly dědit vlastnosti předchozích obrázků stejné třídy).
To umožnilo provádět standardizované operace na datech, uložených na rozličném hardware. Taková fotografie z NASA měla 512 kB, tedy tolik, kolik paměť tehdejších počítačů zdaleka nedosahovala. Přesto se dařilo úspěšně a téměř v reálném čase provádět zostřování nebo ořezy.
V řízení vědeckých přístrojů dosahoval systém neuvěřitelného výkonu, přenosy dat na samplerate i 20 kHz – což nebylo tak daleko od taktovacího kmitočtu tehdejších počítačů.
Na mezinárodním letišti krále Khaleda v Saúdské Arábii řídilo 500 počítačů (9x PDP, 378x IBM PC jako terminál, 320 jednočipů na kontrolních stanovištích, s celkem 36 000 senzory) s tímto systémem veškerý provoz letecký i odbavování. O obrovské produktivitě použitého jazyka i svědčí to, že tak obrovskou aplikaci zvládlo 15 programátorů.
A to vše v letech a s použitím hardware, které by si o výkonu dnešních strojů mohlo tak akorát nechat zdát.
Federal Express získal cenu kvality za svůj centralizovaý systém sledování zásilek a 50 000 kurýrů pomocí přenosných zařízení pro sběr dat.
Typická instalace aplikace u klienta probíhala tak, že jako první nastoupil náš programující fyzik, vyhodil původní operační systém, vzal několikasvazkovou originální dokumentaci a vyhodil ji. Ponechal na místě úzký sešit se základními příkazy systému. Zkompiloval interpretační jádro systému – které se skládalo v průměrné instalaci ze tří instrukcí! A k němu základní slovník povelů. Celá věc se mohla vejít do 1 kB paměti.
Všichni by čekali, že už systém jednou napsaný je, takže jen přijde a zkompiluje. Ale on, věčně nespokojený, neváhal celou instalaci smazat a začít ji psát zase od začátku, znovu a lépe! Čímž dělal značné starosti té holce z univerzity, která se mu mezitím starala o marketing a nemohla si býýt nikdy jistá tí,jak dlouho bude instalace trvat, a díky jeho vytrvalému přepisování kódu ani tím, zda to, co naučila zaměstnance klienta v pětidenním školení, bude v definitivní verzi opravdu fungovat (během školení bylo nutné si každý den předem všechno
ozkusit).
Teprve po skončení jeho instalačního řádění, což si většinou vyžádalo jeden až dva týdny, nastoupilo dotvoření samotné aplikace. Instalace systému musela proběhnout co nejrychleji, protože koneckonců zákazníkovi nešlo o programovací jazyk, ale o tu aplikaci, a bylo mu celkem jedno, na čem to poběží, zvlášť, když to poběží nad očekávání rychle!
Časem se ale objevily mikropočítače a otázka, co s nimi.
Většinou to byly systémy s vlastní ROMkou, bez disketových jednotek, jen s kazeťákem, které si doma lidé připojovali k televizi, a pokud na nich zrovna nehráli hry, pokoušeli se programovat v znovuobjeveném Basicu.
Jen na jednom z nich se tento jazyk objevil přímo místo systému. Na ostatních to byl prostě jen další program. Zmizel multitasking, zmizelo víceuživatelské prostředí, vypařily se objekty a vytratil se i databázový engine. Míísto instalace u klienta přímo na míru přišel prodej hotových “krabic se softwarem”. Ale o tento jazyk už jaksi nebyl ze strany “obyčejných lidí” zájem.
Přesto se s ním stále setkáváme. Na palubě raketoplánu. V tiskárnách. Terminálech pro platební karty. Tvoří základ některých firmwarů. Jsou od něj odvozené bytekódy moderních objektových jazyků. A pokud chcete poslat do vesmíru nějakou sondu, stále není k dispozici lepší prostředek, jak ji efektivně naprogramovat. Snad jen assembler.
Ale přiznejme si, tento jazyk je přeci jen přehlednější, než strojové instrukce. A občas bývají programy v něm vytvořené i kratší, než programy v assembleru!

Znalí už vědí, o čem přesně mluvím, nebo zda si jen bohapustě vymýšlím.