Víte, kterého programovacího jazyka je Grace Hooperová matkou? Je vám známo, že tato žena po čtyřicítce zasvětila svůj život programování a práci na vývoji programovacích jazyků? Zavítejte s námi do historie!
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.
Pokračování článku naleznete na sesterském magazínu CIO Business World!