Je programování umění?

Na prvním ze svých seminářů jsem studentům položil jednoduchou otázku: "Co je to programování?". Otázku jsem mínil spíše jako řečnickou, a tak jsem si na ni i v duchu své dávné noční úvahy odpověděl: programování je kombinace vědy, řemesla a umění.

O prvních dvou bodech nejspíš není pochyb – část programování opravdu je věda (obor, který studuju, se ostatně v angličtině jmenuje computer science) a o řemeslné části by mohli vyprávět všichni, kdo píší x-tý redakční systém nebo účetní aplikaci. Je ale programování umění?

K odpovědi na tuto otázku bychom potřebovali přesně vědět, co to vůbec umění je. V životě jsem četl několik nicneříkajících definic, ale pak jsem narazil na jednu, která má něco do sebe: Umění je dokumentace tisíce zajímavých rozhodnutí.

Slovo dokumentace znamená, že umění musí být něco hmatatelného, hmotného, konkrétního, existujícího. Nestačí pouhá myšlenka. Zpracovaný kámen, pomalované plátno, lidé hrající divadelní hru, disk naplněný daty... to jsou příklady různých podob, do kterých lze umění vtělit.

Číslovka tisíce znamená netriviálnost. Jakékoliv umění musí stát autora úsilí, musí přemýšlet jak své myšlenky či pocity vyjádřit nejlepší formou, jakým způsobem dosáhnout u druhých požadovaného účinku.

A k tomu je potřeba se mnohokrát rozhodovat. Každé z oněch tisíců drobných rozhodnutí, které autor při tvorbě udělá, výslednou podobu díla ovlivňuje. Divák, zvlášť pak nepoučený, nemá šanci jednotlivá detailní rozhodnutí vnímat. Vnímá jen výslednou synergii a dílo jako celek. U filmu si nevšimnete jemné práce se světlem či šikovné ruky střihače, u malby neřešíte výraz každé postavy v pozadí. Ale víte, jestli film uběhl jako voda nebo nudil a jestli malba působí třeba depresivně nebo naopak vesele.

Když se nyní podíváme na programování, zjistíme, že uvedená definice k němu docela sedí. Výsledkem programování je program – tedy něco hmatatelného. Málokterý program je triviální, většina je jich naopak složitých až příliš. A zajímavá rozhodnutí, která dohromady utvářejí dojem z výsledného programu u uživatelů, dělá programátor každou minutu – od velkých architekturálních (napíšeme aplikaci v Javě nebo Ruby?), přes běžná provozní (budou položky seznamu editovatelné přímo v seznamu nebo v samostatném formuláři?) až k úplným drobnostem (pojmenuju proměnnou maxUserCount nebo userCountMax?).

Závěr: Myslím, že podle výše uvedené definice programování uměním rozhodně je.