Bystroushaak's blog / Czech section / Programování / Proč používám Unix/Linux

Proč používám Unix/Linux

Není to tak dávno, co na IRC chanu, kam běžně chodím, vypukl další nesmyslný flame na téma Linux vs Windows. Mezi obhájci Windows byl člověk, který poměrně dlouho používal Fedoru, takže znal klady i zápory Linuxu poměrně dobře. Už si nevzpomínám jak flame skončil, ani který systém "vyhrál", ale někdy během něj jsem si uvědomil proč vlastně používám Linux.

Důvod je překvapivě jednoduchý - protože Unix/Linux poskytuje lepší uživatelské API.

Osobně mi vyhovuje takový operační systém, který poskytuje spoustu API na uživatelské úrovni a vůbec nejlepší by bylo, kdyby byl celý systém jen API + několik grafických nástaveb, které jeho ovládání zpřístupňují pro uživatele. Pod termínem "uživatelské API" si představuji takové API, se kterým můžu jako uživatel nějak interagovat, tedy například shell, nikoli volání funkcí WinAPI z programu, který později zkompiluji.

Před pár lety dostal od kamaráda Atari 800XE a o nějaký ten rok později jsem si k němu sehnal zdroj. Když jsem Atari spustil, nějak jsem nepobral co to má být - čekal na mě jakýsi prompt, ale k příkazové řádce to mělo daleko.

Tenkrát mě to dost zaujalo, tak jsem se rozhodl že zjistím jak to vlastně funguje. Jelikož zrovna probíhalo nechvalně známé Liberecké mistrovství, vyhodili nás z koleje a dostali jsme cca měsíc volna - času jsem tedy měl dost.

Dva týdny jsem strávil čtením různých starých zdrojů, prozkoumáváním diskmagů a blogů nadšenců. Během té doby jsem zjistil mimo jiné i to, že tam vlastně žádný operační systém není a člověk pracuje doslova v hardware. Na "příkazové řádce" máte k dispozici nějaké to API a programovací jazyk (basic), kterým ho můžete automatizovat. Dost mi to tenkrát učarovalo a od té doby se čas od času ponořím do historie a čtu si jaké to bylo tenkrát..

Unixové systémy mají k výše uvedenému principu ovládání počítače docela blízko - jsou v podstatě celé složené z API, i když míra abstrakce je o několik řádů dál. Silná příkazová řádka vám umožňuje udělat prakticky cokoliv. Každý program umí odpovědět na zavolání a přijímat informace pomocí nějaké standardizované, zdokumentované cesty. V moderních distribucích získáte po instalaci tisíce programů, které rozšiřují dostupné API, navíc je můžete různě propojovat, definovat jak a kdy se mají spustit a když k tomu přidáte práci s internetem, nemá to chybu.

V Linuxu je automatizace všemožných úkolů samozřejmostí a unixová filozofie praví, že uživatel by měl skládat to co chce, z mnoha malých, úzce zaměřených programů, do větších scriptů. Nejlepší na tom je, že lidé to tak skutečně dělají. Pokud někdo (programátor) vytvoří program pro Windows, je to často jednoúčelovka pouze pro uživatele, která je nepoužitelná jinak než klikáním. Na Linuxu je téměř pravidlem, že samotné GUI používá API jiných programů, popřípadě poskytuje nové API, které může uživatel využít.

Windows nic podobného nenabízí. Po instalaci získáte holý systém, ve kterém je prakticky nulové uživatelské vybavení. Poté co si dostahujete desítky programů, z různých často pochybných zdrojů, získáte systém, který je jednoduše graficky ovladatelný, ale neposkytuje skoro žádné uživatelské API, které by se dalo volat. Samozřejmě existují vyjímky, ale dohromady to nevytváří ani zdaleka to, co libovolný unixový systém.

Způsob jakým funguje Windows je vhodný pro běžné lidi, kteří nechtějí vědět jak věci fungují, počítače je nezajímají a nehrozí, že by se kdy snažili něco zautomatizovat. Kdysi dávno jsem se mezi ně také řadil, takže mi Windows přišly jako ten nejlepší systém. Jak jsem se učil čím dál lépe programovat, moje potřeba automatizovat rostla, jenže Windows v tomto ohledu stály za hovno, i když jsem je používal ve spojení s pythonem. Jednoho dne jsem se odhodlal zkusit Linux, a zjistil jsem že mi vyhovuje. Přečetl jsem si pár manuálů a cítil jsem se v něm jako ryba ve vodě.

Netvrdím že unixové systémy jsou ty nejlepší existující z hlediska uživatelského API, ale pokud vím tak jsou nejlepším jednoduše dostupným kompromisem, mezi klikacím ovládáním a scriptovatelným API. Windows to možná dohnaly powershellem, ale zatím jsem se s ním nesetkal, takže se k němu nemůžu vyjadřovat.

Become a Patron