Portál AbcLinuxu, 1. května 2025 16:51
Butler Lampson se se podílel na hardwaru i softwaru. Stál za vývojem vůbec prvního osobního počítače (Xerox Alto), laserového tisku, Ethernetu a prvního programu pro práci s textem v režimu WYSIWYG (Bravo). Kromě toho tvořil počítačové jazyky, například Euclid.
Programmers at Work je kniha 19 rozhovorů s významnými programátory, kteří svou prací a myšlenkami tvarovali podobu dnešních operačních systémů a mnoha dalších aplikací. Ačkoliv vyšla již v roce 1986, rozhovory jsou z velké míry nadčasové a stále velmi zajímavé. Susan Lammers se po více než 20 letech od prvního vydání knihy rozhodla zveřejnit rozhovory na Internetu a dala AbcLinuxu.cz souhlas k jejich překladu a vydání. Kvůli jejich délce bude většina rozhovorů rozdělena na dva díly. Každý rozhovor doplníme o krátký dodatek, ve kterém budou shrnuty další osudy jednotlivých programátorů.
Butler Lampson učil jako mimořádný profesor informatiku na Berkeley, založil firmu Berkeley Computer Corporation a vedl výzkum v počítačové laboratoři firmy Xerox PARC. V současnosti [1986, pozn. redakce] pracuje jako vedoucí technik ve výzkumném centru firmy Digital Equipment Corporation v kalifornském Palo Altu. Řada jeho úspěchů v mnoha oblastech výzkumu a návrhu počítačů z něj dělá jednoho z nejváženějších profesionálů oboru. V jeho životopisu najdeme hardware, například místní síť Ethernet nebo osobní počítače Alto a Dorado; operační systémy, například SDS 940 a Alto; programovací jazyky, například Lisp a Mesu; aplikace, například textové procesory Bravo a Star Office; a síťové servery, například tiskárnu Dover a poštovní systém Grapevine.
S Butlerem Lampsonem jsem se setkala v Palo Altu v kancelářích firmy DEC, kde pracuje jeden z každých šesti týdnů – zbývajících pět týdnů pracuje ve Philadelphii. Sám svůj styl práce označuje jako „virtuální dojíždění“, protože většinu práce odvede po telekomunikačních linkách. Na rozdíl od mnoha dalších lidí z tohoto uspěchaného a rychle rostoucího oboru nevykazuje příliš mnoho podnikatelských zájmů. Soustředí se na jediné: úspěšný návrh počítačového systému, ať už jde o hardware, software, jazyky nebo sítě. Zdrojového kódu už dnes píše jen málo. Je systémový designér: člověk s vizí a zkušenostmi, který pokládá bytelné základy složitých systémů. A bezpochyby patří k těm nejlepším.
Co vás na počítačích přitahuje?
Počítač je pro mě ta nejlepší hračka na světě. Můžete si vymyslet spoustu krásných věcí a pak je doopravdy realizovat.
Ale to můžete i v jiných oborech…
V jiných oborech je to mnohem, mnohem těžší. Pokud jste třeba fyzik, musíte si vystačit s tím, co vám dá příroda. Ale v informatice si můžete vymyslet cokoliv chcete. Je to jako v matematice, jenže si na výsledek můžete sáhnout.
Vy jste se matematikou a fyzikou zabýval?
Studoval jsem fyziku na Harvardu. Ke konci studia jsem docela hodně programoval pro jednoho profesora fyziky, který potřeboval na PDP–1 analyzovat fotografie z jiskrové komory. Na Berkeley, kde jsem ve studiu fyziky pokračoval, dělali velice zajímavý počítačový výzkum, ale dobře ho tajili. Dozvěděl jsem se o něm od známého na počítačové konferenci v San Franciscu – zeptal se mě, jak ten projekt pokračuje. Když jsem odpověděl, že jsem o něm nikdy neslyšel, řekl mi, za kterými neoznačenými dveřmi ho najdu.
A co jste za těmi dveřmi našel?
Šlo o vývoj prvního komerčního víceuživatelského systému SDS 940.
Zúčastnil jste se ho?
Propadl jsem mu. Časem jsem úplně vzdal studium fyziky, protože práce s počítačem pro mě byla mnohem zajímavější. Měl jsem štěstí, protože kdybych zůstal ve fyzice, dostal bych doktorát zrovna v době, kdy doktoráty z fyziky úplně vyšly z kurzu.
Takže jste prošel neoznačenými dveřmi, zapojil se do tajného počítačového projektu a vyměnil fyziku za informatiku? Měl jste kromě programování pro PDP–1 nějaký dřívější kontakt s počítači?
Ano, s kamarádem jsme si ještě na střední hráli s IBM 650. Šestsetpadesátka byla první firemní počítač, ale už byla na konci své užitečné životní dráhy, takže o její výpočetní čas nebyl velký zájem.
Studoval jste hodně oborů. Vidíte nějakou spojitost mezi fyzikou, matematikou a informatikou?
Jedině v tom, že úspěch ve fyzice a matematice – stejně jako v každé jiné poctivé disciplíně – vyžaduje schopnost jasně uvažovat. Proto z těchto oborů pochází tolik úspěšných informatiků. Dnes už lidé v informatice začínají a zůstávají u ní, což je těžší, protože informatika je velice povrchní. Nenutí vás dostatečně přemýšlet.
Je to podle vás kvůli tomu, že jde o tak jednoduchý a mladý obor?
To je hlavní důvod. Podle některých náznaků se situace zlepšuje, ale jde to pomalu.
Je podle vás informatika na stejné úrovni, jako fyzika a matematika?
Dříve jsem si myslel, že bakalářské studijní programy informatiky nestojí za nic a že by se měly zakázat. Nedávno mi došlo, že to není rozumný postoj. Bakalářský titul z informatiky je naprosto přijatelný odborný titul, stejně jako třeba titul z elektrotechniky nebo podnikového hospodářství. Ale myslím, že je veliká chyba podobný samostatný program studovat, pokud hodláte ve studiu informatiky pokračovat.
Proč?
Protože většina z toho, co se naučíte, vám bude z dlouhodobého pohledu k ničemu. Nenaučíte se jinak myslet. Což je mnohem užitečnější než podrobnosti o psaní překladače, kterými se nejspíš budete zabývat v samostatném bakalářském programu. Světu by podle mě prospělo, kdyby se magisterské programy domluvily a přestaly přijímat absolventy samostatných bakalářských programů informatiky. Takoví lidé by měli mít povinnost absolvovat před dalším studiem informatiky roční doučovací program nějakého pořádného oboru, třeba matematiky nebo historie. To se ale podle mě nestane.
Jaké vzdělání nebo myšlení podle vás vede k největší produktivitě v oboru počítačů?
Matematika vás naučí logicky uvažovat. Také se dozvíte, co znamená něco dokázat a jak pracovat s abstraktními základy. Z experimentální vědy, například fyziky nebo z humanitních věd, se naučíte tyto abstrakce používat v reálném světě.
Stejně jako řada dalších významných programátorů jste začátek sedmdesátých let strávil v think tanku Xerox PARC, ve společnosti mnoha skvělých mozků. Bylo to pro vás inspirující?
Bylo to perfektní. Měli jsme pocit, jako kdybychom dobývali svět.
Ovlivnil některý z vašich tehdejších kolegů vaše myšlení?
Všichni jsme se navzájem ovlivňovali. Bylo hodně co brát a dávat. Velice důležitý byl vliv Boba Taylora – jeho způsob vedení laboratoře a jeho konzistentní pohled na to, proč jsou počítače důležité.
Xerox sice vytvořil skupinu počítačových odborníků, ale řadu z jejich myšlenek se nepovedlo realizovat a dostat na trh. Byl jste kvůli tomu zklamaný? Měl jste pocit, že svět na tyhle produkty ještě není připravený?
Ono se vždycky špatně odhaduje, na co jsou lidé připravení. Měli jsme povědomí o okolním světě? Ano, měli. Měli jsme celou situaci dokonale v rukou? Nejspíš ne. A byli jsme překvapení, když se Xeroxu nepodařilo prodat Star? Moc ne. Můj celkový pohled na Xerox PARC je, že něco takového nemohlo trvat věčně. Nakonec to vydrželo téměř 15 let, což vůbec není špatné.
PARC existoval kvůli tomu, abychom se něco naučili. Když vás někdo platí za to, že se učíte, jste jeho dlužníkem. Proto jsme měli pocit, že bychom měli být Xeroxu v rámci možností užiteční. Ale pro Xerox nebylo rozvíjení těch nápadů nezbytné. Jejich neúspěch nebyl žádné velké překvapení, protože se snažili uspět v novém oboru, o kterém ještě nikdo moc nevěděl. Na každém kroku se něco mohlo pokazit. Něco se pokazilo v marketingu – technici byli vysoce kvalitní, ale nikdy nedostali tak kvalitní marketing, jaký firma potřebovala.
Například já jsem s Bobem Sproullem strávil hodně času návrhem projektu jménem Interpress, což byl standardizovaný tiskový jazyk. Dal jsem do něj hodně energie a býval bych rád, kdyby ho Xerox vzal a postaral se o jeho přijetí dalšími firmami. Xerox ho ovšem kompletně pohřbil. Někteří z lidí, kteří na něm pracovali, proto odešli, založili Adobe Systems a přišli s podobným produktem jménem PostScript, což je zjevně standard, kterého se teď všichni chytí. Takové věci člověka otráví, ale výzkumná laboratoř je tu především proto, aby přicházela s novými nápady.
Existují dnes nějaké laboratoře zaměřené na nové nápady?
Jsem v tomhle směru poněkud zaujatý. Nejlepší výzkum má Digital Equipment Company, kde zrovna pracuji, a Bellovy laboratoře.
Myslíte si, že má výzkum nějaký praktický strop?
Podle mě je například nepravděpodobné, že by se ujaly expertní systémy. Projekty, na kterých jsme pracovali začátkem sedmdesátých let, byly zjevně životaschopné. Přinejmenším jsem neviděl žádný zásadní důvod, proč by neměly fungovat. Dnes ovšem vidím řadu zásadních důvodů, kvůli kterým pravděpodobně nebudou fungovat systémy s umělou inteligencí. Zdá se mi, že několik lidí udělalo několik málo experimentů, jejichž výsledky – které byly často velice rozpačité – naprosto absurdně zobecnili.
Proč podle vás umělá inteligence tolik přitahuje?
Nejsem si jistý. Částečně za to nejspíš může základní počítačový omyl, který spočívá v definici počítače jakožto všeho schopného univerzálního stroje. Pokud nejde nijak očividně dokázat, že se něco nedá udělat, někteří lidé si myslí, že to musí jít. Hodně lidí nerozumí následkům složitosti a bez toho se mohou rychle spálit. Pokud nedají na někoho, kdo už se spálil, nezbývá jim než to zkusit a spálit se také. Jen zlomek z lidí, kteří nadšeně mluví o umělé inteligenci, to skutečně zkusili.
K vidění bývají i docela krajní případy. Například DARPA sponzoruje program, který má všechny tyhle expertní systémy, umělou inteligenci a paralelní výpočty použít na báječných vojenských strojích, například robotických tancích. Vydali desetiletý plán, na kterém jsou po rozložení vidět jednotlivé větve vývoje a milníky, kdy se jim povede nějaký zásadní průlom. A všechno jsou to nesmysly, protože tyhle věci nikdo neumí. Některé z těch problémů se třeba v následujících deseti letech vyřeší, ale mít na to rozvrh…! Takhle svět nefunguje. Pokud neznáte řešení příslušných problémů, nemůžete plánovat dokončení projektu.
Podle všeho pohrdáte složitostí. Když navrhujete systém, snažíte se o jednoduchost?
Přesně. Všechno by mělo být tak jednoduché, jak jen to jde. Ale k tomu je potřeba zvládnout složitost.
Což se prakticky vzato dělá jak?
Pro zvládání složitosti existuje několik základních postupů. V zásadě pracuji systémem rozděl a panuj – rozložím si každou věc na menší části a snažím se v rozumné míře přesně popsat, co má každá z nich dělat. Z toho vznikne skica dalšího postupu. Když se vám specifikaci nedaří napsat, znamená to, že problému nerozumíte. Máte dvě možnosti: vycouvat k nějakému jinému problému, kterému rozumíte, a nebo se lépe zamyslet.
Popis systému by navíc neměl být příliš velký. O velkých systémech je většinou potřeba uvažovat po částech. Je to něco jako řešení problémů v matematice: Užitečných rad se dají napsat plné knihy, ale nikdo vám nedá algoritmus.
S počítači máte široké zkušenosti. Pracoval jste na vývoji počítačů, operačních systémů i aplikací. Jak moc se od sebe tyto obory liší?
Když chcete psát aplikace, samozřejmě potřebujete velký cit pro uživatelská rozhraní, který například u vývoje hardwaru nehraje takovou roli. Při návrhu hardwaru vás většinou mnohem víc zajímají omezení daná konkrétní technologií, se kterou pracujete. Opravdu složité hardwarové systémy nikdo neumí postavit, takže návrh hardwaru bývá jednodušší. Software je složitější.
Programujete ještě?
Pouze v tom abstraktním smyslu. Nemám čas psát opravdové programy. Ale první polovinu tohoto roku jsem strávil psaním pětadvacetistránkového abstraktního programu pro jmenný server. Abyste měla představu o vztahu mezi abstraktním a skutečným programem, ten abstrakt byl přeložen asi do sedmi tisíc řádků kódu v Module-2. Takže podvádím. Doopravdy jsem programoval naposledy někdy před šesti nebo sedmi lety. Tehdy jsem programoval hodně.
Které ze známých programů jste napsal?
Napsal jsem značnou část operačního systému pro 940 a dva nebo tři překladače interaktivních jazyků pro vědecké a technické použití. Napsal jsem překladač Snobolu. Společně s Peterem Deutschem jsem navrhl jednoho z předchůdců jazyka C a napsal pro něj překladač. Napsal jsem několik programů pro automatizaci návrhu a ještě jeden operační systém, na kterém se dělalo začátkem 70. let v Xeroxu.
Navrhují se vám dnes programy lépe než před deseti nebo patnáci lety?
Návrh programů je dnes asi těžší, protože máme mnohem odvážnější cíle. Ale samotné programování je mnohem jednodušší než dřív. Počítače mají mnohem víc paměti, takže už je nemusíte tolik ždímat. Můžete se víc soustředit na řešení a méně na to, abyste vyšli s omezenými prostředky. To je znát. Také programátorské nástroje jsou dnes o něco lepší. Pro mě osobně je vývoj mnohem jednodušší, protože jsem přestal programovat.
Jak zhruba postupujete, když navrhujete nebo vyvíjíte nový program?
Většina nových programů vzniká jako zlepšení, rozšíření nebo zobecnění nějakého stávajícího programu. Jen zřídka se něco dělá úplně od nuly. Většinou dělám nový program jako rozšíření nebo zlepšení nějakého modelu, který už funguje v rámci jiného programu nebo uživatelského rozhraní. Například Bravo bylo výsledkem dvou mých nápadů. První se týkal reprezentace upravovaného textu uvnitř počítače, druhý řešil efektivní aktualizaci obrazovky. Ale základní myšlenka Brava pocházela ze systému NLS, na kterém koncem šedesátých let pracoval Doug Englebart v SRI. NLS se ovládal myší a zobrazoval strukturovaný text přes celou obrazovku. Spojením těchto myšlenek vzniklo Bravo.
Dřív jsem si na kousek papíru načmáral poznámky a pustil se do hraní nebo jsem pro daný projekt nadchl někoho jiného a pustil jeho do hraní. Dnes se snažím zásadní body své myšlenky popsat dostatečně přesným, ale přesto abstraktním jazykem. Většinou je potřeba hodně iterací.
Například jsem pracoval na jmenném serveru společně s Andrewem Birtellem a Mikem Schroederem, kteří v Xeroxu dali dohromady distribuovaný jmenný server jménem Grapevine. Ten zvládl několik tisíc jmen a kolem této hranice už začal selhávat. Po něm už jsme měli představu o tom, jak takový jmenný server napsat. Chtěli jsme ale, aby systém zvládl i několik miliard jmen, a to byl poměrně zásadní problém návrhu. Rozhodl jsem, že základním stavebním prvkem by měla být místní databáze. Každá taková databáze by implementovala celkem běžnou stromovou strukturu se jmény a všechny databáze by byly navzájem volně propojené.
Popis systému i jednotlivé programy jsme psali celkem obecně, bez větší starosti o podrobnosti. Skončili jsme asi s pětadvaceti nebo třiceti stránkami zdrojových kódů a specifikací. Tyto stránky posloužily jako podrobný návrh, podle kterého jeden letní student napsal sedm tisíc řádků prototypové implementace.
Tímto způsobem většinou pracuji. Délka projektu závisí na složitosti problému, někdy to trvá roky.
Daly vám takovou práci i jazyky, na kterých jste pracoval?
Pokračování za dva dny...
© Susan Lammers 1986–2008, přeloženo s laskavým dovolením autorky.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.