Operační systém Unix má svou vlastní filozofii, díky které již čtyřicet let 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 sedmnáct 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 šedesátistrá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 staví nejhorší vlastnosti, které podle něj operační systém může mít. Zde si neodpustím poznámku: tato kapitola (napsaná v roce 2001) se až nepříjemně naváží do Microsoft 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 zorientovat se a pochopit některé věci z unixového světa, již následuje 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ětluje 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 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, meziprocesové komunikaci, zamykání paměti, škálování výkonu a optimalizaci.
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ě sedm, 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, čímž chválím překladatele, nebo v anglickém originálu.
Název: Umění programování v Unixu
Autor: Eric S. Raymond
Formát knihy: 167 mm × 225 mm, 512 stran černobílých
Datum vydání: prosinec 2004
Nakladatel: Computer Press
ISBN: 80-251-0225-4