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

Structured programming

Máte rádi noviny a časopisy, které vás na první stránce nalákají spoustou lákavých titulků, dále vám nabídnou několik prvních vět příslušného článku, a pak už vás jen odkáží na stránku xy, kde najdete pokračování? Také se vám stává, že když vás nějaký titulek a prvních pár vět zaujme a vy se pustíte do hledání další části slibného článku, že v průběhu tohoto hledání buď zapomenete, co to vlastně hledáte, nebo "po cestě" zaujme vaši pozornost něco úplně jiného?

Těm, kteří noviny píší a vydávají, se nedivte - vždyť jejich cílem je prodat co možná nejvíce výtisků, a tak se snaží vtěsnat na titulní stránku co možná nejvíce bombastických titulků a slibných úvodů, které čtenáře nalákají. Příliš se však již nestarají o to, pomoci čtenáři, aby při čtení "udržel myšlenku".

Má ale takovýto přístup obdobu i ve světě počítačů? Bohužel ano, a mnohdy ne malou. Povšimli si toho mnozí již v dávných dobách začátků programování, a to v souvislosti s používáním příkazu GOTO, který ve vyšších programovacích jazycích realizuje skok v programu. Tedy vlastně přenesení řízení z jednoho místa na místo jiné, které se může nacházet "blízko", ale stejně tak dobře "na hony daleko". Počítači, který takovýto program provádí, to nijak nevadí - on svou "myšlenku" (představovanou obsahem regist rů, paměti atd.) dokáže udržet bez problémů. Ale co člověk, který takovýto program teprve píše, který jej ladí nebo který se v něm snaží alespoň nějak orientovat? Pro něj takovýto skok může představovat dosti značnou změnu, při které už pro něj může být nemalým problémem "udržet myšlenku" a zůstat nadále "v obraze". V důsledku toho se pak také dopouští více chyb, než by mělo být obvyklé. A co teprve když takovýchto náhlých skoků bude celá řada, budou na sebe postupně navazovat a půjdou vysloveně "napřeskáč ku"?

Tím, kdo poprvé veřejně upozornil na nevhodnost takovéhoto přístupu, byl známý holandský profesor Edsger Dijkstra - bylo to v dopise, který poslal redakci prestižního časopisu Communications of the ACM a který v něm byl otištěn v březnu roku 1968 pod titulkem "Příkaz GOTO je považován za škodlivý" ("GOTO statement considered harmful"). Profesor Dijkstra v tomto článku vyjádřil názor, že kvalita programátorů (a tím i jejich programů) je nepřímo úměrná počtu použitých příkazů GOTO. Tedy že čím více přík azů GOTO je v nějakém programu použito, tím hůře je takovýto program srozumitelný pro samotného autora i kohokoli jiného, tím více v takovémto programu bývá chyb, tím hůře se v něm tyto chyby hledají a odstraňují a tím hůře se takovýto program v budoucnu upravuje, rozšiřuje atd.

Zmíněný článek profesora Dijsktry odstartoval rozsáhlou polemiku odborné veřejnosti. Ta nakonec vyústila ve formulování zásad, jejichž dodržování vnáší do vytvářených programů určitý řád, podporuje jejich celkovou "průhlednost" a srozumitelnost, a tím současně i snižuje riziko chyb, pomáhá při potřebě ladění, usnadňuje pozdější upravování apod.

Tyto zásady ve své podstatě říkají, že programy by neměly být sestavovány "tak, jak někoho právě napadne", nekoordinovaným "splácáním" všeho možného, s následným řešení všech důsledků, které takovýto nekoordinovaný a nesystematický přístup přináší. Místo toho požadují, aby základními stavebními kameny programů byly takové části, které jsou dostatečně malé a "průhledné" (například bloky po sobě jdoucích elementárních příkazů), a větší celky pak byly sestavovány z menších celků výhradně pomocí takových pravidel (resp. s využitím takových programových konstruktů), které zachovávají potřebný řád a strukturu (jako například podmíněné příkazy, různé druhy cyklů apod.). Naopak tato pravidla požadují, aby byly v maximální možné míře vyloučeny takové mechanismy a konstrukty, které do programů vnáší chaos (jako právě nešťastný příkaz GOTO).

Programy psané důsledně podle takovýchto zásad zcela automaticky a vlastně úplně "zadarmo" získávají velmi přehledné a systematické vnitřní členění (též: vnitřní sktrukturu). Proto jsou také tyto zásady označovány jako zásady strukturovaného programování (structured programming).