Pohádková povídka objasňující využití podprogramů v programování. Jedná se o překlad z blogu Computational Fairy Tales licencovaný pod Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
V závorkách jsou drobné úpravy pro Scratch, kde se funkce jmenují Nové bloky a nemají výstupy
Funkce a Mořeplavba
Funkce (Nové bloky) jsou samostatné podprogramy v rámci vašeho programu. Mají definované vstupy (a výstupy) a mohou být volány z jiných míst vašeho programu. Takže funkce (nové bloky) umožňují jednu část programu používat opakovaně na více místech.
Během cesty do Nové Atlantidy strávila Ana velké množství času pozorováním posádky lodi. Sledovala, jak námořníci zvedali plachty, vázali lana, čistili paluby, zaznamenávali směr a kontrolovali hloubku oceánu. Ana, poháněná zvědavostí, se snažila naučit co nejvíce o každém z těchto činností.
Jednoho rána se Ana zeptala kapitána, kde by se mohla naučit více. Kapitán, vždy ochotný pomoci, zmizel ve velitelské kabině lodi a vrátil se s 4 096 stránkovým Manuálem námořníka (3. vydání). Ana byla šokovaná.
“Proč je to tak tlustá kniha?” zeptala se.
“Je toho spousta co je třeba vědět”, odpověděl kapitán s pýchou. “Průměrnému námořníkovi zabere 5 let, než se naučí základy a dalších 35 let než se naučí zbytek manuálu”.
“Aha”, odpověděla Ana. To vypadá jako velká cena za naučení se mořeplavbě. Manuály jsou málokdy rychlé čtení a tenhle pravděpodobně zabere roky.
Večer si Ana vzala manuál na palubu, otevřela ho na náhodné stránce a začala číst. Byla to sekce, jak uvázat loď v doku. Instrukce zabraly 3 stránky drobným písmem. Množství detailů bylo neskutečné. Každá instrukce popisovala každý drobný detail daného úkolu. Ana četla každou řádku a vázání uzlu (25 řádek) si zkoušela na vlastní tkaničce od bot. Po asi půl hodině se jí zdálo, že už tomu docela rozumí.
Další kapitola popisovala, jak přivázat malý člun k boku lodi. A znovu, 3 stránky hustého textu. Když si Ana prohlédla kapitolu, začala rozeznávat instrukce z minulé kapitoly. Například 25 řádek o vázání uzlu bylo úplně stejné, jako v předchozí kapitole.
Další den se s kapitánem podělila o své zjištění.
“Jsi všímavá”, pogratuloval jí kapitán. “Mnoho konceptů je velmi podobných. Vezmi si například lana. Je jen několik málo dobrých uzlů.”
“A proč tedy pokaždé opakujete instrukce řádek po řádce?”
“Protože je přece musíš udělat pokaždé. Přece nemůžeš přeskočit instrukce na uvázání uzlu, to by ta malá loď odplavala.”
“Tomu rozumím, ale proč prostě neříct něco jako ‘Uvažte loď lodním uzlem’. To by ušetřilo spoustu místa. Všechno co potřebujete udělat, je oddělit stejnou část do samostatného bloku nstrukcí.”, navrhla Ana.
“A nebylo by to složitější?”, namítal kapitán. “Teď můžu dát libovolnému námořníkovi 35 stran o tom, jak zvednout hlavní plachtu a nemusím předpokládat žádné předchozí znalosti.”
“Ve skutečnosti by to byl snazší”, oponovala Ana. “Jakmile se námořník naučí například uvázat lodní uzel, může to použít v mnoha různých úkolech. Stane se z toho taková základní dovednost… jako třeba počítačové funkce (nové bloky)”.
“Asi by to instrukce zkrátilo”, souhlasí kapitán. “Ale velikost knihy není takový problém”
“Ale ono je to ještě lepší! Co když přijdete s lepším uzlem? Teď byste museli změnit všechny instrukce v knize, které používaly původní uzel. To je dost dlouhá činnost a navíc když něco píšete 100x, je snadné se párkrát splést. Nejspíš tam už teď máte tu a tam chybu.”
“A co když chcete naučit námořníka něco nového, jako třeba jak přivázat horkovzdušný balón? Máte instrukce na něco takového?”
“No… to ne”, přiznal kapitán.
“Stačilo by říct 1) Vezmi lano od balónu 2) Přivaž ho k zábradlí pomocí lodního uzlu. To jsou dokonce instrukce, které můžete říct slovně. Námořníci potřebují znát jen pár základních úkonů.”
Kapitán se odmlčel a upíral oči na moře. Po chvíli pokýval hlavou.
“Myslím, že máš pravdu!” řekl hlasitě. Po 3 dnech s ním na moři už Ana vypozorovala, že kapitán rád říká věci hlasitě.
Ana se usmála.
“Vsadím se, že je toho mnohem víc, než jen vázání lan. Signály, které používáme ke dorozumívání asi také půjdou zjednodušit pomocí funkcí.” Kapitán se odtáhl, když se pomalu rozhlížel po lodi a posuzoval možné opětovné využití různých dovedností.
Najednou se prudce otočil zpět k Aně. “Pomůžeš mi přepsat celou knihu? Můžeme úkoly rozdrobit na menší samostatné podúkoly, které popisuješ. To změní celé mořeplavecké odvětví!”
Any úsměv trochu zmizel. Nemohla odolat příležitosti zlepšit efektivitu celého královského námořnictva, ale pořád ještě musela dokončit svůj úkol záchrany království. Zvažovala své možnosti. Nakonec musela s lítostí nabídku odmítnout. Avšak protože hluboce věřila ve smysluplnost takové činnosti, napsala žádost svému otci, aby poslal 6 nejlepších královských počítačových odborníků, aby s tím pomohli. Spokojená s řešením, nechala svou mysl bloumat k dalším otázkám.