Preskočiť na obsah

Unixová filozofia a prečo by mal mať softvér CLI

Jedna z najtrvácnejších myšlienok v dejinách softvéru sa zmestí do troch viet a vznikla v Bell Labs v sedemdesiatych rokoch. Volá sa unixová filozofia a hovorí: rob malé nástroje, ktoré robia jednu vec dobre, a nechaj ich spolupracovať cez jedno spoločné rozhranie. Tu je, prečo to stále platí — a čo z toho plynie pre softvér, ktorý si dnes objednávate alebo staviate.

Bell Labs, sedemdesiate roky a tri vety

Unix vznikol koncom šesťdesiatych a v sedemdesiatych rokoch v Bell Labs — operačný systém, z ktorého priamo či nepriamo vychádza Linux, macOS aj veľká časť internetovej infraštruktúry. Spolu s ním vznikol aj spôsob uvažovania o softvéri, ktorý jeho tvorcovia neskôr zhrnuli do niekoľkých zásad. Doug McIlroy ich v roku 1978 (v špeciálnom čísle Bell System Technical Journal venovanom Unixu) sformuloval ako: každý program nech robí jednu vec dobre; výstup každého programu nech sa dá použiť ako vstup iného, zatiaľ neznámeho programu; softvér skús nasadiť čo najskôr a neváhaj zahodiť nemotorné časti a prepísať ich; namiesto neskúsenej výpomoci radšej použi nástroj.

V populárnej skratke, ktorá sa odvtedy ustálila, to znie ešte stručnejšie: píš programy, ktoré robia jednu vec a robia ju dobre; píš programy, ktoré spolupracujú; píš programy, ktoré pracujú s textovými prúdmi, lebo text je univerzálne rozhranie. Tá posledná veta je kľúč — a o nej je celý zvyšok tohto textu.

Rúra: jedno rozhranie pre všetko

Predstavte si tri malé programy. Jeden vypíše zoznam súborov v priečinku. Druhý z ľubovoľného textu nechá len riadky, ktoré obsahujú zadané slovo. Tretí spočíta riadky. Každý z nich je hlúpy — vie len svoju jednu vec. Ale Unix má operátor, znak rúry (|), ktorý výstup jedného programu privedie priamo na vstup ďalšieho. Napíšete teda: „vypíš súbory | nechaj len tie s .pdf | spočítaj ich“ — a dostanete počet PDF súborov v priečinku. Nikto taký nástroj nenapísal. Vznikol poskladaním troch, z ktorých ani jeden o tých ostatných nevie.

Funguje to preto, že sa všetky zhodnú na jednej veci: posielajú si riadky textu. Žiadny špeciálny formát, žiadna integrácia šitá na mieru medzi „výpisom súborov“ a „spočítaním riadkov“ — len text. Práve to McIlroy myslel univerzálnym rozhraním. A je to dôvod, prečo zopár desiatok malých unixových nástrojov vie vytvoriť tisíce užitočných kombinácií: nemusíte stavať nové, len skladáte existujúce. Softvér prestáva byť hradom s jedným vchodom a stáva sa stavebnicou.

To isté sa dá povedať aj negatívne. Program, ktorý sa dá ovládať len cez vlastné okno s tlačidlami a svoj výstup ukáže len na obrazovke, je z tejto stavebnice vylúčený. Nedá sa zaradiť do reťaze, nedá sa zautomatizovať, nedá sa o tretej ráno spustiť bez človeka. Nie je zlý — len stojí osamote.

Prečo to nezomrelo — len sa to presťahovalo

Unixová filozofia má skoro päťdesiat rokov, ale neodišla do dôchodku. Posunula sa o poschodie vyššie. Jednotkou už nemusí byť päťdesiatriadkový program v jazyku C; môže to byť služba, funkcia, API endpoint alebo nástroj vystavený AI agentovi. A „univerzálne rozhranie“ dnes nie je len text v termináli — je to aj štruktúrované dáta cez HTTP (JSON, REST: softvér, ktorý sa rozpráva so softvérom) a čoraz častejšie MCP (softvér, ktorý sa rozpráva s AI agentmi). Forma sa zmenila, pravidlo nie: rob jednu vec dobre, vystav ju cez rozhranie, ktoré vie použiť stroj, a nechaj ostatných skladať.

Z tohto uhla pohľadu sú CLI, API a MCP tri prejavy tej istej myšlienky. CLI vystaví operácie systému skriptom a ľuďom v termináli. API ich vystaví iným programom. MCP ich vystaví agentom. Systém, ktorý má všetky tri, sa dá ovládať, prepojiť a automatizovať mnohými spôsobmi naraz. Systém, ktorý má len webové okno, sa dá ovládať jedným — ručne, klikaním. A každá operácia, ktorá sa dá urobiť len ručne, je operácia, ktorá sa raz urobí nesprávne, neskoro alebo vôbec, lebo „to vedel len Janko a ten už u nás nerobí“.

Čo z toho plynie pre softvér, ktorý staviate

Keď staviame systém — webovú aplikáciu, SaaS, informačný systém — držíme sa toho istého. Systém je CLI-enabled: migrácie, importy, administratívne a dávkové operácie sa dajú spustiť z terminálu aj z CI/CD, nielen z admin panelu. Backend je zdroj pravdy (API-first), nie len obslužná vrstva pod jedným UI. A kde to dáva zmysel, je systém pripravený aj na agentov — buď má MCP server, alebo je navrhnutý tak, že sa dá pridať bez prepisovania backendu. Žiadna z týchto vrstiev nie je príplatok; je to súčasť toho, že je softvér urobený poriadne.

Nie je to nostalgia za textovými terminálmi. Je to praktické: skladateľný softvér sa lacnejšie prevádzkuje (operácie sú skripty, nie rituály), lacnejšie integruje (rozhranie už existuje, netreba ho dolepovať) a lepšie znáša odchody ľudí (vie ho prevziať váš tím aj iný dodávateľ). A je v tom aj rozdiel medzi softvérom, na ktorom sa dá stavať, a softvérom, v ktorom ste uväznení. Päťdesiat rokov starý princíp z Bell Labs je stále jedna z najlacnejších poistiek, akú vie architektúra dať.

Riešite niečo z toho?

Ak staviate softvér a chcete ho mať skladateľný — CLI, API, MCP — ozvite sa. Krátky hovor a povieme vám, či a ako vieme pomôcť.