Když v polovině čtyřicátých let minulého století začaly v počítačích elektronky nahrazovat elektromagnetická relé, znamenalo to výrazné zvýšení výkonu – rychlost prováděných operací vzrostla řádově na stovky až tisíce operací za vteřinu. Ruku v ruce s vývojem hardwaru se čím dál více ukazovalo, že dosavadní způsoby programování jsou vzhledem k rychlosti výpočtu nevyhovující. Programování bylo časově náročné a nesmírně komplikované, přičemž jeden program psaly týmy matematiků i celé týdny.
To začínalo být neúnosné a neefektivní. Programátoři, kteří sestavovali programy na základě jednotlivých strojových instrukcí (jež zapisovali v tzv. jazyku symbolických adres, ba zpočátku i v samotném strojovém kódu), museli dokonale znát nejen tyto jednotlivé strojové instrukce, ale také vlastní konstrukci počítače, jako jsou skladba registrů, způsoby adresování a výstupů či významy příznaků. Programy byly tedy sestavovány pro jeden konkrétní počítač, později v případě velkých firem, jako jsou IBM či Remington Rand, pro řadu počítačů, jejichž hardwarová specifika se nepříliš lišila.
Dnes nelze říci, koho vlastně napadlo tento pracný, časově i finančně náročný způsob programování změnit. Spíše než o nápad jednoho člověka šlo o pozvolný, ale nevyhnutelný vývoj, v němž se programování stávalo samostatnou disciplínou, čím dál více nezávislou na znalostech konkrétního počítače, pro nějž měl být program určen. Jinými slovy, zápisy elementárních operací, které se začaly používat a postupně se standardizovaly, se emancipovaly od jednotlivých strojových instrukcí a umožnily obecnější vyjádření (např. jedna instrukce strojově nezávislého jazyka představovala celou dlouhou posloupnost strojových instrukcí). Výsledek tohoto vývoje představují vyšší problémově orientované programovací jazyky, které začaly vznikat v průběhu padesátých let.
Prvním z nich, jak jsme popsali v předchozí části našeho putování, byl FORTRAN (FORmula TRANslation), vyvinutý týmem vědců, vedeným Johnem Backusem ve společnosti IBM. Krátce nato se objevily další procedurální strojově nezávislé programovací jazyky: jazyk LISP (LISt Processor), určený pro rané systémy umělé inteligence, a zejména jazyk COBOL (COmmon Business Oriented Language), který se na trh dostal v roce 1960 a záhy se stal nejpoužívanějším programovacím jazykem.
To, co znamenal FORTRAN pro numerické výpočty, představoval COBOL pro oblast obchodu a zpracování dat. Specifikaci tohoto významného programovacího jazyka vypracoval přípravný výbor, mezi jehož členy patřila Grace Hopperová, bezpochyby nejslavnější žena období počítačů první až třetí generace.
Ačkoli pro ženu nebylo nijak snadné proniknout do tak technické oblasti, jakou byl svět raných elektronických počítačů, Hopperová to nejenže dokázala, ale navíc obor programování obohatila o zásadní příspěvky: od vytvoření prvních programů pro Mark I a napsání prvního překladače pro počítač UNIVAC po vytvoření jazyka FLOW-MATIC určeného pro práci s obchodními daty, z něhož do značné míry vycházel pozdější vyšší programovací jazyk COBOL.
Testování počítače Mark I
Grace Hopperová, dívčím jménem Murrayová, se narodila v roce 1906 v New Yorku. Na otázku, kde se vzalo její nadšení pro techniku, existuje jednoduchá, byť poněkud banální odpověď. Její dědeček byl stavebním inženýrem a nejenže ji často bral na nejrůznější stavby, na nichž se podílel, ale s oblibou s ní procházel stavební plány a vysvětloval jí nejrůznější výpočty související s plánováním staveb. William Billings, autor jejího životopisu, rovněž zmiňuje příhodu, která se v rodině Murrayových dlouho vyprávěla. Když bylo Grace přibližně šest let, rozebrala všechny hodiny v rodině, aby zjistila, jak jejich mechanizmy fungují, tedy především co způsobuje, že přesně v určitý čas dokáže strojek odbít či zazvonit.
Podstatná je ale skutečnost, že v rodině se velmi cenilo vzdělání, a to i dívek, což v té době rozhodně nebyla samozřejmost. Grace měla ve škole vynikající výsledky, a protože excelovala zejména v matematice, rodiče jí umožnili pokračovat ve studiu na Vassar College, newyorské prestižní dívčí soukromé škole. Zde získala v roce 1928 titul bakaláře z matematiky a fyziky. Díky svým skvělým studijním výsledkům se navíc stala členkou sdružení premiantů Phi Beta Kappa, což jí otevřelo cestu na soukromou Yaleovu univerzitu, jednu z nejstarších a nejprestižnějších amerických univerzit.
Na Yale pokračovala ve studiu matematiky a v roce 1934 zde obhájila jakožto první žena svou doktorskou práci z matematiky. To už se jmenovala Hopperová, neboť ještě předtím, než získala doktorát, se provdala za Vincenta Fostera Hoppera. Manželství, které nebylo nijak zvlášť zdařilé, skončilo rozvodem v roce 1945, ale to předbíháme. Ještě než obhájila doktorskou práci, vrátila se do rodného New Yorku a stala se profesorkou matematiky na Vassar College, kde působila do roku 1943. Její přednášky se staly proslulými pro neobvyklé metody výuky. Aby dosáhla co nejlepšího pochopení matematiky, soustředila se zejména na její praktické využití, přitom se nebála oživovat výklad pomocí různých her, ať už to bylo házení kostkami nebo karetní hry.
Ve druhém roce války vstoupila v rámci programu dobrovolné ženské vojenské služby do armády, přesněji řečeno jakožto univerzitně vzdělaná žena se po krátkém výcviku stala důstojníkem amerického námořnictva. Ale protože měla doktorát z matematiky, byla umístěna do fyzikální laboratoře Harvardovy univerzity, kde probíhal jeden z projektů vývoje stroje, který dnes označujeme slovem počítač. Konstrukce tohoto zařízení byla umožněna díky dotacím společnosti IBM, ale zejména amerického námořnictva, jež si projekt přisvojilo po vstupu USA do války. Stojí za zmínku, že do této doby Hopperová netušila, že mohou existovat programovatelné výpočetní stroje. Jak by také mohla? To byl dosud svět pouze pro několik vyvolených.
Jak už bylo předznamenáno, šlo o programově řízený počítač, ve Spojených státech první svého druhu – neboť obdobný, ale výrazně skromnější projekt Johna Vincenta Atanasoffa zůstal pouze na půli cesty. Výjimečnost spočívala v tom, že kromě mechanických součástek se zde s úspěchem využívala elektromagnetická relé. Oficiálně neslo toto zařízení název Automatic Sequence Controlled Calculator (ASCC), ale jeho duchovní otec Howard Aiken název později zjednodušil na Harvard Mark I. Tento více než stometrový kolos pracoval paralelně v decimální soustavě, vstup dat zajišťovaly děrné pásky a děrné štítky, zatímco výstup byl řešen pomocí automatického děrovače a elektrického psacího stroje.
Grace Hopperová se účastnila testování tohoto počítače a pomáhala Aikenovi a jeho kolegům s vytvářením příslušných kódů. Ty nebyly uloženy v paměti, ale stroj si je načítal z děrné pásky. Měla čtyřiadvacet stop ve dvou sloupcích, osm stop bylo rezervováno pro „adresu odkud“ (resp. sériové číslo akumulátoru pevné paměti nebo výpočetní jednotky), dalších osm stop bylo vyhrazeno pro „adresu kam“ (tedy sériové číslo funkční jednotky, do níž mělo být zpracovávané číslo transponováno) a zbývajících osm stop bylo vyhrazeno pro operační kód. Aby matematik mohl napsat program výpočtu, musel velmi dobře znát konstrukční řešení stroje stejně jako princip jeho práce, zde se navíc jednalo o decimální soustavu, což programování ještě komplikovalo.
Práce na vytváření kódů Grace Hopperovou zcela pohltila. Tohle bylo přesně pole, kde se její matematické znalosti a schopnost přesné formulace proměňovaly v reálné výsledky. Na základě této práce napsala dokonce pětisetstránkový manuál, zřejmě vůbec první počítačový. Jeho využití ovšem spočívalo výhradně v tom, že shrnovalo zkušenosti, jež Hopperová získala při programování počítače Mark I a které brzy využila při práci s následujícími zdokonalenými stroji.
Jak zpřehlednit programování
Po válce zůstala Hopperová na Harvardově univerzitě v týmu Howarda Aikena, u něhož si americké námořnictvo objednalo další dva výpočetní stroje. Při práci na počítači Mark II, který využíval větší množství elektromagnetických spínacích prvků, se stala pamětihodná událost, jež vešla do dějin informatiky a s níž je jméno Grace Hopperové často spojováno.
Počítač Mark II, který byl řešen tak, že pracoval s binárními tetrádami, byl stejně jako jeho předchůdce využíván takřka výhradně pro armádní výpočty. Aby nedocházelo ke zbytečným prostojům, pracovaly na něm týmy matematiků na směny. Jednu z těchto směn vedla Hopperová (v té době již měla vyšší důstojnickou hodnost). Jednoho dne se během její směny začal počítač chovat podivně, ačkoli program i jeho uložení byly v pořádku. Při hledání původce chyby se ukázalo, že v kontaktu jednoho relé se zachytila malá můra neboli „bug“. Grace Hopperová to zaznamenala do protokolu o směně. Od té doby se termín „bug“, známý v elektrotechnice již od dob Edisonových, začal používat i pro počítačové chyby, ať v hardwaru nebo zejména softwaru, kde tento termín zcela zdomácněl. Že mohou počítačové programy obsahovat chyby, o tom se zřejmě poprvé zmínila Ada Byronová Lovelaceová, která v polovině 19. století připravovala „programovací kartičky“ pro Babbageův analytický stroj.
V roce 1949, když skončil kontrakt na vývoj počítače Mark III, přijala Hopperová nabídku od společnosti Eckert-Mauchy Company, první americké komerční firmy zaměřené na vývoj a prodej počítačů. Jak je z názvu patrné, jejími zakladateli byli Presper Eckert a John Mauchly, konstruktéři počítače ENIAC, prvního elektronkového programovatelného počítače na světě.
Když o rok později tuto malou firmu pohltila společnost Remington Rand, stala se Hopperová její zaměstnankyní na pozici hlavní matematičky a pokračovala v psaní kódů pro nový počítač UNIVAC I (Universal Automatic Computer), první komerčně vyráběný počítač. Řídila tým programátorů, v němž byli čtyři muži a čtyři ženy, což bylo ojedinělé. „Ženy jsou dobré programátorky,“ poznamenala Hopperová později, „jsou důslednější a mají na rozdíl od mužů více trpělivosti a schopnost dopsat program až do konce.“ Při práci na UNIVAC se zaměřila na vytvoření jazyka, který by uživateli usnadnil programování a zpřístupnil práci na počítači i těm, kdo neměli matematické vzdělání. Výsledkem činnosti týmu, jejž vedla, byl systém A-0 (neboli Arithmetic Language version 0), první programovací jazyk, který je možné označit za překladač neboli kompilátor, tedy softwarový nástroj, jehož ucelená sada instrukcí umožňuje překlad algoritmů transformovat přímo do strojového kódu.
A-0 systém byl záhy upraven i pro vylepšený UNIVAC II. Na jeho základě vytvořila Hopperová se svým týmem verzi A-2, jejíž zjednodušenou formu začala společnost Remington Rand nabízet zákazníkům pod názvem ARITH-MATIC. V programech napsaných v tomto překladači se namísto různých symbolů používaly převážně klíčová slova a sekvence slov s přesným významem, programové řádky byly očíslovány (stejně jako později v jazyku BASIC) a jednotlivé příkazy byly ukončeny tečkou jako věty v běžném textu.
Admirál v záloze
Grace Hopperová si jako jedna z prvních uvědomovala, že počítače se nebudou využívat pouze k vědeckým a armádním výpočtům, ale že se čím dál více začnou uplatňovat v podnikové sféře a administrativě. Z tohoto důvodu pracovala od poloviny padesátých let na programovacím jazyku B-0, který byl oproti dosavadním jazykům určen převážně pro zpracování dat, provádění bankovních operací, výpočtů mezd a fakturací. Tento produkt, nabízený společně s příslušným kompilátorem pod komerčním názvem FLOW-MATIC, byl zákazníky přijat velmi kladně.
Důvody byly nasnadě. Jednalo se o první programovací jazyk, v němž se používala anglická slova coby klíčová a v němž se jednotlivé instrukce podobaly jednoduchým anglickým větám, a to i v případě složitějších programů. Obsahoval navíc i příkazy, jimiž se daly ovládat jednotlivé pásové jednotky (těch mohlo být v případě UNIVAC II připojeno až šestnáct), stejně jako podporu pro tvorbu tiskových sestav.
Na konci padesátých let se Hopperová stala poradkyní šestičlenné pracovní skupiny, jež měla připravit návrh programovacího jazyka určeného pro obchodní účely. Projekt se zrodil z dohody významných počítačových firem a vládních úřadů včetně amerického ministerstva obrany. Cílem bylo vytvořit jazyk, který by vycházel ze syntaxe angličtiny, byl přehledný a snadný k naučení. Dále v něm mělo být možné napsat úlohy z oblasti obchodu a podnikové administrace.
Pracovní skupina představila první návrh již po půl roce. Ostatně měla na co navazovat – nový programovací jazyk vycházel ze tří existujících jazyků, z nichž jedním byl právě FLOW-MATIC. Výsledkem celé této iniciativy se stal programovací jazyk COBOL (COmmon Business Oriented Language), který se záhy rozšířil – během dalších dvaceti let v něm bylo napsáno více programů než ve všech ostatních jazycích dohromady.
Grace Hopperová působila v oblasti programování až do konce svého dlouhého a pozoruhodného života a mezi programátory se stala legendou. I když byla v roce 1966 uvolněna z armádní služby, ještě téhož roku dostala nabídku, aby se na svou pozici vrátila. Bylo jí šedesát dva let, když se stala šéfkou oddělení programovacích jazyků v sekci pro námořní operace v Pentagonu. O šest let později dosáhla hodnosti kapitána. Než odešla na odpočinek, získala hodnost admirála, patrně jako první žena na světě.
Ceremonie povýšení se za přítomnosti prezidenta Spojených států konala v Bílém domě. Ale ona výše uvedená slova o odchodu na odpočinek nejsou přesná. Ještě ve svých osmdesáti letech působila coby admirál v záloze a pracovala v oblasti programování jako konzultantka.