Stál nejen u zrodu objektového programování či internetu, ale byl i duševním otcem konceptu dynabook – lehkého přenosného počítače s klávesnicí a dotykovým displejem a během svého působení v Applu stál u zrodu Macintoshe.
Jak jsme mohli v předchozích částech našeho seriálu sledovat, během padesátých a šedesátých let se prosadilo několik metodik programování. Tyto různé způsoby na sebe postupně navazovaly a každý z nich těžil ze zkušeností získaných při aplikaci předchozí metodiky. První revoluci ve světě softwaru představovalo zavedení vyšších programovacích jazyků (např. FORTRAN a COBOL), které osvobodily programátory od zapisování programů v podobě přesně odpovídající instrukcím konkrétního počítače, pro nějž byly psány, a zavedly vyjadřování, jež bylo bližší zvyklostem lidí. Nástup vyšších programovacích jazyků rovněž umožnil tvorbu složitějších programů. S vývojem výpočetních technologií však zakrátko došlo k tomu, že programy byly tak složité, že se v nich programátoři začali ztrácet. Díky modulárnímu programování, které přineslo rozdělování velkých projektů do sady menších samostatných modulů, se sice rychlost vývoje i kvalita programů zvýšily, ale záhy se ukázalo, že programátoři mají problémy nejen s rozchozením obřích programů, ale i jednotlivých modulů. Strukturované programování se z tohoto důvodu zanořilo do hloubky kódu a přineslo cenný poznatek, že dalšího zvýšení produktivity i kvality programů lze dosáhnout dodržením několika jednoduchých zásad při psaní kódů.
Stále rostoucí výkon, kapacita i proměnlivost hardwaru a jeho platforem vedly k vyšší složitosti vyvíjených programů. Přitom se ukazovalo, že jednou z největších překážek v efektivní tvorbě programů je tzv. sémantická mezera mezi tím, co programátor chce vytvořit, a tím, co má k dispozici. Programy začaly řešit široké spektrum úkolů, od řízení protivzdušné obrany či provozu průmyslových linek přes kancelářské, bankovní a grafické aplikace po složité vědecké úlohy či naopak zábavné hry. V zásadě šlo ale vždy o předpisy popisující, jak činnost mají vykonávat stroje, které pracují pouze s nulami a jedničkami. Ukázalo se však, že čím jsou programátorovy vyjadřovací schopnosti blíže zpracovávané realitě, tím rychleji a lépe dokáže programy navrhnout, zprovoznit a udržovat. Přesněji řečeno, kvalita programu a rychlost jeho tvorby jsou svázány s úrovní abstrakce, kterou programátor při jejich tvorbě využívá. Na základě tohoto poznání začalo v šedesátých letech v Norsku a Spojených státech amerických vznikat nové programovací paradigma, jež americký počítačový vědec Alan Kay nazval objektově orientované programování (OOP). Tato metodika z výše uvedených důvodů zamířila do vyšších hladin a potvrdila poznání, že vhodným zvýšením abstrakce mohou programátoři rychle a spolehlivě vyvíjet ještě větší a komplikovanější projekty.
Alan Kay, jeden z tvůrců OOP, kráčel ve stopách svých profesorů a rádců, Ivana Sutherlanda a Seymoura Paperta, a snažil se jejich poznatky uvést do praxe v co nejširším kontextu. Pracoval v nejprogresivnějších centrech, kde se během šedesátých, sedmdesátých a osmdesátých let rodil informační věk, na Univerzitě v Utahu a MIT a ve vědeckých centrech společností Xerox, Atari, Apple Computer a Hewlett-Packard. Jeho hlavním cílem, pro nějž dokázal strhnout své spolupracovníky, bylo zpřístupnit dosud uzavřený svět informačních technologií co největšímu okruhu uživatelů, zvláště dětem a mladým lidem.
Od hudby k programování
Alan Kay se narodil v polovině května roku 1940 ve Springfieldu ve státě Massachusetts, ale krátce po jeho narození se rodina přestěhovala do Austrálie, kde dostal jeho otec, vynálezce zabývající se návrhy a výrobou protéz, výhodnou pracovní nabídku. Ale rodina zde pobyla jen krátce. Kvůli hrozbě japonské invaze na tento kontinent se otec rozhodl, že se vrátí do Spojených států. V dětství měla na Alana vliv jeho matka, učitelka kreslení na umělecké škole, která se také věnovala hudbě. Když se začátkem padesátých let rozhodoval, čemu se bude v dospělosti věnovat, vážně uvažoval o umělecké škole, ale otec mu to nakonec rozmluvil. (Připomeňme, že obdobný cíl, tedy kariéru v hudbě, plánoval také Donald Knuth, tvůrce literárního programování a autor monumentálního díla Umění programování.) Alan Kay otci slíbil, že si zvolí vědecký obor a hudbě se bude věnovat ve volném čase. Zapsal se na obory matematika a molekulární biologie, nicméně po dlouhou dobu tak jako tak považoval za hlavní náplň svého života hudbu. V době bakalářského studia na univerzitách v Bergamu v západní Virginii a zvláště v Boulderu v Coloradu působil v několika rockových skupinách a také si přivydělával jako hráč v jazzovém orchestru a později i jako učitel hry na kytaru.
Na začátku šedesátých let učinil nečekané rozhodnutí a vstoupil do služeb amerického letectva. Když se v kurzu pro techniky seznámil se střediskovým počítačem, bylo to pro něj jako prozření – náhle najisto věděl, čemu se bude věnovat. Nový cíl nebyl pouze jakýmsi osvícením, ale doprovázel jej, jak se později Kay vyjádřil, příval energie. Díky tomuto rozhodnutí se brzy naučil programovat a stal se programátorem na Randolphské základně vzdušných sil v Texasu (Randolph Air Force Base). Protože jeho úkolem bylo sestavovat programy v asembleru pro sálový počítač Burroughs 220, záhy se v programování neobyčejně zdokonalil, což zaujalo jeho velitele. Alan Kay při této činnosti rovněž poprvé projevil svou schopnost nahlížet na problémy a jejich řešení z takového úhlu pohledu, který zůstával ostatním skrytý. Palčivou potíží v programech, sestavovaných pro americké vzdušné síly, bylo, že data zpracovávaly různé typy mainframů, které v té době americká armáda používala (kromě počítačů od společnosti Burroughs to byly zvláště stroje od Sperry Univac a IBM), přičemž každý z těchto počítačů využíval odlišný datový formát. Kay tyto nesnáze, jež nemálo prodražovaly využívání výpočetní doby mainframů, vyřešil originálním způsobem, v němž již byla obsažena základní idea toho, co později označil jako objektově orientované programování. (Není bez zajímavosti, že v té době, tedy na počátku šedesátých let, dospěly k obdobnému přístupu i dva norští programátoři pracující v norském počítačovém centru, kteří vyvinuli programovací jazyk Simula.) Aby předešel nutnosti zdlouhavé úpravy programů pro jednotlivé odlišné datové formáty, vytvořil Kay jakési „balíky“ zahrnující nejen samotná data, ale i instrukce, v nichž byly funkce zajišťující manipulaci s daty pro různé výpočetní stroje. Pro vlastní práci s těmito „balíky“ poté vytvořil poměrně jednoduché uživatelské postupy, což bylo velmi elegantní řešení. Neboť ten, kdo zadával data počítačů, by již nemusel programy upravovat, resp. nemusel se starat o způsob, jak jsou data organizována, či přesně vědět, na jakých principech jsou založeny jednotlivé funkce umožňující práci s daty. Byla to skvělá myšlenka, leč s kladným přijetím se nesetkala, alespoň v té době. Že se Kayovo řešení neujalo, není ostatně dvakrát překvapivé. Doba ještě zdaleka nedozrála pro to, aby programátoři přijali takové řešení.
Když Kay v roce 1966 opustil armádu, vydal se na utažskou univerzitu, kde absolvoval magisterské a doktorské studium počítačové vědy. Stal se jedním z prvních studentů Ivana Sutherlanda (jemuž jsme věnovali předcházející část tohoto seriálu). Alan Kay zde jednak pracoval na koncepci objektově orientovaného programování (právě na University of Utah formuloval tento termín), jednak spolupracoval se svým profesorem na systému Sketchpad, který byl prvním využitelným grafickým editorem. Díky Sutherlandovi se také seznámil s programovacím jazykem Simula, dílem Ole-Johana Dahla a Kristena Nygaarda, dvou již zmíněných norských programátorů, kteří k vývoji svého jazyka určeného speciálně pro simulování systémů hromadné obsluhy využili obdobné principy jako Kay. Vývoj jazyka Simula probíhal v Norsku a vyústil v roce 1968 ve verzi označovanou jako Simula 67, jež byla nadstavbou jazyka Agol 60. Mezitím byl jazyk postupně vylepšován, a to jak samotnými autory (myšlenka prefixování, zavedení podtříd), tak jejich spolupracovníky (koncept třídy, který zavedl Tony Hoare). I přes značný vliv, který měl jazyk Simula 67 na další vývoj objektově orientovaného programování – pojetí tříd a dědičnosti bylo později převzato do jazyků C++ a Java – se však jazyk nijak zvlášť neuplatnil mimo akademické prostředí.
Experiment FLEX
Na konci šedesátých let přijal Alan Kay nabídku od agentury ARPA (Advanced Research Projects Agency) a začal pracoval s výzkumníky, kteří v té době vyvíjeli ARPAnet, předchůdce internetu. Kay pracoval ve skupině vyvíjející systém FLEX. Šlo v první řadě o programovací jazyk FLEX, při jehož tvorbě Kay využil řadu myšlenek dynamického, objektově orientovaného programování, přičemž vycházel stejně jako tvůrci jazyka Simula 67 z programovacího jazyka Algol 60. Aby demonstroval přednosti jazyka FLEX, navrhl poté se svým spolupracovníkem Edwardem Cheadlem malý počítač s jednoduchým uživatelským rozhraním, tzv. FLEX Machine, díky němuž měl uživatel mimo jiné získat snadný přístup do počítačové sítě ARPAnet. Tento počítač, vzešlý z inspirativní práce Ivana Sutherlanda, měl monitor, tablet (jakožto polohovací i kreslicí nástroj), jednoduché grafické uživatelské rozhraní (vycházející ze systému NLS, který krátce předtím představil vynálezce počítačové myši Douglas Engelbart) a přirozeně operační systém navržený s pomocí a na základě principů objektově orientovaného programování. Problém byl v tom, že počítač byl nespolehlivý a jeho ovládání i navzdory připojenému tabletu kladlo značné nároky na uživatele. Z těchto důvodů byl v roce 1968 projekt počítače FLEX, patrně prvního vážného pokusu o konstrukci minipočítače, předčasně ukončen. Nicméně Kay alespoň díky němu získal magisterský titul, který mu byl udělen za práci FLEX – Flexibilní rozšiřitelný jazyk (FLEX – A flexible extendable language, 1968).
Jestliže prvním inspiračním zdrojem byl pro Alana Kaye Sutherlandův Sketchpad, další, ještě významnější podnět nalezl v myšlenkách, které v té době prosazoval psycholog a počítačový vědec Seymour Papert, zastánce konstruktivistického učení a tvůrce jazyka Logo. V téže době, tedy na konci šedesátých let, se s ním Kay seznámil na jednom ze setkání počítačových vědců na Utažské univerzitě, a protože jej Papertova přednáška doslova strhla, neváhal a krátce nato ho navštívil na Massachusettském technologickém institutu. Bylo to významné setkání, několik hodin, díky nimž, vezmeme-li to do důsledku, se vlastně později změnila tvář celého oboru informatiky. „Po setkání s Papertem se mi v hlavě rozsvítilo,“ poznamenal Kay v jednom z rozhovorů. „Po roce a půl práce na FLEX jsem náhle věděl, že tudy cesta nevede.“
Po tomto rozhovoru, v němž Papert předestřel své záměry (jež by kombinovaly konstruktivismus Jeana Piageta s možnostmi tehdejší informační technologie), odjížděl Kay do svého působiště s hlavou plnou nových plánů. Na této cestě se podle jeho slov také zrodila idea malého počítače, který by prostřednictvím nejnovějších počítačových technologií dětem (a nejen jim) umožňoval co nejsvobodněji vyjádřit své myšlenky.
Koncepce přenosného počítače
Při zpětném pohledu to vypadá, jako by léta do roku 1970 byla v Kayově kariéře přípravným obdobím, které se po tomto roce začalo zhodnocovat. Podnětem k tomu bylo jednak setkání s Papertem, jednak skutečnost, že začal pracovat pro Xerox PARC (Xerox Palo Alto Research Center), výzkumné a vývojové středisko známého výrobce kopírovacích strojů. Tento podnik v té době díky rozmachu kopírek mohutně investoval do inovací a poskytoval výzkumníkům nejen finance, ale také jinde neobvyklou míru svobody, tolik nezbytnou pro kreativní činnost. Tyto vhodné podmínky tak zčásti vysvětlují, proč se první osobní počítač v pravém slova smyslu zrodil právě zde, v kalifornském Palo Altu. Že z toho firma Xerox nedokázala těžit a plody svého výzkumu přenechala jiné paloaltské společnosti, je věc dnes dobře známá, byť stále poněkud těžko pochopitelná.
Alan Kay začal v PARC uskutečňovat svůj plán inspirovaný Papertovou vývojovou psychologií. V první řadě vytvořil výukovou výzkumnou skupinu (Learning Research Group, LRG) a jejím členům představil svou vizi levného přenosného minipočítače, s nímž by mohl pracovat široký okruh uživatelů, tedy i těch, kteří neovládají žádný programovací jazyk. To byla sice v době sálových počítačů odvážná myšlenka, ale nepostrádala jasné opodstatnění. Přístroj s plochou obrazovkou umožňující dotykové ovládání měl být využíván jako jakási dynamická kniha (dynamic book), a proto také získal název dynabook. Základní představa byla, že tento přístroj by mohl vytvořit nové způsoby vzdělávání a výuky a časem nahradit učebnice. Kay se svým týmem tuto představu rozvinul v koncept, který ačkoli v té době nebyl v plné míře technologicky uskutečnitelný, položil základy pro zcela novou oblast výpočetní techniky, zaměřenou nikoli na odborníky, ale široké publikum.
Dynabook měl mít malou hmotnost a takové rozměry, aby se dal snadno přenášet a vešel se i do školní tašky. Měl být vybaven displejem s bodovou grafikou jemného rozlišení, jednoduchým operačním systémem s grafickým uživatelským rozhraním a síťovým interfacem. Operační systém kromě snadného grafického ovládání měl mimo obvyklé funkce, jako jsou např. spouštění programů a práce s daty na disku, umožňovat také psát nové a modifikovat existující programy. Šlo tedy o operační systém spojený s prostředím jednoduchého programovacího jazyka. „Mělo jít o zařízení,“ vysvětluje Kay, „které by připoutalo pozornost dětí podobně jako televizor, ale s tím rozdílem, že dynabook by děti měly plně pod kontrolou. Mělo to být něco jako piáno, tedy technologie, jež dokáže být nástrojem i hračkou, prostředkem sebevyjádření i zdrojem nekonečného potěšení z tvůrčí činnosti.“
Aby si mohla účinnost jednotlivých technologií ověřit v praxi, pracovala Learning Research Group s dětmi, které byly pozvány, aby se na tomto projektu podílely. Technologické nároky na dynabook, „počítač pro děti každého věku“, byly ovšem takové, že zůstal opět pouze ve fázi prototypu. Během sedmdesátých let vzniklo několik kusů tohoto počítače, ty ovšem nikdy plně nesplňovaly funkční požadavky původního konceptu. To ovšem neznamená, že šlo o marnou práci. Naopak. Dynabook vytvořil nejen model přenosného počítače (laptopu či notebooku) a tabletu (dnes se hovoří o tom, že předjímal zejména iPad), ale zásadním způsobem ovlivnil i vývoj samotného osobního počítače. Již v první polovině sedmdesátých let byla řada vymožeností, jimiž měl dynabook vynikat, využita při konstrukci tzv. domácího počítače (home computer), označovaného jako Xerox Alto. Díky práci na dynabooku byly pro tento počítač využity dnes již takové samozřejmosti, jako jsou překryvná okna, rolovací menu, ikony, ale také polohovací zařízení (počítačová myš) coby doplňková periferie ke klávesnici.
Tichá revoluce: Smalltalk
Dynabook nepřinesl jen nosnou hardwarovou koncepci přenosného počítače. Vedlejším produktem tohoto projektu byl také programovací jazyk Smalltalk, který je podle některých odborníků považován za jediný skutečný čistě objektově orientovaný jazyk. Tým Alana Kaye původně uvažoval, že operační systém a programovací prostředí dynabooku vznikne na základě jazyka LISP (stejně jako Logo Seymoura Paperta). Ten byl ale záhy odmítnut kvůli své složitosti a špatnému zapouzdření dat. Protože si nikdo nedokázal představit, jak s LISP pracuje běžný uživatel či školák, bylo třeba vyvinout jazyk zcela nový. Ten se vlastně zprvu rodil nezávazně, jako určitá kratochvíle, jež se brzy stala vážnou součástí projektu. Kay a jeho spolupracovníci při návrhu tohoto nového jazyka vycházeli jak z LISP, Simuly a zvláště jazyka a prostředí Logo, vytvořeného pro výuku dětí, tak i z poznatků, které Kay získal při práci na FLEX. Protože hlavní filozofii dynabooku tvořily především uživatelská nenáročnost a rozšiřitelnost (což u procedurálních jazyků nepřipadalo v úvahu), rozhodl se Kay pro vícevrstvou blokovou architekturu založenou na zapouzdření a dědičnosti. Jazyk dostal název Smalltalk, který měl napovídat, že práce s počítačem se v případě dynabooku měla podobat lehké, nenáročné konverzaci.
Když se ukázalo, že dynabook zůstane kvůli tehdejší úrovni hardwaru pouze laboratorním experimentem, Smalltalk se od něj emancipoval a začal se čím dál více rozvíjet vlastním způsobem, přičemž zhruba každé dva roky vznikala nová, vylepšená verze (viz rámeček). Jak už bylo předznamenáno, nešlo o pouhý jazyk, nýbrž o celé prostředí s řadou charakteristik samostatného operačního systému. Odborníci od prvního okamžiku oceňovali především jeho zázračnou jednoduchost a elastičnost. Poté, co v roce 1979 vedení společnosti Xerox vydalo konečně souhlas s publikováním Smalltalku, vytvořil tým, jehož základem byli Alan Kay, Daniel Ingalls a Adele Goldbergová, verzi označovanou jako Smalltalk-80. První forma, uvolněná jen pro vybrané subjekty, vyvolala okamžitý zájem. Druhá, oficiální verze byla ve své portabilní implementaci oficiálně uvedena na trh v roce 1983 a způsobila tichou revoluci v programování a začala zcela měnit programátorský svět.
Vizionář
Když Alan Kay v roce 1983 opustil Xerox PARC, působil nejprve jako šéf vývojového oddělení firmy Atari, než přijal nabídku od Steva Jobse, šéfa společnosti Apple Computer, kde se pak v první polovině osmdesátých let podílel například na vývoji počítače Macintosh. To je ale jiný příběh.
Alan Curtis Kay (1940), americký počítačový vědec; jeden z hlavních tvůrců koncepce objektově orientovaného programování. Vystudoval matematiku a molekulární biologii na University of Colorado v Boulderu a počítačovou vědu na Utažské univerzitě (University of Utah College of Engineering), kde byl doktorandem Ivana Sutherlanda, autora grafického systému Sketchpad. Sutherland a později i Seymour Papert byli tvůrci programovacího jazyka Logo. Průkopnické práce těchto dvou vědců jej inspirovaly k vytvoření jak nové metodiky programování, kterou nazval objektově orientované programování, tak i návrhu „dětského počítače“ dynabook. Tento koncept, ačkoli zůstal pouze prototypem, měl posléze vliv na vznik osobního počítače, ale také notebooku a tabletu. Za svůj mimořádný přínos k rozvoji objektově orientovaného programování a osobních počítačů získal řadu čestných doktorátů a cen včetně nejprestižnějších: v roce 2003 mu byla udělena Turingova cena (za práci na koncepci objektově orientovaného programování). Je členem řady významných světových vědeckých institucí, např. Americké akademie umění a věd (American Academy of Arts and Science) či britské Královské společnosti (Royal Society).