Umění programování v Unixu

Knihy pro programátory typicky obsahují vysvětlení syntaxe jazyka, použít knihoven a překladačů a na každé stránce mnoho řádků kódu. Tahle kniha o programování od Erica Stevena Raymonda je zcela jiná. Neobsahuje snad jediný řádek kódu, nevysvětluje žádnou knihovnu. Jak to tedy může být kniha o programování, říkáte si?

Operační systém UNIX má svou vlastní filozofii, díky které již 40let nejen přežívá, ale je nasazován ve stále větší míře a stává se inspirací pro další operační systémy. A právě především o filozofii Unixu je tato kniha. Hned v první kapitole autor uvádí svých 17 pravidel (modularita, čistota, oddělení atd.), na které dále odkazuje v dalším textu při popisu jednotlivých případových studií.

Čtenář je poté seznámen s historií Unixu. Celá druhá kapitola se detailně věnuje jeho vzniku a počátkům vývoje, rozdělení týmů po „první unixové válce“ a následná komercionalizace. Po tomto 60stránkovém úvodu jsou popsány rozdíly mezi jednotlivými unixovými distribuce a také rozdíly mezi Unixem a ostatními operačními systémy. Alespoň tyto první dvě kapitoly by si měl přečíst každý, kdo s Unixem pracuje a nebo se pro něj chystá programovat. Jsou skutečně inspirativní.

Autor také popisuje svůj pohled na ideální operační systém a do kontrastu vedle toho postaví nejhorší vlastnosti, které podle něj OS může mít. Zde si neodpustím poznámku, tato kapitola (napsaná v roce 2001) se až nepříjemně naváží do OS Windows. Myslím si, že Unix nemá toto nespravedlivé srovnávání zapotřebí. Ovšem později v knize také kritizuje i negativní vlastnosti Unixu, pravdivě přiznává nepovedené vlastnosti, nekompatibilitu mezi jednotlivými verzemi apod.

Po velmi zajímavém a filozofickém úvodu, který mi velmi pomohl se zorientovat a pochopit některé věci z unixového světa, následuje již technická část. Autor popisuje několik návrhů programů a to na konkrétních případových studiích, zejména na jeho vlastním programu fetchmail (program pro stahování z více typů schránek a různých serverů a s možností je dále posílat na vybraný poštovní účet).

Jsou vyzdvihovány vlastnosti vývoje jako je otevřený kód, používání výhradně textových protokolů (opět s ukázkami dobrých a špatných protokolů) a textových konfiguračních souborů s jednoduchým formátem. Tvorbu dobrého protokolu autor poté vysvětlí na konkrétních příkladech protokolů POP3 a IMAP, se kterými se důvěrně seznámil při psaní programu fetchmail.

Snad ještě zajímavější kapitolou je návrh formátu pro ukládání dat na disk a to jednak konfiguračních ale také datových souborů. Autor popisuje a vysvětluje použití konkrétních formátů jako RFC 822 (formát pro elektronickou poštu), CVS, XML, INI. Dále se autor zabývá otázkou, zda používat komprimované formáty (například několik dokumentů XML v zip archivu, jak jej používá OpenDocumentFormat). Jsou též popsány mini jazyky (sng, awk, m4 a další) a jejich použití v konfiguračních souborech, či jako generátory konfigurací (typicky m4 pro sendmail).

V dalších statích se dočteme jak a v čem psát správně dokumentaci k programu (LaTeX, DocBook), jak má vypadat a jak program propagovat komunitě i uživatelům. A nejen dokumentaci, ale i samotný program. Autor srovnává mnoho programovacích jazyků, jejich účel a vývoj. Opět dává přednost tradičním Unixovým jazykům jako C před například Javou, která se od té doby hodně posunula kupředu a stala se nejpoužívanějším jazykem. Opět je třeba mít na paměti jisté stáří knihy a brát ji skutečně jako filozofický nadhled a ne konkrétní doporučení. Zde se již věnuje odbornějším tématům jako programování s použitím vláken, meziprocesovou komunikaci, zamykání paměti, škálování výkonu a optimalizace.

V neposlední řadě autor popisuje tvorbu a vlastnosti uživatelského rozhraní aplikace. Ať již se ovládá pomocí parametrů příkazového řádku, či pomocí příkazů v nějakém textovém rozhraní (těch by podle Erica mělo být maximálně 7, tedy tolik, kolik položek člověk udrží v krátkodobé paměti) nebo snad pomocí grafického rozhraní, autor knihy doporučuje mít navrženou možnost snadné spolupráce mezi několika programy.

Knihu skutečně doporučuji k přečtení, buď v českém překladu, kde jsem nenašel výraznější nesrovnalosti a tímto překladatele chválím, tak v anglickém originálu na stránkách: (http://www.catb.org/~esr/writings/taoup/html/ )

Příspěvek byl publikován v rubrice Knihy, UNIX. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

3 komentáře: Umění programování v Unixu

  1. Bystroushaak napsal:

    Skvělá knížka, ale překladatel si zaslouží smrt.

    Podrobnosti viz http://hradlo.blogspot.com/2009/02/eric-s-raymond-umeni-programovani-v.html

  2. Pingback: Procesor pro Linux | Heronovo

  3. Pingback: Krása příkazového prostředí | Heronovo

Komentáře nejsou povoleny.