LISP vs. XML

18. 2. 2007 23:38 (aktualizováno) Petr Cimprich

Pod mým nedávným článkem o jazyku XML Pipeline proběhla pozoruhodná diskuze. Bohužel ani trochu nesouvisela s tématem. Několik příznivců LISPu mělo potřebu světu sdělit, že „LISP rulez!“ a XML je jen jeho značně nedokonalou napodobeninou, uměle protlačovanou nevzdělanými rádobyexperty, kteří si z tohoto podvodu udělali dobrou živnost. Můj mírně ironický tón naznačuje, že s tímhle názorem tak docela nesouhlasím. Pokusím se vysvětlit, co mě k tomu vede.

LISP a XML mají některé společné charakteristiky, ale každá z těchto technologíí vznikla v jiné době, v jiném kontextu a má jiné cíle. LISP je starší, ale představa, že místo XML bylo možné prostě „sáhnout po LISPu“, když mají tolik společného, nerespektuje souvislosti. XML nevzniklo ze dne na den, tak že by někdo zabalil kus LISPu do jiné syntaxe a začal tím oblbovat lidi. Bylo tady GML a SGML určené primárně pro práci s textem. LISP nikdy nebyl dvakrát vhodný pro práci s textem. Dokument můžete přepsat do S-expressions, ale umíte si v tomto formátu představit rozsáhlý manuál nebo knihu? Já bych nic takového editovat nechtěl. Nechce se do toho ani lidem z lispové komunity – většina dokumentů o LISPu je v LaTeXu. V syntaxi LISPu má zvláštní význam řada znaků běžně používaných v textu, tudíž je obtížnější okem rozeznat text a značky, a musí se častěji escapovat. LISP není na rozdíl od *ML určen ke psaní dokumetů.

Důležitou, možná hlavní motivací vzniku XML bylo nahrazení špatně automaticky zpracovatelného HTML něčím podobným, ale pravidelnějším. Měli tehdy autoři XML místo definování profilu SGML a následného přeformulování HTML4 na XHTML prostě sáhnout po LISPu? Jak by na to asi reagovali výrobci prohlížečů a miliony autorů webových stránek? Jistě s pochopením. Nebo se chyba stala už dřív, když Tim Berners-Lee, místo aby prostě sáhl po LISPU, začal vymýšlet HTML? Obávám se, že kdyby tehdy TBL web založil na LISPu, zůstal by dodnes akademickou záležitostí.

To, co je XML často vyčítáno – upovídaná syntaxe a zdánlivě nadbytečné koncové značky – se do XML nedostalo náhodou. Umožňují dobrou čitelnost formátu lidským okem a lepší detekci chyb. Když v S-expression chybí uzavírací závorka, zjistí to parser až na konci. Když v XML chybí pojmenovaný koncový tag, pozná to většinou hned, jak narazí na jiný koncový tag. Dokument XML dokáže deklarovat své kódování. XML je neutrální datový formát podporovaný všemi relevantními programovacími jazyky, včetně LISPu. Pro tyto vlastnosti je XML vhodný formát pro přenos dat mezi různými systémy a platformami.

Lidé stojící u zrodu XML nebyli žádní nedouci. LISP dobře znali, rozhodně ne hůř než mladí rozlobení mužové požadující, aby LISP vládl všemu a všem. Jeden z „otců“ XML, James Clark, se dlouho zabýval DSSSL a napsal vynikající lispový modul pro Emacs (nXML). Přesto mu stálo za to vymýšlet XSLT a Relax NG, a napsat neuvěřitelné množství open-source implementací XML standardů. Kam patří on a jemu podobní? Mezi ty, kdo „prostě nemají na to aby Lisp pochopili“, nebo mezi padouchy, kteří „Lisp znají, ale radši o něm nemluví, aby se neprozradilo že toho zas tak moc nevymysleli, to co znaji přepíšou do "ex em el“ a nechají si to dobře zaplatit."

Pokud někteří příznivci LISPu vnímají XML jako prázdný „enterprise“ buzzword, je to bohužel jejich chyba. Měli by přestat chodit na jalové firemní prezentace s plkajícími kravaťáky, a radši si přečíst sborník z Extreme Markup Languages nebo sledovat list xml-dev.

LISP je velmi starý jazyk a obsahuje hromadu vynikajících principů. Během času mnohé jiné jazyky a formáty některé z těchto principů přejímají a mění ke svému obrazu. Znamená to, že všichni jsou plagiátoři a nárok na existenci má jen LISP? Před patnácti lety byl ortodoxním LIPSistům trnem v oku Unix a C. Tedy kombinace, bez které by nevznikl Free Software, Linux ani dnešní open-source boom. Z tohoto pohledu by nepřízeň této fundamentalistické komunity měla být pro XML dobrým znamením.

Psáno s mírnou nadsázkou a hlubokým respektem k LISPu.