Hlavní navigace

Průkopníci informačního věku (15.) John Backus

11. 9. 2011

Sdílet

Víte, jaký výsledek přineslo hledání způsobu zjednodušení a zefektivnění vlastního programování na počátku 20. let, pod nímž se podepsal John Backus a jeho tým v IBM? Zavítejte s námi do historie!

Víte, jaký výsledek přineslo hledání způsobu zjednodušení a zefektivnění vlastního programování na počátku 20. let, pod nímž se podepsal John Backus a jeho tým v IBM? Zavítejte s námi do historie!

 

Když společnost IBM uvedla v roce 1953 na trh svůj první skutečný počítač IBM 701, označovaný též jako „Defense Calculator“ (neboť zařízení bylo prezentováno jako příspěvek k obranné politice Spojených států v době korejské války), vynořila se otázka, zda by se ruku v ruce s rostoucím výkonem počítače nedalo zefektivnit i jeho programování. Provoz „sedmsetjedničky“ byl stále náročnou záležitostí.

Nejenže byl tento sálový počítač drahý, zabíral značný prostor a vyžadoval komplikovanou údržbu, ale také jeho naprogramování patřilo k nákladným položkám zpravidla stejného rozsahu, jako byla samotná cena hardwaru. I když původní strojový kód, který se používal k naprogramování prvních elektronických počítačů, vystřídal takzvané programovací jazyky nižší úrovně, programování bylo zdlouhavou, neobyčejně pracnou záležitostí, na níž pracoval tým odborníků. Stejně jako samotný počítač byl i program v té době vyvíjen na zakázku a takřka bez výjimky byl vázán na jedno konkrétní zařízení. Jak se ale rok od roku zvyšovalo množství počítačů v oblasti výzkumu i v obchodní a administrativní sféře, začal stoupat i význam programování.

Aby se proces programování usnadnil, hledaly se cesty k jeho zjednodušení a optimalizaci. Způsoby řešení byly dva. Spočívaly jednak v psaní programových úseků, které bylo možno opakovaně používat, jednak v cestě automatického generování strojového kódu (kdy se operační část příkazu nahradila významově orientovanou kombinací písmen). Druhá možnost vedla k tomu, že strojový kód postupně nahradily jazyky nižší úrovně, zejména jazyky symbolických instrukcí neboli assemblery. Ale i ty představovaly pouze částečné řešení, neboť byly stále strojově závislé. Jejich syntax i sémantika nepřinášely abstraktní zobecnění, ale vycházely z rysů konkrétního počítače, jako jsou soubor operací či způsoby adresování operandů.

„Sedmsetjednička“ měla však být univerzálním počítačem určeným takřka výhradně ke komerčním účelům. Stroj sice nebyl kompatibilní s předchozími děrnoštítkovými tabelátory, ale zato nabízel o mnoho větší výkon. Stejně jako převážná většina tehdejších počítačů se vyráběl na zakázku, a protože byl určen zejména pro náročné vědecko-technické výpočty, k jeho odběratelům patřily vládní úřady, armáda, univerzity a velké firmy, jež si mohly takovou investici dovolit. Uživatelé však pochopitelně žádali, aby zařízení bylo využitelné pro co nejširší okruh problémů. Jinými slovy požadovali vytváření stále nových programů a aplikací.

K těm, kteří se snažili zefektivnit metody programování, patřil i John Backus, mladý matematik, jenž v IBM navrhl vytvoření programovacího jazyka pro zápis úlohy pomocí matematických formulí. Vedení společnosti mu dalo zelenou, ačkoli zároveň vyjádřilo obavu, zda je to vůbec možné. Je totiž třeba říci, že k možnosti výrazně zefektivnit programování panovala všeobecná skepse. Dokonce i slavný John von Neumann se vyjádřil, že pokusy nahradit vlastní psaní strojového kódu jsou slepou cestou.

Nejasné vyhlídky

Pozoruhodné je, že vývoj programovacího jazyka byl v podstatě Backusovou osobní iniciativou. Většina odborných pracovníků v IBM jej považovala za pošetilce. Nicméně mladý matematik měl nejen jasnou vizi, ale také si dobře uvědomoval, jak velký přínos by mohlo mít vylepšení programování. Pro většinu zákazníků totiž začaly náklady na pořízení programů představovat vyšší položku než pronájem, ba dokonce i koupě počítače. Z tohoto důvodu si předsevzal, že se programování pro nový IBM 704 pokusí zjednodušit. Vedení společnosti jej podpořilo, ačkoli většina manažerů se nedomnívala, že to k něčemu bude.

Cesta Johna Backuse k programování byla přitom značně křivolaká. Narodil se v roce 1924 ve Filadelfii, ale dětství strávil na rodinné farmě ve Wilmingtonu, ve státě Delaware. Na rozdíl od řady jiných počítačových průkopníků, jako byli zmíněný John von Neumann či Jay Forrester, při studiu nijak nevynikal a nebyl ani pilný. Ba právě naopak, se školou měl ustavičné problémy, o čemž svědčí nejen jeho nevalné výsledky na Hill School v pensylvánském Pottstownu, ale i jeho poněkud zmatené vysokoškolské studium. Nejprve začal studovat chemii na Virginské univerzitě, kam byl přijat patrně díky konexím svého otce. Chemie ho ale nezajímala, což se záhy projevilo u zkoušek. Kvůli hrozícímu vyhazovu, který věštil spor s otcem, se rozhodl odejít z univerzity sám a v roce 1942 dobrovolně nastoupil do armády, kde nejprve absolvoval výcvik u spojařů. Do bojů v Evropě či Tichomoří se ale nedostal, protože v době, kdy nastoupil na zdravotnický výcvik, se u něj projevily závažné zdravotní problémy. V průběhu stáže v nemocnici mu byl na mozku diagnostikován nádor, kvůli němuž se musel podrobit náročné operaci.

Operace ukončila jeho vojenskou kariéru. Když se po válce s nejistými vyhlídkami přestěhoval do New Yorku, stále ještě netušil, čemu se bude věnovat. Zprvu se začal zabývat elektronikou, údajně pouze proto, že si chtěl sám sestavit hi-fi systém, jímž by oslnil své přátele. Samostudium elektroniky jej zaujalo tak, že se přihlásil ke studiu fyziky a matematiky na Columbia University v New Yorku, což bylo první studium, které úspěšně zakončil – v roce 1949 získal bakalářský titul z matematiky.

Během studia se Backus seznámil s profesorem Wallacem Eckertem (nezaměňovat s Presperem Eckertem, konstruktérem ENIAC), jenž ho uvedl do světa počítačů. Později se také zasadil, aby čerstvý absolvent získal místo ve vývojovém týmu IBM. To bylo cenné doporučení. Neboť Wallace Eckert byl významným průkopníkem ve využívání výpočetní techniky ve vědě, zvláště v astronomii. Na univerzitě přednášel fyziku, ale kromě toho také řídil Watsonovu vědeckou počítačovou laboratoř (Watson Scientific Computing Laboratory), výzkumné středisko společnosti IBM, kde byl v letech 1946–1948 zkonstruován počítač SSEC (Selective Sequence Electronic Calculator). Jednalo se o elektromechanický kolos kombinující dvě dosud vyzkoušená řešení: registry tvořily zčásti elektronky, zčásti elektromagnetická relé, program byl ovládán jednak pomocí propojovací desky (stejně jako například u strojů Howarda Aikena), jednak byl zčásti již uložen v paměti počítače. IBM považuje SSEC za svůj první prototyp digitálního počítače.

Podle pamětníků, jejichž výpovědi jsou zaznamenány v obsáhlé dvojdílné publikaci Historie programovacích jazyků (History of Programming Languages, 1996), byla práce na SSEC skutečnou zkouškou trpělivosti. Stroj se každou chvíli zasekával a hlásil chybu, kvůli níž musel být zpravidla restartován. Nicméně právě díky zkušenosti s prací na SSEC se John Backus rozhodl, čemu se bude věnovat. Že se pokusí, jak se později vyjádřil, „učinit práci na počítači o něco snesitelnější“.
FORTRAN I
Krátce poté, co nastoupil do IBM, se stal členem týmu, který měl za úkol vytvářet speciální programy na zakázku pro výše zmíněnou „sedmsetjedničku“. Jak už bylo předznamenáno, jednalo se o náročnou činnost zahrnující nejen napsání programu, ale i komplikované vyladění. Aby prozkoumal možnost jednoduššího řešení, vyvinul Backus společně s několika kolegy v roce 1953 zlehčený postup psaní programu. Označil jej jako Speedcoding. Šlo vlastně o první verzi, lépe řečeno o jakýsi předstupeň problémově orientovaného programovacího jazyka napsaného pro počítač IBM.

Backus o tomto řešení referoval v stati „The IBM 701 Speedcoding System“, kde je představil jako vylepšený assembler umožňující zápis pomocí takzvaných pseudokódů pro indexování významných matematických operací, jako jsou např. trigonometrické či exponenciální funkce nebo logaritmy. Že nešlo o výstřelek mladého nadšence, ale o předzvěst trendu, o tom svědčí skutečnost, že obdobný postup v téže době zaváděla i firma Remington Rand ve svých systémech A-2 a A-3.
Když Backus následujícího roku začal psát programy pro nový střediskový počítač IBM 704, rozhodl se, že postup nastíněný ve Speedcodingu uplatní důsledně pro celé pojetí programu, jinými slovy že se pokusí vytvořit konzistentní systém automatického kódování, umožňující uživatelům počítače psát výrazy v zobrazení, jež se podobá běžně užívanému matematickému vzorci.

Vedení společnosti, jak už jsme poznamenali, mu vyšlo vstříc, a tak se stal šéfem nevelkého týmu, který během necelého roku vypracoval koncepci jednoho z prvních problémově orientovaných programovacích jazyků. Jeho označení FORTRAN vycházelo z původního oficiálního názvu, který zněl: IBM Mathematical FORmula TRANslating System. Původně mělo jít o čistý assembler pro vytváření programů vědecko-technického zaměření na počítači IBM 704, ale zvolená koncepce později vytvořila prostor pro širší použití. Díky tomu se FORTRAN stal nejen prvním, ale po dlouhou dobu i nejpoužívanějším programovacím jazykem pro vědecké a technické aplikace.

Zčásti samozřejmě proto, že systémy IBM byly nejpoužívanější. Backusovi a jeho spolupracovníkům se podařilo najít obecnější přístup. Využili při tom jak dosud poznané principy programování (od Mauchlyho Short Code po Laningův a Zieglerův přístup označovaný jako „automatické kódování“), tak i podněty, které poskytovala moderní lingvistika, zvláště teorie generativní gramatiky Noama Chomského, jenž ukázal, jak samotný systém symbolů vytváří konzistentní jazyk.

Kvantový skok v programování

Vítězný nástup FORTRANU nastal s uvedením překladače, který Backusův tým představil v roce 1954. Paradoxní je, že první spuštění tohoto překladače provázely potíže, které nevěstily nic dobrého. Jeho prvním uživatelem byla firma Westinghouse. Po zavedení dvou tisíc štítků do překladače se objevilo chybové hlášení. Nastalo zděšení. Krátce nato se však zjistilo, že zákazníkovi byla poslána neověřená verze. Omyl byl napraven a překladač od té doby začal získávat pro FORTRAN cenné body.

bitcoin_skoleni

Kromě elegantní jednoduchosti, kterou FORTRAN nabízel, dokázal velmi efektivně generovat strojový kód (nezřídka dokonce efektivněji, než když byl psán programátorem, jak ukázaly testy IBM). To byla dosud nevídaná výhoda, jež probudila zájem zákazníků. Ti si totiž velmi dobře uvědomili, že se jim investice do koupě překladače a vyškolení programátorů bohatě vyplatí. O vzrůstající popularitě FORTRANU svědčí i fakt, že do deseti let od uvedení jazyka existovalo na padesát překladačů tohoto jazyka pro různé počítače.

Pokračování článku naleznete na sesterském magazínu CIO Business World.