- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 09/99

Perlový guru Larry Wall

Marjorie Richardson, přeložil Jan Pazdziora

Zjistěte něco o tvůrci Perlu a o tom, co se s Perlem děje.

Překlad uveřejněn s laskavým svolením vydavatele Linux Journalu http://www.linuxjournal.com/, Specialized Systems Consultants, Inc. http://www.ssc.com/. Anglický originál článku je dostupný on-line http://www.linuxjournal.com/issue61/3394.html.

Bavila jsem se s Larry Wallem, tvůrcem skriptovacího jazyka Perl, emailem 1. března. Ukázalo se, že Larry je vcelku výřečný a myslím, že pro vás toto interview bude zábavné i informativní. Alespoň pro mne bylo.

Q: Co Vás úplně na začátku inspirovalo k napsání Perlu?

Záleží na tom, co se představujete pod pojmem "na začátku". Jak řekl Mojžíš: "Na počátku stvořil Bůh nebe a zemi". Nechci to zlehčovat. Ať už chcete (nebo nechcete) vykládat Písmo jakkoli, myslím, že Vesmír je celkem solidní inspirace pro každého, kdo má snahu stát se tvůrcem. Určitě jsem se snažil s různým úspěchem zužitkovat v Perlu velké množství inspirací.

Co se týče začátku z biografického hlediska, můj otec byl kazatel, stejně jako moji dědečci a mnoho mých předků předtím. Moje žena ráda říká, že modlitby jsou základem inteligence (i když možná to říká jenom proto, aby mně zalichotila). Ať je to jak chce, mám vcelku hodně tvůrčích genů. Kromě toho jsem dostal velkou dávku myšlenek a dovedností, z nichž některé se objevily i v Perlovské kultuře. Například vědomí, že je možno změnit svět. Že ostatní lidé jsou důležití. Láska ke komunikaci a pochopení rétoriky, nemluvě o lingvistice. Patřičné uznání významu textu. Touha věci vzájemně propojovat. Touha tvořit a ne ničit. A samozřejmě silné přesvědčení, že skutečné bohatství není v tom, co nashromáždíte, ale v tom, co dáte druhým.

Začátky Perlu byly přímo založeny na tom, že jsem narazil na problém, který jsem nebyl schopen vyřešit s nástroji, které jsem tehdy měl k dispozici. Nebo přesněji, který nebylo možné vyřešit snadno. Jak řekl velmi výstižně apoštol Pavel, "Všecko mi sluší, ale ne všecko jest užitečné". Mohl jsem ten problém řešit s pomocí awk nebo shellu, ale mám tři základní vlastnosti programátora: lenost, netrpělivost a nafučenost. Byl jsem příliš líný dělat to v awku, protože by bylo těžké přinutit ho k tomu, k čemu jsem ho potřeboval přinutit. Byl jsem příliš netrpělivý, než aby čekal, až to awko doběhne, protože bylo pomalé. A měl jsem dostatek troufalosti, aby si myslel, že to dokážu udělat líp.

Samozřejmě napsat něco jako Perl vyžaduje spoustu tvrdé práce, trpělivosti a dokonce pokory. Pokud bych to dělal jenom kvůli sobě, tak bych se na to asi vykašlal. Ale od začátku jsem věděl, že Perl budou používat i jiní, a tak jsem tu lenost rozprostřel přes celou komunitu, nikoli jen na sebe. Byl jsem ukázněně líný v zastoupení. Takže zase mluvíme o kazatelích.

Q: Tak to byla vyčerpávající odpověď. Rozhodně jsem nepředpokládala, že půjdete až na počátek světa. Jak jste přišel na to jméno?

Chtěl jsem krátké jméno s pozitivními konotacemi (já bych například nikdy nepojmenoval jazyk Scheme nebo Python). Prošel jsem všechna tří a čtyřpísmenná slova ve slovníku a všechny jsem je zavrhl. Krátce jsem si pohrával s myšlenkou pojmenovat ho po své ženě Glorii, ale to by vedlo ke zmatkům na domácím kolbišti. Nakonec jsem dospěl ke jménu "pearl" od Practical Extraction and Report Language (praktický jazyk na získávání dat a tisk výstupů). Tehdy tam bylo ještě to a. Pak jsem ale zaslechl cosi o nějakém obskurním grafickém jazyku pearl, tak jsem to zkrátil na perl. (Když jsem Perlu dal alternativní význam Pathologically Eclectic Rubbish Lister - Patologicky vybíravý vypisovač nesmyslů, tak už tam to a nebylo.)

Další zajímavostí je to, že jméno perl nebylo původně s velkým písmenem. Unix byl v té době operační systém orientovaný na malá písmena. Vlastně to byl operační systém orientovaný proti velkým písmenům. Jako ti, co začnou psát do newsů a rozhodnou se psát vše malými. Většina z nich ale nakonec dospěje k tomu, že velké písmeno tu a tam může přispět k efektivnější komunikaci. V případě Perlu jsme se asi okolo verze 4 rozhodli, že bude užitečné rozlišit program "perl" a jazyk "Perl". Pokud máte první vydání Camel Booku, všimněte si, že název je Programming perl, s malým p. Dneska je ten název Programming Perl.

Q: Takže, je Perl dnes perfektní nebo pokračujete v jeho vývoji?

To se vzájemně nevylučuje, podívejte se na Linux.

Ve skutečnosti Perl nikdy nebyl navrhován jako perfektní jazyk. Byl navržen tak, aby se mohl vyvíjet, aby byl adaptivní, jak se říká. Z biologického hlediska nic jako perfektní organismus neexistuje. Jediné, co můžeme říct je, že nějaký organismus se více či méně hodí do prostředí, ve kterém se nachází. Biologové dnes zjišťují, že každý organismus, který vypadá, že je pro jedno prostředí perfektní, je ve velkém nebezpečí vyhynutí, pokud se to prostředí změní. Přílišná specializace je pouze tak dobrá jako daná ekologická nika. Nemluvíme tady jenom o dinosaurech, ale taky o ohrožených rybách, gepardech a hmyzu v deštných pralesích v Brazílii, nemluvě o Visual Basicu.

Už jsme v počítačovém světě zažili smrt mnoha příliš specializovaných organismů - Lispové stroje, Adovské čipy a mnoho tak zvaných jazyků čtvrté generace. Jakýkoli program napsaný v assembleru pro starou architekturu je nyní zastaralý. Stejně tak jakýkoli program, který je svázán s jediným operačním systémem, půjde ke dnu, až se loď potopí. Samozřejmě, z důvodů vlastních open software, Linux tento problém nemá.

Ale zpět k Perlu. Návrh Perlu je od začátku vstřícný změnám. To vyžaduje jisté kompromisy, které ti, co myslí jinak než my, považují za suboptimální. Například jsem chtěl, aby se dala přidávat nová klíčová slova bez toho, aby přestaly fungovat staré programy, takže jsem klíčová slova umístil do jiného prostoru jmen než proměnné. To znamenalo, že buď klíčová slova nebo proměnné musejí být označeny speciálně. Vybral jsem si proměnné, protože to dovolilo expanzi proměnných v řetězcích a protože proměnné se v počítačových jazycích často označovaly, například v Basicu. Tohle někteří nedokázali vdechnout, hlavně někteří puristé, kteří si myslí, že příliš mnoho znamének v Perlu je hnusné, a příliš to připomíná BASIC. No, možná ano. A co? To byl rozumný kompromis, aby byl Perl dlouhodobě užitečnější. Z tohoto hlediska je Perl méně adaptovatelný v konkrétní ekologické nice skládající se z myslí některých počítačových teoretiků, ale lépe adaptovatelný ve světě jako celku. Tohoto kompromisu jsem nikdy nelitoval.

Samozřejmě, jakmile překonáte první dojmy, má Perl hodně věcí, které počítačoví teoretici mají rádi, jako lexikální proměnné a closury. Takže celkově ti teoretici, kteří jsou schopni si zacpat nos na dostatečně dlouho, aby dostali sýr do pusy, zjistí, že chuť je vcelku snesitelná.

Navíc, Perl 5 zavedl způsob pro rozšiřování, který podobně jako linuxový systém modulů dovoluje postupný vývoj jazyka bez nutnosti změn jádra jazyka. Můžeme tedy použít Perlovský modul, kterým změníme chování jazyka k obrazu svému definovaným způsobem. Pokud se ukáže, že některý modul je velice populární, můžeme uvažovat, zda z něho neudělat přímo součást jazyka - možná.

Tím nechci říci, že se jádro jazyka už nemění. Nedávno byla přidána podpora pro multithreading a Unicode. Zajímavé na tom je, že i tyto změny v jádře jsou udělány tak, že programátor má pocit, že používá nějaký modul. Pokud totiž používám nějaké nové vlastnosti jazyka, které mění jeho sémantiku, je nutné to v programu explicitně deklarovat. Takto je zachována téměř úplná kompatibilita se staršími Perlovskými skripty. Většina skriptů psaných pro Perl 1 poběží pod Perlem 5 beze změn. Navíc deklarace vlastností se dělá hned na začátku skriptu, takže se bere do úvahy při překladu, čili se nestává, že by skript spadl uprostřed provádění jen proto, že chybí nějaká vlastnost. Srovnejme to s programováním v shellu, kde do poslední chvíle nevíme, jestli programy, které se chystáme spouštět, jsou vůbec k dispozici. Až do okamžiku, kdy se je pokusíme spustit.

Q: Jaké jsou další vývojové plány?

Pokud bych to byl schopen předvídat, byl bych chytřejší, než jsem. Jsem ale tak chytrý, že vím, že nejsem chytřejší než jsem, a právě proto jsem vytvořil Perl především tak, aby se mohl rozvíjet.

Ale můžu říct pár charakteristik, které v každém novém projektu chci nalézt.

Za prvé, pokud to je něco o zpracování textu, je to samozřejmě věc, která se dá dělat v Perlu. Perl nikdy nepřestal být jazyk na zpracování textu, i když už dávno vypadl ze škatulky jazyků, které jsou pouze na zpracování textu. To je jeden z důvodů, proč je Perl přirozený nástroj na CGI skripty, protože Perl je výborný na rozebírání a skládání textu.

Za druhé, vyhledávám projekty, ve kterých se věci lepí dohromady. Lepidlo se nepoužívá na Lego, používá se na věci, které nebyly vytvořeny tak, aby se daly propojovat. Perl jako jazyk na propojování je velmi obratný, takže ho mohu použít na vyplnění velkých mezer. Perl je skvělý na rozhraních. Typický CGI nebo mod_perl skript spojuje dohromady databázi a Web. A pokud tahle potřeba zmizí, objeví se jiná.

Za třetí, hledám projekty, které dávají příležitosti i neprivilegovaným. Žertujeme o tom, že posíláme přebytky do Afriky, ale mimo Ameriku jsou miliardy potenciálních programátorů, kteří si nemohou dovolit zaplatit tisíce za operační systém nebo aplikaci. Čína nedávno od nakladatele, kterého znám (a pro kterého pracuji), objednala 200 000 knížek o Internetu. A to je jenom začátek. Proto jsem do Perlu minulý rok přidal podporu Unicodu. Samozřejmě, zpracování textu je i o Unicodu.

A na závěr, v podstatě ani nejde o to, jaké mám já vývojové plány, protože většinu vývoje jazyka nedělám dneska já. Perlovská komunita toho dělá o několik řádů víc a jsou to tito lidé, kteří z Perlu dělají ten jediný nejlepší skriptovací jazyk. Já jenom tak sedím stranou a hážu úsměvy. Hážu úsměv právě teď, checht.

Q: V čem je Perl lepší než jiné skriptovací jazyky, jako Python a Eiffel?

Perl je jedinečný, a to nejen mezi skriptovacími jazyky, ale mezi všemi programovacími jazyky. Je to jediný programovací jazyk, který byl vědomě a záměrně navržen jako postmoderní. Všechny ostatní jazyky jsou do jisté míry pořád ještě v modernismu. Já normálně nepoužívám pro charakterizování Perlu pojem postmoderní, protože většina lidí postmodernu nechápe, i když ji postupně přijímají. Ale faktem je, že americká kultura je všeobecně postmoderní, nejen v hudbě a literatuře, ale i v módě, architektuře a ve všobecném multikulturním povědomí.

Moderna byla založena na aroganci, na monokulturních klapkách na očích, které vyvyšovaly originálnost nade vše ostatní a vedly tvůrce k názoru, že pokud vymysleli něco dobrého, tak to je všeobecně dobré. Tedy pokud má smysl něco nějak dělat, tak je potřeba to vzít z gruntu a zrušit všechny ostatní postupy. Podívejte se na závorky v Lispu nebo používání syntaktických mezer v Pythonu. Nebo povinné používání objektů ve spoustě jazycích, včetně Javy. Tohle všechno bere koncovému uživateli jeho svobodu, protože "je to pro jeho dobro". Je to jenom další verze Orwellova Newspeaku, ve kterém se ani nedá špatně myslet. Policii myšlenek jsme zrušili v 70. letech, ale spousta programátorů je pořád ještě v zajetí cyberpolicie.

Naproti tomu postmodernismus připouští v interpretaci jakéhokoli uměleckého díla kulturní a lidský rozměr. Jak se oblékáte je Vaše věc. Je to základ Perlovského sloganu "je více než jeden způsob, jak to udělat - There's more than one way to do it". Důvod, proč v Perlu je vždy více než jeden způsob, jak věci dělat, je následující: pevně věřím, že programátoři chtějí být tvůrčí a mohou mít nejrůznější důvody, proč chtějí psát kód nějakým způsobem. Optimalizace je na Vás, ne na mně. Já dodávám barvy, Vy malujte plátno.

Q: Kdo používá Perl a jak ho používá?

Před pár lety jsem na jedné výstavě narazil na člověka z NSA (National Security Agency). Komusi tam mezi řečí řekl, že napsal nějaký filtr v Perlu, takže jsem se ho zeptal (aniž bych řekl, kdo jsem), jestli je možno říkat, že NSA používá Perl. Jeho odpověď byla "a on je někdo, kdo ho nepoužívá"? Takže už ani neříkám, že NSA používá Perl, říkám, že NSA si myslí, že Perl používají všichni. Což by koneckonců měli vědět.

Taková zajímavost je, že tento člověk byl právě ten správce, který v NSA zrušil projekt, kvůli kterému byl Perl (nepřímo) vytvořen. Nebyl moc nadšený, když jsem mu řekl, že Perl byl nejmenší brzdou celého projektu.

To se týče toho, k čemu lidé Perl používají, tak skoro na všechno. Před pár lety jsem byl překvapen, když jsem se dozvěděl, jak moc se Perl používá na Wall Streetu. "Knížka o Perlu na každém druhém stole", říkali. Ale je to přirozené, pokud si uvědomíme, že analýza trhu je o neustálém vyhodnocování a změnách modelů, a že je potřeba ve zprávách neustále vyhledávat informace, které by se mohly týkat pozice na trhu. Rychlý návrh (rapid prototyping) a zpracování textu je přesně to, co v takové situaci potřebujete.

Hodně lidí spojuje Perl s CGI skripty, a samozřejmě nejdrsnější věci se dělají s mod_perlovými skripty pod Apachem. Perl se stejně tak používá na klientské straně v robotech a vyhledávačích, které procházejí Web a získávají informace z nejrůznějších on-line databází. A to není všechno. Pokud jste někdy dostali spam (a kdo nedostal), tak Vaše emailová adresa byla téměř jistě vycucnuta ze sítě Perlovským skritpem. A ten spam byl pravděpodobně taky poslán Perlovským skriptem. Čili dá se říct, že Perl je jazykem net abuse. A skoro jsem na to hrdý.

A to jsem pouze na povrchu použití Perlu. Nejlepší způsob, jak získat přehled, na co se Perl používá (pokud se chceme obejít bez odborníků na průzkum veřejného mínění nebo statistického úřadu), je podívat se na více než 800 modulů na CPANu (Comprehensive Perl Archive Network). Pokud se těmi moduly budeme probírat, zjistíme, že Perl má nástroje a rozhraní na téměř cokoli na světě. A když se nad tím zamyslíme, zjistíme, že to ani tak není proto, že by Perl byl schopen bavit se s kýmkoli a čímkoli, ale proto, že Perl dovolí každému bavit se s každým. Kombinatorici se třesou. Úplně první číslo The Perl Journalu (neplést s Linux Journalem) obsahoval článek "Jak Perl zachránil projekt výzkumu lidského genomu". Bylo to o tom, jak každá genová laboratoř používala na uložení dat jinou databázi s jiným formátem, a jak se z toho s pomocí Perlu udělala jednotná, rozumná databáze.

Q: Dostali jsme oznámení od ActiveState Tool Corporation o PerlDirectu, které říká:

PerlDirect poskytuje spolehlivost, stabilitu, podporu a záruky pro Perl díky následujícím vlastnostem: prověřené a ověřené distribuce Perlu a rozšiřujících modulů; podarenství a podpora; nástroje na testování Y2K kompatibility; a týdeník Perl Alert. PerlDirect poskytuje možnost přímého přístupu k organizaci, která se zabývá vývojem open-source softwaru. Základní roční předplatné od 12 000 USD.

Pracujete pro tuhle firmu? Myslím, že je zajímavé, že nabízejí, že předplatným získám přístup k open-source vývoji za 12 000 dolarů za rok. Dává to smysl?

Pro mě to zní jako úplně normální smlouva o podpoře. Myslím, že ani Richard Stallman by nemohl namítat nic proti tomu, že podpora je naprosto legální způsob, jak vydělat peníze na free softwaru.

Nejsem zaměstnaný u ActiveState, ale pracoval jsem s nimi a myslím, že problémy, které vyřešili, daleko převyšují problémy, které vytvořili. Je nutno chápat, že jejich trh byl vždycky ve Windows, kde lidem děláte laskavost, pokud po nich chcete peníze, protože je to jediný způsob, jak je nemást. Linuxoví uživatelé jsou samozřejmě chytřejší a tyhle věci chápou, ale někteří linuxoví uživatelé zase nejsou až tak chytří, aby pochopili, že Windows jsou jiná kultura, a že Perl jako postmoderní jazyk, který reaguje na kontext, bude v jiné kultuře vypadat jinak.

Q: Nechěla jsem, aby to znělo, že to nemají v hlavě v pořádku - jenom jsem chtěla vědět, jestli je znáte. Co si myslíte o open source? Myslíte, že to přeroste v opravdový fenomén, nebo je to jen taková proklamace, která přejde?

Myslím, že mám asi konjuktivní a ne disjuntivní mozek, ale mám za to, že oba výroky platí. A také jsou oba chybné.

Jak můžeme říkat, že open source se stává opravdovým fenoménem, když to byl fenomén po několik desetiletí? Pouze teď každému ukazujeme postupy, které za sebou zanechaly spousty skvělého kódu. Na druhé straně, určitě se snažíme udělat z toho opravdovější fenomén, aby lidé viděli, že to je použitelný model vývoje na spoustu typů softwaru, který byl dříve vyvíjen v uzavřených modelech.

A samozřejmě, že to přejde - stejně jako přešla spousta jiných věcí, jako free-form syntaxe, strukturované programování, a teď nedávno objekty.

Co je potřeba pochopit je fakt, že z pohledu proklamací jsou lidé rozcestími. Je to jako oddělit ovce od kozlů v Evangeliu. Některé z těch přání zůstanou přáními a zmizí, jiné se rozvinou a dostane se jim normálního používání, obvykle po určité době nemístného nadšení. Free-form syntaxe, strukturované programování a objekty jsou dobré, pokud se používají s rozumem. Ale všechny tyto věci byly užitečné dlouho předtím, než se staly populárními. Většinou zaniknou ty nápady, které nejsou založeny na historické potřebě, ale na něčím zbožném přání (obvykle někoho z marketingu).

Já to vidím tak, že open source hnutí je jenom další projev rostoucího postmodernismu v naší kultuře. Naproti tomu obchodní tajemství jsou pouze neustále omílané modernistické zásady originálnosti za každou cenu. Během let tady byla spousta keců o znovuužívání kódu, ale ono to funguje pouze s open source. Postmoderní programátor věří na znovu používání kódu, ať už je originální nebo ne. Už to není otázka pýchy. Správný postmodernista musí dělat plagiáty, pokud si myslí, že to je dobré.

Q: Pokud bude všechno open source, čím se budou programátoři živit?

Na rozdíl od mnoha obhájců open source si nemyslím, že všechno jednou bude open source. Myslím si, že bude stále více převládat přesvědčení, že vše připomínající velké infrastruktury by mělo být open source, stejně jako si Spojené státy uvědomily, že na mezistátních dálnicích by se nemělo vybírat mýtné. Na druhou stranu nikdo nečeká, že budou zadarmo parkovací místa ve městech, kromě některých vybraných částí. Takže očekávám, že Windows budou open source dřív než Word.

Samozřejmě, že existuje spousta způsobů, jak vydělat na open source peníze, stejně jakou je spousta způsobů, jak si vydělat peníze na open vědě. Ale přesně v tomhle musí open source hnutí ještě nějakou dobu zrát. Otevřená věda začala jako koníček bohatých, ale do dnešní podoby začala vzkvétat, až když ji zastřesily vzdělávací instituce. To se s open source ještě úplně nestalo. Respektive, stalo se to, ale pak se spousta vzdělávacích institucí nechala zlákat všemocnými zlaťáky. Přál bych si, aby na více místech následovali příkladu University of California v Berkeley.

Q: Když už o tom mluvíme, jak vyděláváte peníze?

Na začátku jsem programoval a dělal správce sítě jako všichni ostatní, a ve volném čase jsem programoval free software. Pak jsem napsal knihu a začal pobírat honoráře. Z té knihy se stal bestseller, takže můj nakladatel, O'Reilly & Associates, vydělal ještě víc peněz než já. Samozřejmě z těch peněz museli platit víc lidí, takže se to srovnalo.

No a před třemi lety nám s Timem O'Reillym přišlo, že cokoli, co je dobré pro Perl je taky dobré pro O'Reilly & Associates, takže mi platí a já dělám, co chci, pokud se to týká Perlu. Je to dobrá symbióza.

Q: Máte nějaké zajímavé projekty, o kterých byste nám chtěl říct?

Měl bych pracovat na třetím vydání Camel Booku, takže teď oficiálně žádné jiné zajímavé projekty nemám. Samozřejmě, že jsem si hrál s Palm Pilotem, který mi dal Tim OReilly k vánocům, ale to jako bych neřekl.

Q: Dobrá. Nějaké osobní údaje - kam jste chodil do školy, zájmy, a tak.

První půlku dětství jsem strávil v jižním Los Angeles asi tři kilometry od Watts, kde byly v šedesátém pátém nepokoje, a druhou půlku v Bremertonu ve Washingtonu, kde žádné nepokoje nebyly, anýbrž jsem tam vychodil střední školu. Na třetí půlku svého dětství jsem šel na Seattle Pacific University, kde jsem nejdřív studoval chemii a hudbu, pak jsem se dal na medicínu a nakonec (mezitím jsem měl pár let přerušeno a dělal v univerzitním centru výpočetní techniky) jsem absolvoval z přirozených a umělých jazyků (ten obor jsem si sám vymyslel). Pak jsem se svou ženou dělal postgraduál na Berkeley a University of California Los Angeles. V té době jsme chtěli být misionáři (přesněji překladatelé Bible), ale ze zdravotních důvodů jsme od toho upustili. Sranda je, že teď misie pravděpodobně dostávají víc z Perlu, než by dostaly, kdybych byl misionář. Tak vidíte.

Co se týče mých zájmů, to je těžké, protože mě zajímá všechno, co je zajímavé. Což je skoro všechno kromě opery a televizních seriálů - sci-fi je ale OK.

Q: Jak se bavíte?

Čtu a poslouchám svou ženu, jak mi čte (obzvláště sci-fi). Diskutuji s kýmkoli ve své rodině o čemkoli. Luštím křížovky v New York Times. Hraju mah jong. Trénuji aikido. Dívám se na kreslené filmy. (Japonské televizní seriály by možná byly fajn.) Hraju si s rybičkama. Zachraňuji rybičky z nástrojů, které jsem pořídil, aby nechcíply.

Q: Vypadá to, že máte pořád co dělat a že se dobře bavíte - dobrá kombinace. Co jíte na snídani?

Na snídani jím cokoli - ale obvykle jím snídani až v poledne.

To je stejně dobrý čas jaké jakýkoli jiný. Díky, že jste nám věnoval tolik času, bylo to zajímavé. *


- předchozí článek - následující článek - obsah - úvodní stránka -