Vyšlo v týdeníku Computerworld č. 5/94 v roce 1994
Vytištěno z adresy: http://www.earchiv.cz/a94/a405c120.php3

Sophisticated

Programování je činnost, jejíž výsledek je jen obtížně měřitelný. Napíše-li jeden programátor za den deset řádek v nějakém vyšším programovacím jazyku, a jiný jich zplodí několik stovek, kdo z nich odvedl více práce? Manuálně jistě ten druhý (musel více bušit do kláves), ale pokud jde o funkci a užitnou hodnotu vzniklého programu?

Mnoho lidí si příliš neuvědomuje, že programování v užším slova smyslu je vlastně jen jakési přepisování něčeho z jedné formy do druhé. Tedy do značné míry jde o rutinní činnost, o které vtipálkové říkají, že by ji mohla zastávat i cvičená opice. Tak zlé to zase není, ale racionální jádro to má.

Chci-li napsat program, který má něco smysluplného dělat, musím nejprve provést mnoho věcí: především rozmyslet si, co vlastně mám řešit, pochopit podstatu řešeného problému a všech relevantních souvislostí, vybrat či navrhnout jedno konkrétní řešení a pak sestavit konkrétní algoritmus, podle kterého je třeba postupovat. Přitom mohu používat různé způsoby formálního vyjádření či zápisu svých myšlenek, postupů a rodících se algoritmů, ale v konečné fázi musím příslušné algoritmy vyjádřit v takové formě, která bude srozumitelná pro počítač.

V čem pak ale spočívá hlavní těžiště "složitosti" celého řešení? Jakmile se jednou naučím vhodný programovací jazyk, pak ona složitost jistě nebude v tom, jak vyjádřit určitý algoritmus v tomto programovacím jazyku. Hlavní těžiště složitosti bude v přípravě onoho algoritmu.

Způsob, jakým je určitý algoritmus vyjádřen v nějakém programovacím jazyku, samozřejmě není irrelevantní (například se na něm dá hodně "zkazit"). To podstatné, podle čeho by naprogramované algoritmy měly být hodnoceny, je ale míra, do jaké splňují a řeší požadavky svého zadání. Dalším, ale spíše druhotným kritériem pak může být efektivita. Toto druhé kritérium přitom velmi úzce souvisí s celkovou propracovaností použitých algoritmů, originálností uplatněných myšlenek, invencí řešitele a často i nekonvenčností jeho přístupu k zadanému úkolu. Neboli s tím, co "stojí za" daným programem.

Jak ale vyjádřit míru takovéto propracovanosti? Vždy to bude především subjektivní záležitost toho, kdo program hodnotí a kdo přitom může uplatňovat různé pohledy, a přikládat různým aspektům různou důležitost.

V angličtině přitom existuje vžitý termín, který se v této souvislosti často používá: sophisticated. Řekne-li se například o nějakém programu, že je to "a sophisticated piece of software", pak se tím míní skutečnost, že za ním stojí nějaká hlubší myšlenka, propracovaný algoritmus, nekonvenční přístup či technicky nápadité a efektivní řešení. V češtině by podstatu věci asi nejlépe vystihl přívlastek "vymakaný". Ale ten se do spisovných textů (bez uvozovek a bez vhodného kontextu) bohužel moc nehodí. Proto asi nezbyde než hovořit o příslušných programech jako o propracovaných, nápaditých, jdoucích s dobou, využívajících moderní řešení apod. V nejhorším je pak možné násilím počeštit anglický originál a hovořit o sofistikovaných programech. Ale nejenom o programech - "vymakaný" může být například i hardware, stejně tak jako spousta dalších věcí.