Na začátku padesátých let 20. století se výkon počítačů zvýšil tak, že numerické programy, jejichž tvorba trvala týdny, dokázaly poskytnout výsledky za několik minut, ba i sekund. Z tohoto důvodu začali vědci hledat způsoby, jak zjednodušit a zefektivnit vlastní programování. John Backus vyvinul se svým týmem v IBM programovací jazyk FORTRAN.
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.
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.
Proto lze bez nadsázky říci, že FORTRAN představuje v historii programování kvantový skok. A to hned ze dvou zásadních hledisek. Jednak ukázal způsob, jak učinit programování efektivnější – složité výpočty, pro něž se dosud psaly programy několik týdnů, dokázali programátoři díky tomuto programovacímu jazyku zvládnout během několika hodin. A jednak, což je ještě důležitější, umožnil něco, co lze nazvat jako „emancipaci programování“. Neboť zatímco dosud byl program, ať již psaný ve strojovém kódu či assembleru, vázán na konkrétní počítač (či řadu počítačů v případě IBM), překladače FORTRANU umožnily snadnou přenositelnost programů mezi počítači, a to nejen mezi jednotlivými firemními stroji, ale mezi počítači vůbec. Programování, dosud úzce svázané s hardwarem, se tak stalo samostatnou disciplínou, oborem, který se začal nezávisle rozvíjet.
Vedení IBM si tento posun naštěstí uvědomilo a tým Johna Backuse dostal plnou podporu. A tak již v roce 1958 byla představena zdokonalená verze označovaná jako FORTRAN II. Nejpodstatnější novinkou, kterou přinesla, bylo zavedení podprogramů a jejich oddělený překlad. Tato inovace zvýšila spolehlivost při rozsáhlých výpočtech, především však umožnila sestavování programů z různých bloků, což vedlo ke vzniku nejrůznějších knihoven podprogramů, které programátorům značně usnadňovaly práci.
Jestliže FORTRAN II představuje první krok k procedurálnímu programování, FORTRAN IV, uvedený v roce 1962, vytvořil standard pro výpočetní programy, který byl přijat Americkou asociací pro standardy (American Standards Association). To byl další významný milník, neboť se jednalo o první oficiální softwarový standard vůbec. FORTRAN tak vytvořil fenomén softwaru. Byl prvním a po dlouhou dobu nejpoužívanějším programovacím jazykem pro numerické a vědecké aplikace. Využíval se zejména pro psaní programů v nejrůznějších oborech vědy a výzkumu (a často ještě využívá ve fyzikální chemii, meteorologii a dalších oborech), ale také při řízení leteckého provozu či při programování videoher.
John Warner Backus (1924–2007), americký počítačový vědec. Nejprve začal studovat chemii na University of Virginia, ale po prvním roce vstoupil do armády, kde se zapojil do studia medicíny; kvůli zdravotním problémům armádu opustil a vystudoval matematiku na Columbia University v New Yorku. Po studiu nastoupil do IBM, kde v roce 1953 společně se svými spolupracovníky vyvinul programovací jazyk Speedcoding, považovaný za první jazyk vyššího řádu. Díky tomu se stal šéfem vývoje nového programovacího jazyka FORTRAN určeného pro počítače IBM 704. Jednalo se o první vyšší programovací jazyk, který byl široce využíván (a je rozvíjen dodnes). Ve druhé polovině padesátých let působil jako člen mezinárodních komisí, které vyvinuly programovací jazyky ALGOL 58 a ALGOL 60.
Avram Noam Chomsky (1928), americký lingvista, tvůrce hierarchické klasifikace formálních jazyků, která měla klíčový vliv na rozvoj programovacích jazyků vyššího řádu. Ve svých knihách, jako např. Logická struktura lingvistické teorie (Logical Structure of Linguistic Theory, 1955) a Syntaktické struktury (Syntactic Structures, 1957), představil hierarchickou klasifikaci formálních jazyků, v níž vyjádřil vlastnosti gramatik, které mají různou schopnost popisu. Informatika využila Chomského klasifikaci jako základní princip programování.