Průkopníci informačního věku (17.): John Kemeny

18. 9. 2011

Sdílet

Víte, komu po válce asistoval John Kemeny a jaký systém pro sálový počítač vypracoval v polovině šedesátých let? Zajímá vás, kterého programovacího jazyka je otcem? Zavítejte s námi do historie!

Víte, komu po válce asistoval John Kemeny a jaký systém pro sálový počítač vypracoval v polovině šedesátých let? Zajímá vás, kterého programovacího jazyka je otcem? Zavítejte s námi do historie!

 

Druhá polovina padesátých let se nesla ve znamení nástupu počítačů druhé generace, v nichž křehké a nespolehlivé elektronky vystřídaly značně odolnější tranzistory. Díky těmto polovodičovým součástkám se počítač mnohonásobně zmenšil, snížily se jeho energetické nároky, a co bylo nejpodstatnější, výrazně se zvýšila jeho rychlost a spolehlivost. Souběžně s tímto zvýšením výkonu se čím dál více upouštělo od strojově orientovaných jazyků, které vystřídaly vyšší programovací jazyky, jako např. FORTRAN, ALGOL, COBOL či PL/1. Že se v oblasti programovacích jazyků jednalo o překotný vývoj, o tom svědčí fakt, že na začátku šedesátých let existovalo již přes sedmdesát programovacích jazyků. Nedlouho nato, v roce 1966, vyšel článek, který eskalující vývoj programovacích jazyků přirovnával k biblickému „zmatení jazyků při stavbě babylónské věže“. Na druhé straně je nutno poznamenat, že šlo o přirozený vývoj, v němž se prosadily jazyky, které byly pro programátory a později i laické uživatele domácích počítačů nejpřínosnější s ohledem na oblast, pro niž počítač využívali.

Nárůst výpočetního výkonu počítačů s sebou přinesl i vývoj systémů na sdílení času pro interaktivní práci na jednom počítači (v té době se přirozeně jednalo o tranzistorový sálový počítač neboli „mainframe“), s nimiž souvisel vývoj prvních dialogových jazyků. Prvním z těchto jazyků určených pro sdílení času byl JOSS (JOHNNIAC Open Shop System), vyvinutý v neziskové organizaci RAND již v roce 1963. Zprvu umožňoval práci na pěti terminálech, o rok později se však počet terminálů zdvojnásobil. Protože práce na výkonném sálovém počítači měla takříkajíc cenu zlata, JOSS inspiroval vznik obdobných systémů na sdílení času: TELCOMP (1965), CAL (1966) či FOCAL (1968).

V téže době, na základě inspirace, které přinesly tyto dialogové jazyky, vznikl na Dartmouth College i jednoduchý programovací jazyk BASIC. Původně byl určen pro výuku programování, ale jak jeho obliba vzrůstala, začaly vznikat rozšířené verze, jež nacházely širší uplatnění. Na rozdíl od výše zmíněných dialogových jazyků zajistil BASICU v dalším desetiletí budoucnost nástup domácích počítačů, v nichž se prosadil díky své univerzálnosti a jednoduchosti. Vznik BASICU, spjatého s vývojem dartmouthského systému na sdílení času, vedl John Kemeny, americký matematik a počítačový vědec maďarského původu, který byl po celou svou profesní kariéru velkým propagátorem využívání počítačů ve výuce.

Narodil se v roce 1926 v Budapešti a jeho původní maďarské jméno bylo János György Kemény. Krátce před válkou jeho otec, jenž se znepokojením sledoval situaci v Německu a Rakousku, odjel do Spojených států, aby tam zajistil nové bydliště pro svou rodinu. Matce s dětmi se podařilo vycestovat nedlouho před tím, než v Maďarsku začaly být uplatňovány protižidovské zákony. Kemenyho prarodiče, kteří odmítli opustit vlast, zahynuli v průběhu války v koncentračních táborech stejně jako většina příbuzných, kterým se nepodařilo z Maďarska uprchnout.

Keményovi se usadili v New Yorku, ve čtvrti Flatbush, kde malý János nastoupil na střední školu. V té době kromě své rodné maďarštiny plynně hovořil německy a měl pokročilé znalosti latiny, ale anglicky takřka vůbec neuměl. Otec rodině zajistil soukromého učitele angličtiny a po šesti měsících János opravoval gramatická cvičení i spolužákům, pro něž byla angličtina rodným jazykem. O jeho studijních výsledcích svědčí i fakt, že nakonec absolvoval školu s nejlepším prospěchem ve třídě. To mu umožnilo pokračovat ve studiu matematiky a filozofie na prestižní princetonské univerzitě, kde v té době působili např. Albert Einstein či Kurt Gödel. Na Kemenyho životní osudy měl ale zásadní vliv zejména jeho krajan John von Neumann, světově proslulý matematik, jehož zájem se v té době soustřeďoval mimo jiné také na problematiku elektronických výpočetních strojů.

Krátce poté, co Spojené státy vstoupily do druhé světové války, získal mladý matematik americké občanství. Maďarské jméno si změnil do anglické podoby John George Kemeny. Že byla jeho žádost o občanství rychle vyřízena, na tom měl patrně podíl právě John von Neumann. Ten si totiž Kemenyho vybral do svého týmu v rámci Projektu Manhattan, jehož cílem byla konstrukce atomové bomby.

Když byly vyřízeny všechny formality, John Kemeny se přesunul z Princetonu do Los Alamos v Novém Mexiku, kde za přísného utajení vyrostlo v poušti vědecké středisko. Von Neumannův tým, v němž Kemeny pracoval, měl za úkol provést všechny výpočty související s konstrukcí atomové bomby. (Po pětadvaceti letech, když prezentoval svůj systém na sdílení času, Kemeny poznamenal, že tento systém se stovkou terminálů dokáže za jedno odpoledne zpracovat výpočty, které von Neumannovu týmu v Los Alamos zabraly celý rok.)

Dartmouthský mainframe

Po válce se Kemeny vrátil do Princetonu. V roce 1947 dokončil studia matematiky a filozofie a stal se členem sdružení nejlepších absolventů. V té době také pracoval jako jeden z asistentů Alberta Einsteina, s nímž spolupracoval na výpočtech souvisejících s teorií unitárního pole (z níž po Einsteinově smrti zůstalo pouze nedokončené torzo). Kromě toho působil jako předseda Německého klubu, jehož úkolem bylo šíření německého jazyka a literatury, což v poválečných letech nebylo kvůli řadě předsudků souvisejících s nacismem a válečným utrpěním milionů lidí nijak snadné. Kemeny se kromě šíření německé klasické literatury soustředil zvláště na moderní německou filozofii (byl jedním z prvních, kdo ve Spojených státech uvedl např. poválečná díla Martina Heideggera a Karla Jasperse).

Když začal pracovat na své doktorské práci, jež se zabývala teorií množin, seznámil se rovněž s profesorem Alonzem Churchem. To byla další osobnost, jež se významně zapsala do historie výpočetní techniky a která měla na Kemenyho profesní kariéru velký vliv.

Dartmouth

Po získání doktorátu z matematiky zůstal Kemeny několik let na princetonském Institutu pro pokročilá studia, kde pracoval nejprve jako asistent profesora matematické logiky, potom jako asistent na katedře filozofie. V roce 1953 přijal nabídku z Dartmouth College. Zde nejprve v druhé polovině padesátých let působil jako profesor matematiky a filozofie, přičemž prosazoval nové metody výuky matematiky – tato koncepce výuky později inspirovala vznik tzv. Nové matiky (New Math), jež do značné míry proměnila matematické kurikulum i na základních školách.

Zásadní měrou se ovšem Kemeny podílel na vzniku počítačového oddělení na Dartmouthu a jeho rozvoji. V polovině padesátých let, když sem přišel, neměla univerzita vlastní počítač. Protože si chtěl udržet krok s tím, co se v oblasti výpočetní techniky dělo, cestoval Kemeny takřka týden co týden sto padesát kilometrů na Massachusettský technologický institut, kde se seznamoval s novinkami světa informačních technologií. Že jich nebylo málo, o tom, jak už jsme nastínili, svědčí nejen zvýšení výkonu počítačů díky novým polovodičovým technologiím, ale i rozvoj programovacích jazyků. Na MIT se Kemeny seznámil i s jazykem FORTRAN, který se začal ve druhé polovině padesátých let čím dál více uplatňovat ve vědeckých výpočtech. Později v knize Člověk a počítač uvedl, že vznik FORTRANU považuje za základní mezník v dějinách výpočetních technologií, mezník, který vědcům a inženýrům umožnil poprvé v širším měřítku využívat pro svou práci možnosti počítače.

Když si v roce 1959 pořídila Dartmouth College konečně počítač (jednalo se o sálový počítač GE-215), Kemeny prosazoval, aby na něm mohlo pracovat co nejvíce studentů. Aby se pro ně práce s počítačem stala pokud možno něčím tak samozřejmým, jako byla pravidelná návštěva univerzitní knihovny. Zde ale vznikl problém. Zájemců z řad studentů bylo mnoho, počítač jeden – a jeho operační systém umožňoval běh pouze jednoho programu, ačkoli, a to si Kemeny uvědomoval, jeho výkon i kapacita paměti by velmi snadno zvládly činnost několika programů najednou, zejména jednalo-li se o jednoduché programy určené pro nepříliš složité operace související s jednoduššími výpočty a výukou programování.

Programování pro každého

Jak už jsme zmínili, na přelomu padesátých a šedesátých let existovala už celá škála programovacích jazyků i kvalitních překladačů. Potíž byla v tom, že žádný z nich nezohledňoval podmínky, jaké nastaly na školách a univerzitách. Programovací jazyky, ať se jednalo o assemblery či vyšší programovací jazyky (jako byly FORTRAN či COBOL), měly pro výuku jeden zásadní nedostatek: neumožňovaly dostatečně rychlou zpětnou vazbu. Programování bylo stále poměrně složitým procesem vyžadujícím značnou trpělivost.

V první fázi se zdrojové texty programů musely napsat na specializované formuláře (přičemž pro každý jazyk byl určen jiný formulář), ve druhé fázi se tyto texty vyděrovaly na příslušné štítky či pásky, což se provádělo pomocí mechanického či elektromechanického zařízení, stále bez sebemenší návaznosti na vlastní počítač. Teprve ve fázi třetí se děrné štítky či pásky zaváděly do čtečky, jež kódy postupně načítala a předávala překladači. Problém spočíval v tom, že nastala-li při překladu jednotlivých příkazů chyba nebo nevykonával-li přeložený program požadovanou činnost, bylo nutné celý postup znovu opakovat. Oprava kódů tedy představovala často zdlouhavou činnost, a to dokonce i v případech, kdy se jednalo o jednotlivé štítky, u nichž byl „debugging“ o něco snadnější.

Proces zavádění programu poněkud zrychlilo využití dálnopisů pro zápis programů na děrné pásky. V případě těchto pásek se chyby opravovaly pomocí nůžek a lepidla tak, že se chybná část z pásky jednoduše vystřihla a nahradila kusem pásky s opraveným kódem. Díky dálnopisům navíc nemuseli programátoři pobíhat s děrnými štítky do sálu či budovy, kde se nacházel „mainframe“, ale program zasílali prostřednictvím běžné telefonní linky přes modem. Počítač také mohl všechny zprávy překladače tisknout pomocí dálnopisu u stolu programátora, což se využívalo stále častěji.

Nicméně i při využití dálnopisů zpočátku platilo, že sálový počítač (resp. jeho příslušný operační systém) byl vždy vyhrazen pro jednoho uživatele, jenž prováděl překlad svého programu nebo spouštěl již přeloženou aplikaci. Ve velkých podnicích, bankách či pojišťovnách to nepředstavovalo žádný problém, neboť na mainframech se zde zpravidla spouštěly dlouhotrvající úlohy (související s výpočtem či vyhodnocováním velkých dávek dat, jako je např. mzdové účetnictví). Jiná situace byla ale ve vědeckých ústavech či na univerzitách, kde počítač měl sloužit podstatně většímu počtu uživatelů a den co den zpracovávat větší množství spíše krátkodobějších úloh.

Z tohoto důvodu se John Kemeny a jeho spolupracovníci začali zabývat tím, jak umožnit, aby mohlo v jednom časovém úseku pracovat na počítači více studentů. Inspirovali se systémem JOSS a výsledkem jejich práce se stal Dartmouth Time-Sharing System (DTSS), který se stal prvním vlastním univerzitním systémem pracujícím na bázi sálového počítače a využívajícím sdílení času (time-sharing). Tvořilo jej několik desítek koncových zařízení (terminálů) propojených pomocí dálnopisu s počítačem Datanet, který jednotlivé požadavky z dálnopisů předpřipravoval pro zpracování mainframem GE-235.

Díky tomuto propojení umožňoval systém DTSS souběžnou práci několika desítek uživatelů. Systém po vyladění výtečně fungoval, a když si Dartmouth College v roce 1965 pořídila výkonnější sálový počítač GE-635, byl ještě zdokonalen a rozšířen. Díky zvýšenému výkonu celého systému mohlo pracovat v jednom okamžiku na tomto mainframu až 300 uživatelů, což byla v té době na univerzitě ojedinělá vymoženost. Systém DTSS nadto nezůstal pouze v Dartmouthu, ale postupně se rozšiřoval v počítačovou síť, která propojila 24 středních škol a 12 univerzit a vysokých škol na území regionu Nové Anglie.

Zrod BASICu

Ve vědeckém prostředí se v té době nejčastěji využíval programovací jazyk FORTRAN II. Ten ovšem nebyl kvůli své komplikované syntaxi vhodný pro ty, kteří se s programováním teprve seznamovali nebo kteří chtěli využívat počítač, aniž se hodlali stát profesionálními programátory. Z tohoto důvodu začal John Kemeny se svým spolupracovníkem Thomasem Kurtzem vytvářet zjednodušenou verzi programovacího jazyka použitelnou pro práci na systému využívajícím principu sdíleného času, kde uživatel komunikuje s počítačem dialogovým (konverzačním) způsobem. Tento nový jazyk, který tvořil nedílnou součást systému DTSS, byl zároveň pro svou jednoduchost vhodný pro výuku základů programování. Aby mohl být využíván pro nejširší okruh, Kemeny a Kurtz se v polovině šedesátých let rozhodli, že pro jazyk vytvoří přesnou definici, k čemuž využili řadu standardů z jazyka ALGOL.

Vytvoření nového programovacího jazyka sledovalo především tyto základní cíle: jednoduchost, obecnost a mnohoúčelovost, interaktivitu, rozšiřitelnost vzhledem k potřebám pokročilejších uživatelů, naprosté odstínění uživatelů od operačního systému a hardwaru, rychlou odezvu pro nenáročné programy a srozumitelné reportování chyb. Autoři nazvali tento jazyk BASIC, přičemž tento akronym z plného názvu (Beginner's All-purpose Symbolic Instruction Code) měl zároveň vyjadřovat, že jde o jakýsi základ pro programování. Při definování jazyka se Kemeny a Kurtz stali zároveň průkopníky metody „betatestování“, když vybízeli své studenty, aby je při psaní programů upozornili na chyby nebo nedokonalosti, které pak byly v definitivní verzi odstraněny.

bitcoin_skoleni

Protože autoři dovolili užívat BASIC bez licenčních omezení,došlo k rychlému rozšíření jazyka, přesněji jeho druhé verze, jež byla definována v roce 1965. BASIC byl používán například na mainframech od IBM, na počítačích DEC PDP či HP a dokonce i na počítačích řady SMEP, což byly stroje vyráběné v zemích RVHP (jednalo se o zařízení odvozená od populárního PDP-11). Ruku v ruce s vývojem počítačové techniky byly specifikace jazyka BASIC několikrát měněny a jazyk byl neustále rozšiřován a upravován s ohledem na způsob využití. I když BASIC vešel ve známost prostřednictvím počítačových systémů pracujících se sdílením času, skutečný rozvoj tohoto programovacího jazyka nastal až s nástupem osmibitových mikropočítačů. Minipočítače a později nejrůznější mikropočítače (označované též jako domácí či osobní počítače) díky své nízké ceně a jednoduchosti jazyka BASIC umožnily využívání počítačů i amatérským uživatelům. U mnoha těchto přístrojů, jako byly např. Atari, Commodore či ZX Spektrum, byl BASIC přítomen přímo v paměti ROM, takže jej nebylo nutné zdlouhavě nahrávat z kazety či diskety a počítače startovaly přímo do tohoto jazyka, což zajistilo BASICU výsadní postavení v segmentu mikropočítačů.

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