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ť.