;

Průkopníci informačního věku - Niklaus Wirth

6. 1. 2013
Doba čtení: 17 minut

Sdílet

 Autor: © kokanfotograf - Fotolia.com
Doba, kdy se Pascal používal zejména v systému MS-DOS, již pominula. Na jeho základě „vyrostlo“ vývojové prostředí Delphi, nástroj pro bleskový vývoj aplikací, který v současné verzi umožňuje rychle vytvářet, migrovat a udržovat nativní aplikace pro Windows a Mac OS X z jediného zdrojového kódu.

Autorem Pascalu, jednoho z nejpoužívanějších programovacích jazyků, je švýcarský informatik Niklaus Wirth. Ačkoli vytvořil Pascal původně pro výuku programování, na konci sedmdesátých let se tento jazyk rozšířil do celého světa a na řadě mini- a mikropočítačů se stal (s některými modifikacemi) systémovým jazykem, který umožňuje aktivně vytvářet rozsáhlé programy se složitými datovými strukturami. Kromě toho posloužily myšlenky Pascalu jako základ pro řadu dalších programovacích jazyků, jako jsou např. Modula-2 či Ada, vycházející přímo z pascalovské syntaxe.

Niklaus WirthVe druhé polovině šedesátých let došlo k razantnímu nástupu počítačů třetí generace, využívajících integrované obvody. Díky jejich užití se hustota součástek postupně zvyšovala, což, jak jsme už v minulých dílech popsali, vedlo ke dříve netušenému nárůstu výkonnosti. Tento pokrok vytvářel tlak na zvýšení počtu programátorů. Neboť jak vzrostla síla počítačů, objevily se i vyšší nároky na jejich využití. Začaly vznikat rozsáhlé a komplikované operační systémy, u nichž bylo třeba zajistit jejich efektivní provoz, a vzrůstala poptávka po aplikačních programech všeho druhu. Bylo zkrátka zřejmé, že programování už nemůže být výsadou malé hrstky originálně myslících jedinců, ale stává se stále více žádanou profesí. Kde je ale vzít? Z tohoto důvodu se objevil termín „softwarové krize“, který vyjadřoval skutečnost, že tvorba programů v té době začala ve své produktivitě očividně zaostávat za produktivitou hromadné výroby hardwaru. Výrazem této krize byl například programovací jazyk PL/1 prosazovaný společností IBM. Nejde o to, že nepochybně šlo o silný nástroj, ale jeho využívání znamenalo zvládnout více než tisícistránkový manuál. PL/1 byl „barokním jazykem“ se spoustou kudrlinek v podobě malých funkcí a příkazů, které pro běžného smrtelníka nebylo možné obsáhnout. Proto se ne náhodou říkalo, že programovat v PL/1 bylo jako řídit tryskové letadlo se sedmi tisíci tlačítky, páčkami a přepínači. Navíc tento jazyk umožňoval, aby v něm programátoři dělali změny a vylepšení, čímž se stával ještě méně přehledným. Praxe programování stále složitějších a rozsáhlejších programů zkrátka žádala přesný opak, než nabízel PL/1. Ukázala totiž, že takové programy nelze úspěšně a správně sestavit, jestliže nejsou navrženy na základě systémového přístupu a nevyužívá se progresivních racionalizačních technik při jejich tvorbě.

Tento přístup se začal rodit již na konci šedesátých let. Byl to v první řadě švýcarský počítačový vědec Niklaus Wirth, kdo zdůraznil, že „program“ je nutné chápat především jako vzájemnou symbiózu exaktních algoritmů a numerických datových struktur. Trojice průkopníků strukturovaného přístupu programování, Ole-Johan Dahl, Edsger W. Dijkstra a Sir Charles A. R. Hoare, publikovala v té době knihu Strukturované programování (Structured Programming, 1972), která zahájila období nového přístupu k programování. V důsledku tohoto přístupu se rozšířily metody normovaného, logického a funkčního programování, které odrážely technologický přístup k podstatě tvorby programů. Ruku v ruce s tím se také objevila potřeba důkladné strukturované analýzy a návrhu struktury programu před vlastním programováním (jak dosvědčují práce Donalda Knutha, jemuž jsme věnovali jednu z předcházejících částí).

Niklaus Wirth, průkopník praxe strukturovaného programování, navrhl ještě před těmito teoretickými východisky programovací jazyk Pascal, který si záhy získal značnou pozornost. I když byl určen primárně k výuce programování (což vysvětluje některá jeho omezení), díky kvalitním překladačům se přesto úspěšně prosadil v praxi. V jazyce Pascal vznikl například systém pro digitální sazbu TeX (který je dílem již zmíněného Donalda Knutha), byly v něm naprogramovány nejen operační systémy pro osobní počítače Apple Lisa a Macintosh, ale i řada dalších, dodnes hojně využívaných aplikací pro osobní počítače.

Cesta ke strukturovanému programování

Niklaus Wirth se narodil v polovině února roku 1934 ve švýcarském Winterthuru, druhém největším městě kantonu Curych. Pocházel z intelektuálně zaměřené rodiny. Jeho otec byl profesorem zeměpisu na místním gymnáziu, a díky němu si Niklaus, jehož od dětství zajímaly zejména technické obory, už v raném věku uvědomoval, jakou důležitost má v životě člověka vzdělání. Poté, co s výtečným prospěchem absolvoval gymnázium ve Winterthuru, byl přijat ke studiu elektrického inženýrství na Vysoké učení technické v Curychu, známé ETH (Eidgenössische Technische Hochschule), kde na konci 19. století studoval fyziku Albert Einstein. Po získání bakalářského titulu v roce 1958 se rozhodl, že se vypraví do světa, a proto pokračoval v magisterském studiu elektrického inženýrství na Lavalově univerzitě v Quebeku. Odtud se po dvou letech, již s titulem magistr, přesunul na jihozápad Spojených států, na Kalifornskou univerzitu v Berkeley, kde se v té době na katedře elektrického inženýrství pod vedením Paula Mortona zformovalo oddělení počítačové vědy.

V Berkeley se Nikolas Wirth seznámil s Kenethem Thompsonem, jenž později společně s Dennisem Ritchiem vyvinul operační systém Unix. Wirtht a Thompson patřili k prvním studentům profesora Harryho Huskeyho, matematika a spolupracovníka Alana Turinga. (Huskey, jenž období druhé světové války prožil v Anglii, společně s Turingem vyvíjel počítač Pilot ACE; po návratu do Spojených států spolupracoval na konstrukci raných elektronkových počítačů EDVAC a SEAC.) Když se Huskey v roce 1954 stal profesorem elektrického inženýrství na Kalifornské univerzitě v Berkeley, zaměřil svou pozornost na problematiku programovacích jazyků. Se svými doktorandy napsal na počátku šedesátých let NELIAC (Navy Electronics Laboratory International ALGOL Compiler), což byl dialekt a překladač programovacího jazyka ALGOL 58. Vznikl na objednávku amerického námořnictva a byl v šedesátých letech využíván k programování elektronických protiponorkových systémů.

Poté, co Wirth v roce 1963 získal doktorát, přijal místo asistenta na nově ustanovené katedře počítačové vědy na Stanfordské univerzitě. Zde vedl kurzy výuky programování, kde studenty seznamoval kromě FORTRAN i s novým algoritmickým jazykem ALGOL, který ačkoli nenašel širší uplatnění v praxi, představoval zásadní předěl v programování. Lze dokonce bez nadsázky říci, že vytvořil základ takřka pro všechny moderní programovací jazyky– přímo z něj vycházejí jazyky Simula, Pascal a C.

ALGOL, který byl spíše akademickou záležitostí, se od konce šedesátých let dále nevyvíjel. Nikdy tedy nedosáhl masového rozšíření v praxi jako FORTRAN či COBOL. Stal se ale obecně uznávaným standardem pro publikování algoritmů v odborných časopisech a především východiskem a inspirací pro řadu dalších programovacích jazyků.

V roce, kdy byla zveřejněna nová verze ALGOL, přijal Niklaus Wirth profesorský post na nově zřízené katedře informatiky své alma mater, tedy curyšského Vysokého učení technického. V té době se rovněž pod vlivem článků nizozemského programátora Edsgera Dijkstry začal zabývat možnostmi nového způsobu programování, umožňujícího budovat jasné a přehledné struktury.

Pascal a jeho rozšíření

Když Niklaus Wirth začal přednášet na Vysokém učení technickém v Curychu, uvědomil si, že neexistuje srozumitelný programovací jazyk, který by byl vhodný pro výuku programování jako systematické disciplíny. Proto se rozhodl, že jej vytvoří. Mělo přitom jít o jakýsi kompromis mezi abstraktním zápisem algoritmů a konkrétní reprezentací zpracovávaných údajů v počítači. Při původním návrhu programovacího jazyka si Wirth v roce 1968 vytyčil dva základní cíle. Za prvé vytvořit jazyk, který by byl vhodný pro systematickou výuku programování, založený na jasných, jednoduchých a srozumitelných konstrukcích. A za druhé umožnit jednoduchou a efektivní realizaci překladačů tohoto jazyka na soudobých výpočetních systémech.

Wirth dal tomuto novému jazyku název Pascal– podle francouzského matematika, fyzika a filozofa Blaise Pascala (1623–1662), jenž v polovině sedmnáctého století zkonstruoval mechanický počítací stroj. Při návrhu první verze vycházel z ALGOL, ale zároveň jazyk od počátku koncipoval tak, aby splňoval požadavky strukturálního programování. Nový jazyk měl vynikat výstižně definovanou syntaxí, ale také novou koncepcí datových typů.

Zatímco ve starších programovacích jazycích (FORTRAN, COBOL či ALGOL 60) byl pojem typ omezen pouze na jednoduché proměnné, Wirth  rozšířil v jazyce Pascal koncepci typu na všechny datové objekty a umožnil, aby v programu byly definovány a pojmenovány nové typy. Tuto koncepci pak převzala většina dalších jazyků.

Původní verzi autor zveřejnil v roce 1971. Krátce poté společně se svými studenty implementoval Pascal na sériovém 60bitovém střediskovém počítači CDC 6000 od společnosti Control Data Corporation. Protože implementace odhalila řadu nedostatků, jazyk byl přepracován do nové podoby, která se stala normou v počátcích jeho existence.

Aby jazyk zpřístupnil všem zájemcům, napsal profesor Wirth společně se svou doktorandkou Kathleen Jensenovou knihu Pascal– uživatelský manuál (Pascal User Manual and Report, 1974). Druhým krokem, který výrazně přispěl k rozšíření jazyka, bylo vytvoření takzvaného P-kitu. Tento kit (neboli compiler porting kit) vytvořil se svými spolupracovníky, přičemž pro jazyk nabídl snadnější možnost interpretační implementace. Tím, že definoval jazyk virtuálního počítače nazvaný P-kód a zveřejnil překladač do tohoto kódu napsaný v Pascalu, výrazně zjednodušil proces implementace Pascalu pro daný počítač, neboť stačilo do assembleru ručně přepsat překladač a realizovat interpret P-kódu. Přibližně v té době vznikl na Illinoiské univerzitě pod vedením kanadského matematika a počítačového vědce Donalda Gilliese také kompilátor pro tehdy hojně užívané počítače řady PDP-11.

Jazyk Pascal byl zpočátku akademickou záležitostí, k čemuž byl ostatně i určen, a vyučoval se na univerzitách v Evropě i Spojených státech, kde sloužil jako úvod do programování. Uvádí se ale, že již na konci sedmdesátých let byl implementován na osmdesáti výpočetních systémech včetně mikropočítačových, čímž si začal razit cestu do praxe. O další rozšíření se velkou měrou přičinily zejména dva softwarové projekty. První, označovaný jako UCSD Pascal Project, byl spuštěn v polovině sedmdesátých let pod vedením profesora Kena Bowlese na Kalifornské univerzitě v San Diegu (UCSD). Bowlesův tým na základě výše zmíněného curyšského P-kitu vytvořil vlastní dialekt Pascalu (UCSD Pascal), v němž pak napsal p-System, rychlý operační systém určený pro tehdejší mikropočítače (ale také pro minipočítač PDP-11). Není bez zajímavosti, že p-System byl později nabízen jako jeden ze tří systémů raných osobních počítačů IBM PC, a to jakožto alternativa k systémům DOS a CP/M-86.

Niklaus Wirth v rozhovorech často zdůrazňuje, že právě projekt z Kalifornské univerzity v San Diegu se největší měrou zasadil o rozšíření Pascalu mimo akademické prostředí. Díky práci Bowlesova týmu se Pascal stal systémovým programovacím jazykem pro osobní počítače IBM PC a Apple, přičemž nabízel strukturovanou alternativu k interpretům jazyka BASIC, dodávaným společně s počítačem. Na začátku osmdesátých let byl UCSD Pascal implementován na počítače Apple II, a co víc, převážně v Pascalu, přesněji řečeno jeho dialektu označovaném jako Pascal Lisa, vytvářel tým Billa Atkinsona grafické uživatelské rozhraní pro Apple Lisa a Macintosh, ale to už je jiný příběh.

Druhý projekt, který se zasloužil o široké rozšíření jazyka Pascal, nás zprvu vrací zpět do Evropy. U jeho kořene stál dánský programátor Anders Hejlsberg, původně student strojního inženýrství na Univerzitě v Kodani, jenž se poté, co začal na škole pracovat s mikropočítačem Nascom-2, takříkajíc „zbláznil“ do počítačů. Hejlsberg byl v podstatě samouk, ale velmi chápavý a pracovitý. Hodiny programování na univerzitě mu nestačily, a proto si obstaral literaturu, mimo jiné i knihy Niklause Wirtha, díky nimž hlouběji pronikl do programování v Pascalu. Mezi softwarem, který vytvořil, vynikal překladač Pascalu pro počítače Nascom, což byly vlastně klony na přelomu sedmdesátých a osmdesátých let poměrně hojně rozšířených mikropočítačů Z-80. Překladač pak upravil i pro systémy DOS a CP/M a prostřednictvím firmy Blue Label Software je nabízel pod názvem BLS Pascal (resp. Compas Pascal), a to rozhodně nikoli bez komerčního úspěchu. Později spojil své síly s Philippem Kahnem a výsledkem jejich spolupráce bylo vývojové prostředí Turbo Pascal.

Turbo Pascal, ucelený systém pro vývoj softwaru od firmy Borland, nabídl v polovině osmdesátých let programátorům za velmi přijatelnou cenu nejen překladač, ale celé vývojové prostředí pro programovací jazyk Pascal, a to jak pro systémy CP/M a CP/M-86, tak zvláště pro čím dál rozšířenější MS-DOS. Z tohoto důvodu měla firma Borland, jejíž spoluzakladatel Philippe Kahn byl absolventem curyšského Vysokého učení technického, hlavní zásluhu na tom, že se Pascal stal v osmdesátých a devadesátých letech jedním z nejpoužívanějších programovacích jazyků. Zajímavostí je, že Turbo Pascal oproti jinému komerčnímu softwaru využíval tzv. knižní licenci vyznačující se bezpříkladnou důvěrou k zákazníkům. Disky s tímto nástrojem neobsahovaly žádnou ochranu proti kopírování. Namísto toho zde uživatel našel upozornění, že může zacházet s tímto softwarem jako s knihou– může být tedy použit jakýmkoliv počtem lidí a volně přesouván z jednoho počítače na druhý, ovšem za předpokladu, že nebude používán na více místech současně. Řadu verzí populárního a cenově dostupného Turbo Pascalu uzavíraly verze s podporou objektově orientovaného programování a dvě verze pro MS Windows pod názvem Turbo Pascal for Windows (TPW). Poté byl představen Borland Pascal 7 s podporou Windows, než firma uvedla pod názvem Object Pascal objektovou nadstavbu jazyka Pascal a s ním i zcela nové integrované grafické vývojové prostředí pro platformu Windows pod názvem Delphi, které přineslo do vývoje aplikací dosud zcela nebývalý komfort.

Modula-2

Je ironií osudu, že přibližně v době, kdy se Pascal začal úspěšně šířit i mimo posluchárny škol a univerzit, tedy zhruba ve druhé polovině sedmdesátých let, se Niklaus Wirth vzdal práce na jeho dalším rozvoji. Ve skutečnosti k tomu ale měl více než pádný důvod. Začal se totiž věnovat návrhu jazyka Modula, který považoval za nástupce již koncepčně zastaralého Pascalu.

Základní inspiraci pro tvorbu nového jazyka si Wirth přinesl z roční stáže ve výzkumném středisku Xerox PARC (Palo Alto Research Center), kde se seznámil s programovacím jazykem Mesa. Tento jazyk, založený rovněž na ALGOL, byl vyvinut pro programování operačního systému osobního počítače Xerox Alto, disponujícího operačním systémem s grafickým uživatelským rozhraním (GUI). Jazyk Mesa přinesl dvě velmi originální novinky. Za prvé možnost ošetření výjimek, což do té doby žádný programovací jazyk neuměl, a za druhé programování na základě knihoven, což bylo zvláště přínosné pro vývoj GUI a dalších rozsáhlých projektů.

Není se co divit, že Niklause Wirtha možnosti počítače Xerox Star doslova okouzlily. Po návrtu do Curychu se proto rozhodl, že na univerzitě připraví se svými studenty obdobný projekt. Výsledkem byl počítač Lilith, založený na procesoru AMD 2901, a zejména nový programovací jazyk Modula-2. Pokud jde o Lilith, šlo víceméně o kopii Xerox Staru, ale velmi zdařilou. Počítač disponoval monitorem s vysokým rozlišením, myší, portem pro laserovou tiskárnu a síťové připojení. A– samozřejmě– operačním systémem s grafickým uživatelským rozhraním.

bitcoin_skoleni

Profesor Niklaus Wirth, legendární informatik a tvůrce programovacích jazyků Pascal, Modula-2 a Oberon, je jednou z nejvýznamnějších evropských osobností počítačové vědy druhé poloviny 20. století. Po řadu let vytvářel v oblasti vývoje informatiky jakýsi spojovník mezi Evropou a Spojenými státy, jehož přínos bohužel evropské podniky nedokázaly využít takovým způsobem, jak tomu bylo za oceánem. Za svého života získal Niklaus Wirth řadu ocenění a čestných doktorátů (přičemž jednou z mnoha univerzit, jež mu titul honoris causa udělily, je i Masarykova univerzita v Brně). V roce 1984 obdržel Turingovu cenu udělovanou Asociací pro výpočetní techniku (Association for Computing Machinery, ACM), a to „za rozvoj inovativních programovacích jazyků Euler, ALGOL W, Pascal a Modula“.

Niklaus Wirth (1934), švýcarský počítačový vědec. Vystudoval elektrické inženýrství na Federálním vysokém učení technickém v Curychu (Eidgenössische Technische Hochschule Zürich) a na Lavalově univerzitě v Quebeku (Université Laval); doktorské studium elektrického inženýrství a počítačové vědy absolvoval na Kalifornské univerzitě v Berkeley (University of California, Berkeley). V letech 1963–1967 působil jako asistující profesor počítačové vědy na Stanfordově a Curyšské univerzitě (Universität Zürich), kde byl poté v roce 1968 jmenován řádným profesorem informatiky. Na konci 60. let byl členem mezinárodního týmu vyvíjejícího jazyk ALGOL 68, kromě toho vyvinul jazyky Euler (společně s Helmutem Weberem) a ALGOL-W. Je autorem programovacích jazyků Pascal, Modula-2 a Oberon; na ETH v Curychu řídil vývoj počítačů Lilith a Ceres. Je autorem významných knih a manuálů o programování, např. Systematické programování (Systematisches Programmieren, 1972), Pascal– User Manual and Report (1974, ve spolupráci s Kathleen Jensenovou), Algoritmy + datové struktury = programy (Algorithms + Data Structures = Programs, 1975), Programování v jazyce Modula-2 (Programming in Modula-2, 1982). Je laureátem řady významných cen, např. Turingova cena (1984).