Portál AbcLinuxu, 6. května 2025 08:51

Umění programování v Unixu

19. 1. 2005 | Marek Grác
Články - Umění programování v Unixu  

Recenze překladu jedné z nejznámějších knih o unixové filosofii od Erica S. Raymonda.

Priznám sa, že keď som pred čosi viac než rokom čítal knihu The Art of Unix Programming od Erica S. Raymonda, tak som nečakal, že by niekedy mohla vyjsť v češtine (či nebodaj v slovenčine). Ale stal sa zázrak :) Na prelomu rokov vyšiel český preklad a mne sa k nemu podarilo prebojovať.

V čom je vlastne táto kniha taká zvláštna a čím sa líší od tých desiatok kníh o programovaní, ktoré nájdete na policiach kníhupectiev? Začneme pekne po poriadku. Knihu napísal Eric S. Raymond, ktorý je jedným z hlavných predstaveľov hnutia slobodného softvéru. Pre tých, ktorý ho príliš nepoznajú, treba povedať, že jeho názory sú niekde na polceste medzi umierneným Linusom Torvaldsom a extrémistickým R. Stallmanom.

Okrem neho do knihy prispeli (formou vlastných krátkych pasáží) desiatky ďaľších autorov, ktorých mená nie sú neznámou. Spomeňme napriklad Briana Kernighana, Kena Thompsona (autor UNIXu), Stevea Johnsona či Douga McIlroye (vynálezca pipe - trubiek - dátovodov).

Nie ako, ale prečo

Knihy však obvykle nekupujeme podľa autora, ale podľa toho, čo v nich nájdeme. Aj v tomto sa kniha líší od konkurencie. Nenaučí vás programovať v Céčku, Perle, či awk. Nedozviete sa ani o tom, ako volať a používať tie, či oné funkcie jadra. Dokonca ani to, ako vlastne jadro funguje. Odpovede na otázku ako na to? sa nedozviete, ale dozviete sa niečo, čo je minimálne rovnako dôležité. Odpoveď na prečo práve takto? Kniha obsahuje postupy, ktoré sa používajú v Unixe a snaží sa ich vysvetliť, ukázať a presvedčiť, že práve oni sú tým pravým.

Umění programovat v Unixu je rozdelená na štyri hlavné časti. V prvej, nazvanej Kontext, sa dozviete, okrem dôvodov, prečo je Unix taký dobrý, aj (a najmä) základy navrhovania programov. Tieto pravidlá sú nosnou časťou prvej kapitoli a na nich naväzuje aj nemalá časť zbytku knihy. Jedná sa o pravidlá, ktoré (do istej miery) pozná väčšina programátorov a snáď sa nimi aj intuitívne riadi. Prevažná väčšina pravidiel je bezkonfliktných a univerzálnych. Dajú sa zhrnúť do jednej vety, ako Píšte jednoduché časti, ktoré sa dajú jednoducho prepojiť. alebo Oddelujte zásadu od mechanizmu a rozhranie od toho, čo je za ním.

Nájdu sa však aj také, o ktorých sa už polemizovať dá minimálne s ohľadom na skúsenosti z iných platforiem a skúsenosti s bežnými používateľmi, ako napríklad Ak program nemá čo povedať, nech radšej mlčí.

Hackerská a unixová kultúra

Kniha ďalej pokračuje s historickým prehľadom dvoch kultúr (hackerskej a unixovej) o ich vývine a následnom spojení. Záver kapitoly patrí letmému porovaniu operačných systémov. Na škodu je, že autor nepriznáva konkurencii prakticky žiadnu silnú stránku. Tento fakt sa vyskytuje priebežne v celej knihe a najhoršie z neho vychádza (ako ináč) Windows NT & spol.

Druhá kapitola sa zaoberá niečím konkrétnejším. A to prevádzaním skôr spomenutých pravidiel do návrhu aplikácii. Z množstva pravidiel sú vybrané tie najdôležitejšie: Modularita, Zameranie na textové formáty, Transparentnosť, či Medziprocesová komunikácia. Všetky tieto pravidlá sú rozvedené do väčšej hĺbky a čo je dôležitejšie, pre každé z nich je na výber aj niekoľko prípadov z praxe (kmail, gcc, SMTP, POP3). Bohužiaľ v celej knihe nájdeme len jeden antipríklad pre tieto pravidlá, ktorý ukazuje, že občas je výhodné na tieto pravidlá zabudnúť (fetchmail).

Kapitola o návrhu pokračuje pohľadom na minijazyky, teda jazyky, ktoré sú určené pre konkrétnu úlohu, akými sú regulárne výrazy, XSLT, či jazyk používaný v súboroch Makefile. Ďalej pokračuje pohľadom na konfigurácie programov, ich spôsobmi a vhodnými formátmi pre konfiguračné súbory. Nemenej dôležitou časťou návrhu v unixovom štýle je aj návrh rozhrania a ich štandardov. Na záver sa dozviete ešte pár slov o optimalizácii (resp. prečo by ste sa jej mali vyhýbať) a vhodnej zložitosti programov.

Implementácia

V tretej kapitole sa autor posúva ešte ďalej, tentokrát k implementácii. Aj ňou nás sprevádza od úplného počiatku a snaží sa zodpovedať nemálo otázok. Jednou zo základných (a často preceňovaných) otázok je výber programovacieho jazyka. Autor podáva prehľad o programovacích jazykoch C, C++, Perl, Lisp, Java a kedy je vhodné použiť ktorý. Po zvolení jazyka potrebujeme vybrať vhodné nástroje na editáciu kódu (vi, Emacs), generovanie kódu (yacc, lex, Glade), či systémy pre správu verzií. Na záver si autor opäť neodpustil podkapitolku o tom, že Emacs je to pravé vývojové prostredie :). V poslednej časti tejto kapitole sa dozviete viac o znovuobjavovaní kolesa a problematiky licencií k takýmto kolesám.

Posledná kapitola sa venuje problematike unixovej komunity. Predstavuje rady pre prenositeľnosť, dodržiavanie štandardov, či postupy pri dokumentovaní projektu. Kde sa ako východisko zo súčasnej spleti formátov ponúka DocBook. Ako sa správať po vydaní projektu a čo zahrňovať do distribúcie je témou ďaľšej časti tejto kapitoly. Nasleduje ešte letmé porovnanie licencií (MIT, BSD, Artistic, GPL, MPL) a na záver sa dozviete o príležitostiach a možnom nebezpečí, ktoré na nás v Unixe ešte čaká.

Kniha je ukončená vysvetlením použitých skratiek, obsiahlou bibliografiu, ktorá obsahuje aj postrehy k daným knihám, a niekoľkými námetmi na zamyslenie. Tie sú písané po vzoru východných filozofií ako rozhovor medzi žiakom a majstrom.

Záver

Toto dielo je jednou z najkvalitnejších kníh o programovaní, ktoré som kedy čítal, ale napriek tomu je potrebné povedať, že k dokonalisti mu ešte čosi chýba. Najväčším problémom je, že autor sa neodvažuje priznať konkurencii žiadne silné stránky. Nie je to len problémom tohto autora, s rovnakým problémom sa potýkajú viaceré skupiny, ktoré chcú presadzovať vlastné názory. Podľa mňa by uznanie silných stránok ešte zvýšilo hodnotu tejto knihy. Druhým (o mnoho menším) problémom je čiastočný extrémizmus, čo je samozrejme právom autora (Na druhé straně stojíme my, bojovníci za svobodu - nikoli jen za naši svobodu, ale za svobodu všech).

Hodí sa ešte spomenúť, že kniha (v anglickej verzii) je voľne dostupná na stránkach www.faqs.org/docs/artu/. Veľmi zaujímavú esej, ktorá sa zaoberá touto knihou, je Biculturism, autorom ktorej je Joe Spolsky, ktorý je programátor pre Windows.


NázevUmění programování v Unixu
AutorEric S. Raymond
VydalComputer Press
ISBN80-251-0225-4
Datum vydání2004
Počet stran512
Doporučená cena590 Kč/880 Sk

Související články

Co je to Linux
Linux v kostce

Odkazy a zdroje

CPress: Umění programování v Unixu

Další články z této rubriky

Týden na ITBiz: Svět IT a burzy, umělá inteligence, Nvidia a outsourcing
Linuxové foto novinky: pozvolná evoluce
PCLinuxOS 2017.2 MATE - tak trochu zvláštní linuxová distribuce
Krátký pohled na Fedoru 25, Wayland a GNOME 3.22
Naprosto ničím nezajímavé Lubuntu 16.10

Diskuse k tomuto článku

19.1.2005 08:13 Cronin
Rozbalit Rozbalit vše odporucam
Odpovědět | Sbalit | Link | Blokovat | Admin
Knihu mam, uz som z nej dve tretiny precital, odporucam ju. Nie je to ziadny unixovsky fanatizmus, ale uzitocne fakty, upozornenia, riesenia a pod.
19.1.2005 08:37 jan.xxx
Rozbalit Rozbalit vše Emacs
Odpovědět | Sbalit | Link | Blokovat | Admin
Ja teda rád používám (G)VIM. Ale kdyby někdy někdo na nějaké konferenci, výstavě či sešlosti předvedl Emacs, rád bych se kouknul na jeho možnosti :-) Ale naživo.
19.1.2005 09:36 Tomáš Oberhuber
Rozbalit Rozbalit vše dobrá kniha
Odpovědět | Sbalit | Link | Blokovat | Admin
Knihu jsem přečetl již skoro celou a souhlasím, že se jedná o opravdu výjimečné dílo. Souhlasím, že autor není úplně objektivní. S jeho kritikou MS Windows jsem ale souhlasil. Ono nejde ani tak o kritiku tohoto systému, ale o konkrétní popis nedostatků jako systemový registr, absence kvalitního shellu, přílíšná vázanost na grafické rozhraní, špatné zabezpečení apod. Není to jediná kniha týkající se operačních systémů, kde MS Windows vycházejí tak špatně. Trochu přehnaná se mi zdála kritika jazyka C++, i když je určitě dobré si uvědomit, že není nutné používat objekty vždy a všude. Podle mě nejméně objektivní byla část vyzdvihující Emacs - možná je to ale jen tím, že tento porgram nepoužívám. Ještě jednu chybku bych zmínil a to je překlad. Naštěstí se nejedná o vážné chyby, spíše úsměvné výroky: matematické operátory mohou být komunikativní, distribuční a asociativní (strana 122). Nemůžu už najít překlad FPS stříleček, ale bylo to něco jako "osoby prvních střelců".
19.1.2005 13:47 bk
Rozbalit Rozbalit vše Re: dobrá kniha
Jestli je ten preklad skutecne takovy, tak si tu knizku prectu radeji v anglictine.
19.1.2005 14:19 puco
Rozbalit Rozbalit vše Re: dobrá kniha
Kazda knizka sa oplati precitat v povodnom jazyku.
19.1.2005 14:21 Marek 'marx' Grác | skóre: 21 | blog: Paralelný blog | Brno / Bratislava
Rozbalit Rozbalit vše Re: dobrá kniha
Podla mna ten preklad nie je zase az tak hrozny. Povedal by som, ze je to taky standard, kde tu sa fakt zadari, ale aspon mne to dojem z knihy prilis nepokazilo
20.1.2005 16:16 butrus
Rozbalit Rozbalit vše Re: dobrá kniha
Tak nevim, ale me odrazuje uz i ten nazev... Co to prob*ha je "umeni programovani" :(( Kdyz uz nic lepsiho, tak treba "unixove programatorske umeni"! To musel prekladat nekdo, kdo toho o jazyce vi houby a nema pro nej vubec cit:(((
20.1.2005 19:16 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: dobrá kniha
Tos to spravil jako prase branku. Alespoň se snad měl zachovat původní význam...
21.1.2005 09:08 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: dobrá kniha
Brutus asi spatne vidi...

Stoji tam "Umění programování v UNIXu" myslím...
22.1.2005 05:25 butrus
Rozbalit Rozbalit vše Re: dobrá kniha
Hmm... jenze "umeni programovani" v cestine neznamena nic.
egg avatar 25.1.2005 19:22 egg | skóre: 20 | Praha
Rozbalit Rozbalit vše Re: dobrá kniha
Ale jisteže znamená. Stejně jako umění tance či umění hudby. Nejsem sice lingvista, ale podle mě je to jazykově zcela v pořádku.
19.1.2005 23:12 Honza
Rozbalit Rozbalit vše Re: dobrá kniha
mimochodem, original knihy maji v mem oblibenem "knihkupectvi" eDonkey :)
20.1.2005 12:25 Sofronius
Rozbalit Rozbalit vše Re: dobrá kniha
A co tohle? http://www.faqs.org/docs/artu/
19.1.2005 15:22 Croinin
Rozbalit Rozbalit vše Re: dobrá kniha
Objektivita: kniha je taka objektivna, aku len Eric Raymond o danej problematike moze napiast. Jasne ze je trochu poznacena tym, ze je unixista, ale snazil sa byt objektivny, to je kazdemu sudnemu cloveku jasne.

Preklad: prekladatel sa snazil zadostucinit jazykovedcom, pokial to bolo mozne. Sam pisem clanky, v ktorych pocitacovu anglicku terminologiu musim prekladat do slovenciny, pokial je to mozne. V ulohe prekladatela vyssie uvedenej knihy by som postupoval asi velmi podobne.
20.1.2005 05:00 mira
Rozbalit Rozbalit vše Re: dobrá kniha
matematické operátory mohou být komunikativní, distribuční a asociativní
asocialni by bylo usmevnejsi :-)
20.1.2005 09:20 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: dobrá kniha
Sic se Bogdan (překladatel) snažil moc a moc, některé pojmy jsou skutečné perly. Například mluvnice LL(1) :-)
19.1.2005 09:41 Pavel Stehule
Rozbalit Rozbalit vše Preklad je hrozny
Odpovědět | Sbalit | Link | Blokovat | Admin
Mam pocit, ze nepresel zadnou korekturou. Po par strankach si vsimnete, ze neco neni v poradku
Jiří Svoboda avatar 19.1.2005 15:42 Jiří Svoboda | skóre: 37 | blog: cat /dev/mind | Prostějov
Rozbalit Rozbalit vše Biculturalism
Odpovědět | Sbalit | Link | Blokovat | Admin
Velmi doporucuji precist si tu esej "Biculturalism", na niz je z clanku odkaz. Zrovna jsem ji docetl, fakt moc pekne!
19.1.2005 20:02 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše plne souhlasim
Odpovědět | Sbalit | Link | Blokovat | Admin
plne souhlasim, kdyz jsem tuto knizku videl v obchode, rikal jsem si ze to snad ani neni pravda, ze to nekdo prelozil a vydal...

urcite ji doporucuji - nektera fakta jsou sice pritazena za vlasy a ten preklad taky neni nejidealnejsi, ale osobne jsem se utvrdil v nekterych faktech o kterych sem si myslel, ze jsou jenom vyplody meho choreho mozku - viz nazory na C++ :-]

sice je to hodne o pripominani "starych" veci, ale ono je obcas si treba uvedomit nektere unixove postupy, ktere uz jdou nejak tak mimo, pokud pracujete treba v Jave....
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.