Filozofie Unixu
Filosofie Unixu je soubor kulturních norem a filosofických přístupů k vytváření softwaru, založený na zkušenostech předních vývojářů operačního systému Unix.

Doug McIlroy: Čtvrt století UNIXu 
Doug McIlroy, tehdejší ředitel Výzkumného počítačového oddělení Bellových laboratoří a autor unixových rour, shrnul filosofii unixu následovně:

Toto se často zkracuje na: „Pište takové programy, které dělají jen jednu věc a dělají ji dobře.“

Eric Raymond 
Eric S. Raymond, shrnul ve své knize The Art of Unix Programming, filosofii Unixu jako široce užívaný KISS princip („Zachovej to jednoduché, hlupáku!“) Sestavil také sérii pravidel pro psaní programů:

 Pravidlo modularity: Pište jednoduché části, které budou spojeny bezchybným rozhraním.
 Pravidlo srozumitelnosti: Srozumitelnost je lepší než šikovnost.
 Pravidlo kompozice: Navrhujte programy tak, aby mohly být napojeny na jiné programy.
 Pravidlo oddělování: Oddělujte postupy od mechanismů; oddělujte rozhraní od nástrojů.
 Pravidlo jednoduchosti: Programujte jednoduše; složitě jen tam, kde je to nezbytné.
 Pravidlo úspornosti: Pište rozsáhlé programy jen je-li zřejmé, že to jiným způsobem nejde.
 Pravidlo přehlednosti: Programujte přehledně, aby byly audity kódu a odstraňování chyb jednodušší.
 Pravidlo robustnosti: Robustnost je potomek přehlednosti a jednoduchosti.
 Pravidlo reprezentace: Převeďte znalosti do kódu, aby mohl být program hloupý a robustní.
 Pravidlo nejméně překvapivého: Při návrhu rozhraní vždy dělejte tu nejméně překvapivou věc.
 Pravidlo ticha: Nemá-li program co nového říct, neměl by říkat nic.
 Pravidlo opravy: Musíte-li selhat, selžete hlasitě a co nejdříve.
 Pravidlo úspornosti: Programátorův čas je drahý, šetřte ho použitím strojového času.
 Pravidlo rozmnožování: Vyhněte se ručnímu psaní kódu; kdykoliv to jde, pište programy, které píšou další programy.
 Pravidlo optimalizace: Vytvořte správně fungující program, než ho začnete optimalizovat.
 Pravidlo pestrosti: Nevěřte pouze v jedno správné řešení.
 Pravidlo rozšiřitelnosti: Plánujte do budoucnosti, protože ta přijde dříve, než si myslíte.

Mike Gancarz: Filosofie Unixu 
V roce 1994 Mike Gancarz (člen týmu, který navrhl X Window System), spojil své zkušenosti z Unixu a z debat s ostatními programátory a lidmi z ostatních oborů závisejících na Unixu, aby nakonec přišel s Filosofií Unixu, kterou shrnul do devíti stěžejních bodů:
 Malé je krásné.
 Udělejte každý program tak, aby dělal jednu věc dobře.
 Vytvořte prototyp co nejdříve.
 Upřednostňujte přenositelnost před efektivitou.
 Uchovávejte data v prostých textových souborech.
 Uplatněte využitelnost softwaru ve svůj prospěch.
 Použijte shellové skripty ke zvýšení přenositelnosti a využitelnosti.
 Vyhněte se svazujícímu uživatelskému rozhraní.
 Udělejte z každého programu filtr.

Horší je lepší 

Richard P. Gabriel podotknul, že stěžejní výhodou Unixu je skutečnost, že je postaven na filosofii, kterou označil jako „horší je lepší“, kdy jsou implementace a jednoduchost rozhraní důležitější než ostatní vlastnosti — včetně správnosti, konzistence a úplnosti. Gabriel tvrdí, že tento model vyniká klíčovými evolučními výhodami, přestože zpochybňuje kvalitu některých výsledků.

Jako příklad můžeme uvézt monolitické jádro Unixu. Pokud je signál odeslán procesu, který je dlouhodobě blokován aktivním vstupem/výstupem v jádře, co by se se signálem mělo stát? Měl by být pozdržen, třebaže na dlouhou dobu (možná donekonečna), než vstup/výstup skončí? Odesílatel signálu by nemohl být ukončen, dokud běží proces v privilegovaném módu, s citlivými daty v zásobníku. Měl by kernel zrušit systémové volání a uložit ho, aby ho později znovu vyvolal, za předpokladu, že se odesílatel signálu je úspěšně ukončen?

V těchto případech upřednostňovali Ken Thompson a Dennis Ritchie jednoduchost nad dokonalostí. Unixový systém čas od času ukončí systémové volání předčasně a vrátí chybu, která říká, že nic neudělal - „Přerušené systémové volání“, v dnešních systémech chyba č. 4 (EINTR). Systémové volání je samozřejmě přerušeno, aby mohl být obsloužen chybový signál. Tato situace může nastat jen u několika dlouho trvajících systémových volání, jako jsou read(), write(), open() nebo select(). Výhodou je, že díky tomu je systém I/O mnohem jednodušší k návrhu a pochopení. Drtivá většina uživatelských programů nebyla vůbec ovlivněna vzhledem k tomu, že neobsluhují jiné signály než SIGINT nebo Control-C, při jejichž volání by byly okamžitě ukončeny. U zbylých několika programů — jako například shell nebo textové editory, které reagují na jednotlivé stisky kláves — lze systémová volání obalit tak, aby byla znovu odeslána v případě EINTR chyby. Tím byl tento problém vyřešen jednoduchým způsobem.

Citace 
 „Unix je jednoduchý. Jen musí být člověk génius, aby porozuměl jeho jednoduchosti.“ – Dennis Ritchie
 „Unix nebyl navržen, aby zabránil jeho uživatelům dělat hloupé věci, protože by jim tím zabránil dělat ty chytré.“ – Doug Gwyn
 „Unix nikdy neříká 'prosím'''.“ – Rob Pike
 „Unix je uživatelsky přívětivý. Nerozlišuje však, ke kterým uživatelům.“ – Steven King
 „Ti, kteří nerozumí Unixu, jsou odsouzeni ho znovu objevit, mizerně.“ – Henry Spencer

 Reference 

 Literatura 
 The Unix Programming Environment by Brian Kernighan and Rob Pike, 1984
 Program Design in the UNIX Environment - The paper by Pike and Kernighan that preceded the book.
 Notes on Programming in C, Rob Pike, September 21, 1989
 A Quarter Century of Unix, Peter H. Salus, Addison-Wesley, May 31, 1994 ()
 Philosophy — from The Art of Unix Programming, Eric S. Raymond, Addison-Wesley, September 17, 2003 ()
 Final Report of the Multics Kernel Design Project by M. D. Schroeder, D. D. Clark, J. H. Saltzer, and D. H. Wells, 1977.
 The UNIX Philosophy'', Mike Gancarz,

Související články 
 Unix
 Plan 9 from Bell Labs
 Roura (software)
 The UNIX-HATERS Handbook
 Softwarové inženýrství
 Hacker

Externí odkazy 
 The Unix Philosophy: A Brief Introduction - by The Linux Information Project (LINFO)
 Joel on Software - Biculturalism
 The truth about Unix: "The user interface is horrid" (1981)
 The Unix Philosophy
 Why the Unix Philosophy still matters

Unix