VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:38/94
RoΦnφk:1994
Rubrika/kategorie: Co (ne)najdete ve slovnφku

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek

Ji°φ Peterka

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


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm