\"/
\"/ \"/    

Průkopník vědy o programování (2)

Jiří Zlatuška, FI MU
Ročník VI - číslo 2, listopad 1995
Citace: J. Zlatuška. Průkopník vědy o programování (2). Zpravodaj ÚVT MU. ISSN 1212-0901, 1995, roč. VI, č. 2, s. 15-20.
Tematické zařazení: Různé
Článek je součástí seriálu Donald E. Knuth
 předchozí článek | následující číslo 

Rozhovor s Donaldem Knuthem pro Computer Literacy Bookshop

(pokračování z předchozího čísla)1

CLB: Řekněte nám, prosím, o své druhé knize, která se týká stanfordské GraphBase.

Knuth: Kniha o GraphBase je určena pro dva druhy lidí. Jeden její účel je výzkumný; lidé, kteří se zabývají studiem algoritmů pro kombinatorické problémy, potřebují standardní sadu zkušebních dat, na nichž se mohou navzájem poměřovat, a také jako výkonnostní normu. Během přípravy svazku IV řady The Art of Computer Programming jsem se rozhodl, že zpřístupním všem příklady a data, které používám. Byla tu potřeba standardních výkonnostních norem a taky by to všechno mělo být uspořádáno tak, aby se to mohlo použít tisícem různých způsobů. Takže... mám teď sbírku tisíců standardních datových sad; kdokoli v Polsku může mít data přesně stejná a zrovna tak kdokoli v Kalifornii nebo v Číně. Jsou velmi přenositelná a lze je stáhnout z Internetu.

Druhým důvodem pro odbočku ke GraphBase je to, že jde o příklad programování v CWEBu - je to vlastně 32 příkladů programování v CWEBu. Jsou to krátké programy ilustrující takový styl programování, jemuž dávám přednost. Příklady jsou cosi jako drobné eseje, kratičká vyprávění formou počítačových programů, které se snad hezky čtou.

CLB: Jaké je vaše současné hardwarové a softwarové prostředí?

Knuth: Pro své programování používám CWEB, velice využívám editor Emacs a pro kreslení technických ilustrací používám výtečný jazyk vysoké úrovně, který se nazývá METAPOST. Je to nový jazyk autora Johna Hobbyho a myslím, že by měl být už brzy zveřejněn. Je založen na METAFONTu. 75% kódu pochází ode mne z METAFONTu, ale je to upraveno tak, že z toho vychází PostScript. Moc se mi líbí.

Také používám program Mathematica. Lidé od Maple se mě pokoušejí přesvědčit, abych přešel k Maple, jinému výtečnému systému. Momentálně se mi zamlouvá Mathematica, poněvadž nemusíte psát operátory násobení; stačí říci "2X" místo "2*X". Taktéž má Mathematica výjimečně dobrý manuál.

CLB: Takže se vám líbí Wolframův styl psaní?

Knuth: Zejména rejstřík... v té knize se jen tak neztratíte. U prvního vydání jsem se dívával do rejstříku, když jsem měl řešit nový problém, a skoro vždycky mě odkázal na správnou stránku. Snad ve třech nebo čtyřech případech tam hledané slovo nebylo, což jsem si vždy v knize označil tužkou, až se k tomu dostanu příště. V druhém vydání to už bylo všechno opraveno, a to jsem to ani nikomu nehlásil.

CLB: Rád bych se zeptal na vaše letmé dojmy o několika výzkumných směrech a také zda jste v nich něco studoval nebo udělal. První z nich jsou genetické algoritmy. Co říkáte té obecné myšlence, že algoritmus nemusí určovat člověk, ale může se nechat na stroji...

Knuth: Plánuji s tím řadu experimentů, jakmile se dostanu ke svazku IV. Máme tu genetické šlechtění, pak simulované žíhání (simulated annealing) a lidé vymysleli ještě jiné strategie. V knize o stanfordské GraphBase mám metodu, které říkám "stratifikovaná lačnost". Všechny tyto postupy soupeří o stejný druh problémů a já bych rád zkusil hodně příkladů; některé mohou být lepší tady než jinde, takže bych pro to rád získal nějaký cit. Určité problémy jsou jako stvořené pro neuronové sítě... genetické algoritmy budou nejspíš vycházet dobře v úlohách kolem rozpoznávání řeči a prý také v odhadech burzovních pohybů nebo v něčem takovém. Čím je jaksi problém blíže přírodě, tím více lze počítat s tím, že genetický algoritmus bude fungovat, zatímco čím je bližší teorii čísel nebo něčemu umělému, tím spíše se dá čekat pomoc od nějakého jiného přístupu. Je dost těžké porozumět vlivu velikosti úloh na tyto metody; na malých úlohách mohou běžet božsky a pak najednou zcela zkrachují, když se úloha jen trošičku zvětší... anebo to může být obráceně.

CLB: Vypadá to tak, jako byste měl před sebou pár let disciplinovaného testování na svých sadách dat.

Knuth: Stanfordská GraphBase mi dává neomezený zdroj úloh, na nichž mohu pracovat já i jiní. Pročítám si, co jiní lidé prohlásili o svých metodách, ale také si je všechny zkouším. Můj původní přínos v The Art of Computer Programming spočívá v tom, že vezmu metody od dvou různých autorů a analyzuji metodu A z pozice autora B a metodu B z pozice autora A. Každý to popsal jen ze své strany, tak zkouším vyplnit mezery...

CLB: A co objektově orientované programování? Je to jen módní heslo anebo se vám opravdu zamlouvá?

Knuth: O programování jsem vždycky přemýšlel v tomto duchu, ale nepoužíval jsem jazyky, které pomáhají dodržovat disciplínu. K disciplíně jsem se vždy přinutil sám i v jiných jazycích. Programovací jazyky vás teď mohou chytit, když uděláte chybu, a ulehčují vám omezovat viditelnost informací mezi jednotlivými částmi programu navzájem. Ve svých programech napsaných ve starších jazycích jsem nepoužíval to, co jsem používat neměl; musel jsem se sám ukázňovat, abych se těmito pravidly řídil. Bylo to možné, a tak jsem to dělal. Nešlo o to, že bych nějaké programy nemohl napsat... ale ty nové prostředky určitě pomáhají.

Problém, který s nimi dneska mám, je v tom, že... C++ je moc komplikované. Momentálně je pro mne nemožné psát přenositelný kód, o němž bych věděl, že poběží na mnoha různých systémech, jedině snad pokud bych se vyhnul všem exotickým prvkům. Kdykoli se tvůrcům jazyka C++ naskytly dva konkurenční postupy pro řešení nějakého problému, řekli si "OK, dáme je tam oba". Tím pádem se jazyk stal pro moje gusto příliš barokním. Každý uživatel C++ si ale stejně vybírá jen nějakou oblíbenou podmnožinu, takže se nic neděje. CWEB plně podporuje C++, zrovna tak jako C.

CLB: Co si myslíte o takových oborech, jako je teorie chaosu a fraktály? Nedeterminovanost v nich obsažená se zdá být poněkud v rozporu s oblastmi, na něž jste se v minulosti soustředil.

Knuth: Zpočátku jsem se trochu zabýval fraktály a podobnými věcmi a zdá se mi, že je to vynikající nová abstrakce. Lidi mohou budovat modely, které by je dříve ani nenapadly a které přitom skutečně vystihují řadu věcí v přírodě, majících tu vlastnost, že vypadají stejně i při změně měřítka. Jak známo, když zvětšujete pobřežní čáru, vypadá stále jako pobřežní čára, a spousta jiných věcí má tento charakter. Příroda disponuje rekurzívními algoritmy, které používá pro vytváření mraků a ementálu a tak. Takže teď máme matematické postupy, s jejichž pomocí můžeme porozumět procesům, které sahají za hranice diferenciálních rovnic, na něž byli lidé zvyklí v předchozích staletích. Dostali jsme do rukou úplně nový nástroj, ale moje intuice mi toho o těchto metodách mnoho neříká. Jsem si vědom omezenosti své intuice; dovedu některé problémy dobře vyřešit, ale znám jiné lidi, kteří z fleku vyřeší něco, co mně sebere spoustu času... Není to můj šálek čaje.

CLB: Do jaké míry jste kdy sledoval rozvoj umělé inteligence? Váš třetí program v životě byl "kámen-nůžky-papír", který se učil z vlastních chyb, a Stanford je odjakživa jednou z předních institucí ve výzkumu umělé inteligence...

Knuth: No, umělá inteligence hodně souvisí se svazkem IV; badatelé v tomto oboru užívají kombinatorické postupy, které já studuji, takže vím o spoustě relevantní literatury. Mým úkolem je porovnání literatury o umělé inteligenci, která vyšla z kruhů elektrotechnického inženýrství, s tou, která pochází z jiných disciplín; každá komunita přistupuje k problémům trochu odlišně. Zkouším tyhle věci číst, očistit je od žargonu a sjednotit myšlenky. Z umělé inteligence pocházely odjakživa ty nejtěžší aplikace a nejatraktivnější problémy v informatice - umělá inteligence byla nejplodnějším zdrojem metod v informatice. Vedla k řadě důležitých zlepšení, jako jsou datové struktury a práce se seznamy... umělá inteligence je ohromně stimulovala. Mnohá z nejlepších paradigmat pro ladění a vývoj programů, všechny systémy počítačové algebry, rané studie počítačové grafiky a počítačového vidění atd., to vše mělo velmi silné kořeny v umělé inteligenci.

CLB: Nepatříte tedy mezi ty, kdož bagatelizují vše, co bylo v této oblasti uděláno...

Knuth: Ne, kdepak. Stalo se totiž, že spousta lidí věřila, že umělá inteligence se stane všelékem. To máte, jako když nějaká firma udělá jen 15% zisku, zatímco jí analytici předpovídali 18%, a její kurs hned spadne. Bylo to jen nesplněné očekávání, které vzniklo z nabubřelých představ, že jedno paradigma vše vyřeší. Je to tak asi se všemi věcmi, které jsou teď na výsluní; lidi si časem uvědomí, že nejsou vyčerpávajícím řešením. Mnohé problémy jsou tak těžké, že se nám nikdy nepovede najít opravdu velkolepé řešení. Lidé jsou zklamaní, když nenajdou elixír mládí...

CLB: Kdybyste měl těsně před promocí na univerzitě nebo byl doktorandem a neměl žádnou "zátěž", jaký druh výzkumu byste chtěl dělat? A vybral byste si vůbec znovu výzkum?

Knuth: Myslím, že nejbáječnější počítačový výzkum se teď dělá zčásti v robotice a zčásti v biochemických aplikacích. Robotika, kupříkladu, to je něco fantastického. Dělat stroje, které se skutečně pohybují a navzájem komunikují. Stanford má teď velkou laboratoř robotiky a naším plánem je umístit do nové budovy stovku robotů, kteří budou kráčet po chodbách. Chceme tím stimulovat studenty. Do nové budovy se nastěhujeme tak za dva tři roky. Jenom to, že roboty uvidíte, vás přivede k hezkým projektům. Z takových projektů též vznikají mnohé dobré matematické a teoretické otázky. A grafické nástroje vysoké úrovně, tady je taky spousta skvělých věcí. Jo, to by se mi moc líbilo dělat... máme jen jeden život, to se ví, ale stejně...

CLB: Proč jste se zmínil o biochemii?

Knuth: Jsou v ní milióny a milióny nevyřešených problémů. Biologie je tak digitální a přitom tak neskutečně složitá. Průšvih s biologií je ten, že práce biologa je nezáživná. Vaše experimenty vás stojí tři roky práce a pak během jedné noci vypnou proud a všechno vám to chcípne! Musíte začít znova. V počítači si můžeme vytvořit vlastní světy. Biologové zaslouží velký obdiv za to, že se tím dokáží prokousat.

Těžko mohu zodpovědně prohlásit, že po padesáti dalších letech explozivního růstu informatiky tu ještě zbude hodně fascinujících nevyřešených problémů, že se nebude do značné míry pouze pracovat na drobných vylepšeních dobře prozkoumaných věcí. Může být, že všechny elementární věci a všechny opravdu dobré věci už budou v té době objeveny. Možná že ne, ale rozhodně nemohu předpokládat růst bez konce. U informatiky si nemohu být tak jistý, jako jsem si jist u biologie. Ta má před sebou 500 let práce na vzrušujících problémech, v takovém jsme stadiu.

CLB: Používání Internetu se teď bouřlivě rozvíjí, každý se připojuje...

Knuth: Jednoho dne taky zkusíme zjistit, kdo to vlastně všechno platí!

CLB: Vy sám jej teď používáte? Vím, že tomu tak bylo v minulosti.

Knuth: Po dobu patnácti let jsem používal elektronickou poštu na ARPANETu a Internetu. V lednu 1990 jsem s tím nakonec přestal, protože mě přehrabování toho smetí připravovalo o příliš mnoho času. Nemám e-mailovou adresu. Lidé, kteří mi zkoušejí posílat nevyžádané elektronické zprávy, dostávají slušnou odpověď: "Profesor Knuth skončil se čtením elektronické pošty; můžete mu napsat na takovou a takovou adresu."

E-mail se nedá vypnout! Pošlete někomu zprávu, ten ji pošle s poděkováním zpět a vy mu zas odepíšete: "Děkuji za vaše poděkování..."

E-mail je báječný pro určitý druh lidí, je absolutně nepostradatelný pro jejich povolání a umožňuje jim dělat jejich práci lépe. Řekl bych, že pro lidi, jejichž úkolem je být na vrcholu dění, je e-mail skvělý. Avšak mou rolí je sledovat dění zespodu. Sleduji různé myšlenky, pozorně o nich přemýšlím a snažím se je přepsat načisto... Probírám se zvolna věcmi již dříve udělanými a zkouším tento materiál zorganizovat. Ale nemám ponětí o tom, co se děje tento měsíc.

Takže teď nečtu elektronickou poštu, ale občas ji stejně používám. Řekněme když cestuji do Izraele a musím něco zařídit na poslední chvíli. Když navštívím na pár dnů jinou univerzitu nebo výzkumné středisko, musím odtud poslat e-mail. Naučil jsem se používat e-mailové prostředky v Emacsu, ale nechci se v tom stát přeborníkem.

CLB: Máte spoustu zájmů nesouvisejících s počítači a matematikou - hudbu, náboženství, literární tvorbu. Je pro vás hudba tvůrčím ventilem, prostředkem pro rekreaci, nebo duchovním ventilem?

Knuth: Momentálně jde o rekreaci. Rád si zvu domů přátele, s nimiž hrajeme čtyřruční klavírní skladby. Kdybych to mohl dělat každý týden, tak bych to dělal. Doufám, že budu žít dost dlouho na to, abych po ukončení svého životního díla The Art of Computer Programming mohl komponovat hudbu. To je jen sen... ovšemže by to třeba byla mizerná hudba.

CLB: Už jste ale nějaké skladby napsal, že?

Knuth: Ano, ale byla to většinou aranžmá motivů jiných lidí. Tedy, když jsem byl na vyšší škole, napsal jsem krátkou hudební komedii nazvanou "Říše Nešťastníků". Vzpomínáte si, jakým hitem byli Nešťastníci (Nebbishes) koncem padesátých let? "Říše Nešťastníků" byla jen asi desetiminutovou parodií, ale mělo to všechno původní hudbu a libreto.

CLB: Máte ty noty ještě někde na půdě?

Knuth: Jo... vlastně ne, myslím, že jsem je ztratil. Mám jich jen část. Doufám, že na ně znovu narazím. Procházím teď své složky a dělám si počítačový rejstřík všeho, co doma mám.

CLB: Nezdá se, že byste měl domácnost bez papírů!

Knuth: Kdepak!

CLB: Zkoušel jste hudebně počítačovou technologii MIDI, anebo jste se od ní záměrně držel stranou?

Knuth: Baví mě to. Minulé vánoce jsem koupil pro svého syna syntezátor a hrál jsem na něj sám dlouhé hodiny. Moc se mi to líbilo. Kdysi před lety, bylo to v domě Marvina Minskyho, jsem hrál na syntezátor Kurzweil, což byla imitace koncertního křídla. Ne tak dávno odjel jeden můj přítel na tři roky do Anglie a nechtělo se mu brát s sebou své křídlo, a tak si koupil šestihlasou Yamahu. Když jsem ho navštívil, mohl jsem po tři nádherné dny procházet všechny kusy, které jsem se na piano naučil, a hrál jsem je jakoby na vibrafon, nebo na cemballo, nebo jinými hlasy. Jeho "piano" má zvuk cemballa, ale klávesnice je citlivá na sílu stisku, takže můžete hrát nahlas a potichu, což na opravdovém cemballu nejde. Tyhle syntezátory jsou skvělé.

CLB: Kdy jste odešel ze Stanfordu do výslužby?

Knuth: Letos. Byl jsem na dvouroční dovolené, než jsem mohl oficiálně odejít do výslužby. Neoficiálně jsem odešel v roce 1990, ve stejný den, kdy jsem se vzdal e-mailu. Své plány jsem ohlásil ještě o tři roky dříve. Ujasnil jsem si, že mým hlavním životním cílem je dokončení The Art of Computer Programming; promyslel jsem to do budoucnosti a vyšlo mi, že by to chtělo dvacet let práce na plný úvazek. Kdybych pokračoval ve všem ostatním, co jsem tehdy dělal, stalo by se z toho čtyřicet nebo padesát let práce. Nemohl jsem se nikam pohnout, měl jsem čím dál větší zpoždění. Tak jsem řekl "dost". Přirozeně mi bylo proti srsti vzdát se mnoha z těch věcí, které dělám s velkým potěšením. Ale některých věcí jsem se milerád zbavil, například psaní projektů. Těch jsem se vzdal s nadšením!

CLB: Vy jste musel psát nějaké projekty?? Domníval jsem se, že jste od toho byl nějak izolován.

Knuth: Máte obdivuhodný smysl pro humor! Teď už to nemusím dělat; ale jako profesor jsem musel najít sponzory, když jsem chtěl zajistit pro své studenty slušné vybavení, nebo přijímat hosty v rámci aktivních výzkumných programů, publikovat zprávy atd. Žebrání o peníze stojí spoustu úsilí. System Development Foundation mi nabídla milión dolarů, abych mohl dodělat TeX a vrátit se k The Art of Computer Programming.

CLB: Vzal jste ty peníze?

Knuth: Jistě, ale dokončení TeXu stejně ještě trvalo mnoho, mnoho let. Řekl jsem si, že jediná naděje na dokončení The Art of Computer Programming spočívá v přechodu na psaní na plný úvazek, na život poustevníka a v tom, že začnu lidem říkat "ne". V prvních letech to šlo dost těžko. Teď už si připadám opravdu výkonný a psaní jde dobře. Příjemný ustálený stav.

Tak jednou za měsíc mám přednášku ve Stanfordu, když se tam dostanu. Nazývá se "Počítačové hrátky". Chci v tom pokračovat dvacet let a každý měsíc pohovořit o něčem, co mne zrovna zaujalo, o pěkných myšlenkách, které jsem posbíral... Vytahuji problémy, s nimiž si nevím rady, aby je někdo udělal za mne. Když teď nedokážu pohnout s problémem za dvě hodiny, nezbývá mi, než toho nechat a požádat někoho, aby se tomu věnoval; jinak budu zase zaostávat. Jak píšu knihu, musím přecházet od námětu k námětu a jednomu každému věnuji pozornost tak tři týdny.

CLB: Jste ponejvíce znám svými publikacemi a výzkumem; líbilo se vám učit a být ve styku se studenty?

Knuth: Měli jsme nejlepší studenty na světě. Se studenty se stále setkávám při svém přednáškovém cyklu, až na to, že už neznám jejich jména. To je potíž.

CLB: Nemáte žádné studentské praktikanty?

Knuth: Představte si, že při "Počítačových hrátkách" nadhodím otevřený problém, a řekněme, že mezi posluchači se najde nějaký student, který ten problém vyřeší, udělá z toho disertaci a tu během příštích dvou (nebo snad dvou a půl) týdnů dokončí a ukáže mi ji. V takovém případě by mě to ještě zajímalo, ještě bych si to přečetl a s radostí bych se mu podepsal pod obhajobu... ale to je jediný možný způsob. 28 je celkový počet doktorandů, kteří u mne promovali, a více jich asi mít nebudu... jedině, když něco bleskově vznikne v rámci mých "Počítačových hrátek".

CLB: Doktorské práce v reálném čase! Jakých změn jste si všiml během těch let u studentů přicházejících na obor informatika?

Knuth: Došlo k velké změně, kterou si neumím vysvětlit. V sedmdesátých letech se většina našich studentů velice zajímala o hudbu. Ptávávali jsme se jich, hned jak přišli: "Na jaký nástroj hrajete?" Měli jsme spousty komorních seskupení a podobně. Dneska skoro nikoho z našich studentů hudba nezajímá. Nevím, jestli je to proto, že se na informatiku zapisuje jiný typ lidí, anebo zda to platí pro všechny dnešní studenty nebo co. Když se dnes zeptáte studentů informatiky, jakého mají koníčka, nejspíš vám většina z nich řekne "cyklistiku". Nedávno jsem měl jednoho, který hrál na foukací harmoniku, ale jinak v té skupině nebyli skoro žádní muzikanti.

CLB: Nějaké změny v úrovni studentů?

Knuth: V úrovni ne... Ale o matematice toho vědí méně, než bývalo dříve zvykem. Musíme se tak více věnovat doškolování, dokonce i na takové škole, jakou je Stanford.

CLB: A co změny v oboru samotném... při takovém pokroku a počtu zúčastněných lidí, liší se dnešní informatika hodně od té dřívější?

Knuth: No, jsou tu všechna ta média a vizuální věci, to je velký rozdíl oproti dřívějšku. Také je tu konkurence; je to teď o hodně obtížnější, než to bylo za mých časů. Když jsem začínal, dalo se přijít s něčím novým daleko snáze než teď, kdy tu máte tisíce a tisíce chytrých lidí, kteří všichni dělají skvělé věci. Onehdy mohlo být takových deset výborných doktorských disertací za rok; dneska prostě není šance držet s tím vším krok.

Ať jste v kterémkoli oboru informatiky, ukazuje se všeobecně, že se těžko drží krok. Jednotlivé obory se stále zužují, protože nikdo už není schopen pokrýt celé území. Každý si musí vybrat dvě malé části informatiky a nastudovat je; jestliže jeden zná části A a B, další B a C a jiný zas C a D, zůstává obor rozumně dobře propojen, i přesto, že se stále rozšiřuje.

CLB: Nahlížíte na sebe jako na jednoho z posledních "renesančních lidí" v oboru informatika?

Knuth: Nemám tak široký záběr, jak byste si mohl myslet - nepracuji na více věcech zároveň. Řekl bych, že mám schopnost rychle studovat; umím se v momentu stát expertem přes něco. Po dobu třiceti let sbírám materiál, takže mohu číst literaturu o jakémkoli tématu v "dávkovém režimu" - nemusím přeskakovat mezi mnoha různými tématy. Dokážu absorbovat daný předmět lokálně a být v tom chvilku dobrý..., ale nechtějte pak po mně, abych předvedl to, čím jsem se zabýval před pár měsíci! A taky mám spoustu lidí, kteří mi pomáhají opravovat mé chyby.

CLB: Poslední otazka, pro vás ta nejprotivnější... Jaký je váš současný plán na dokončení všech sedmi svazků The Art of Computer Programming?

Knuth: Chystám se vydávat dvakrát ročně fascikly o zhruba 128 stranách. Nejdříve shromáždíme čtyři z nich a pak teprve vypustíme první dva; budeme si nechávat něco v záloze! První fascikly čekejte v roce 1995 nebo 1996; budou to testovací beta verze opravdových knih. Počítám, že bych mohl dokončit svazek IV (části A, B a C) v roce 2003, svazek V v roce 2008, pak přijít s novými vydáními svazků I, II a III, potom dělat na VI a VII. Bude i jedna verze jakožto "čtenářský výtah" ze svazků I až V.

CLB: Jaká by byla vaše kariéra a život, kdybyste nebyl ohlásil ten sedmisvazkový soubor?

Knuth: Počkat, nejdříve jsem to neohlašoval. Myslel jsem si, že píšu jedinou knihu. Ale i kdybych to nebyl udělal, počítám, že bych stejně hodně psal. Nějak se zdá, že po celou tu dobu jsem vždy nacházel zalíbení v pokusech vysvětlovat věci. Na střední škole jsem vydával studentský plátek; na vyšší škole jsem redigoval časopis. Vždycky jsem si hrál se slovy.

setting
1 Originální verzi tohoto rozhovoru, který uvádíme v překladu Ladislava Lhotky, lze získat z WWW na adrese http://www.clbooks.com/nbb/knuth.html.
... zpět do textu
Zpět na začátek
ÚVT MU, poslední změna 14.11.2011