Blok sem, blok tam: Vrací kopenogramy úder?
i Zdroj: PCTuning.cz
Hry Článek Blok sem, blok tam: Vrací kopenogramy úder?

Blok sem, blok tam: Vrací kopenogramy úder?

Michal Rybka

Michal Rybka

21. 4. 2017 18:00 15

Seznam kapitol

1. GOTO na konec a zase zpět 2. Programování s pravítkem a hromadou pastelek 3. Kolik programovacích jazyků znáš... 4. A zase barvičky 5. Ozobot místo Karla 6. Oživit neživé...

Spor o to, jak by měl vypadat srozumitelný zápis algoritmů vhodný pro začátečníky, nikdy neskončil. Na počátku 90. let nás děsily kopenogramy, blokovitý zápis algoritmů, který vyžadoval mnohem více místa a barev, než jakákoliv jeho reprezentace v kódu. S novou generací programovatelných robotů a Blockly od Google se tento koncept ve velkém vrací.

Reklama

Otevřeně přiznávám, že jsem kopenogramy neměl nikdy rád. Systém pro symbolický zápis algoritmů do blokových struktur přinesli v 80. letech programátoři Kofránek, Novák a Pecinovský – a popravdě, v konceptu 80. let to chápu. Světu tehdy vládl BASIC a spousta lidí začala svoji kariéru příkazem GOTO, který byl hlavně nouzovým řešením v případě, že vám při úpravách programech došlo místo mezi čísly řádků. Bohužel nejen tehdy.

Poněkud prahorně pojatý BASIC u osmibitů nevyužíval pro skoky návěští, ale v duchu sálových počítačů identifikoval řádky programu jejich adresami, které byly absolutní – a pokud jste neměli to štěstí a osvícený implementátor vašeho BASICu nezajistil příkaz RENUMBER, tedy přečíslování řádků, občas se vám stalo, že vám při psaní kódu z hlavy a následných úpravách prostě došlo místo mezi řádkem 19 a 20 a tak jste skočili do nové zóny absolutních adres a prasili jste úpravy tam, abyste se pak „elegantně“ vrátili dalším skokem zase zpět. Možná to fungovalo, ale bylo to z hlediska čitelnosti kódu úděsné.

Blok sem, blok tam: Vrací kopenogramy úder?
i Zdroj: PCTuning.cz

Spousta lidí se naučila psát kód z hlavy a naučila se, že to nevadí, že se to nakonec nějak dobastlí. Problém byl přitom dvojí: Za prvé se spousta samouků naučila, že algoritmus můžou vytvořit jaksi za chodu, nepřemýšlela o něm předem a za druhé, zhola nic je nenutilo psát kód ani znovupoužitelně, ani modulárně a ani s ohledem na kohokoliv jiného. Nepříliš vhodná implementace jazyka vedla ke vzniku generace solitérů, jejichž schopnost napsat kód byla svázána se schopností udržet si o něm přehled v hlavě – a to nijak nepomáhalo snahám o vytvoření týmů. Byla to doba geniálních solitérů, kteří nebyli zrovna použitelní ve vytváření velkých a dlouhodobě udržitelných projektů.

Hodně z těchto lidí byli opravdoví géniové, zvláště když přešli do assembleru a nikým a ničím neomezováni napsali vskutku pozoruhodné kódy. Všechna čest! U většiny lidí bylo ale špagetovité, nestrukturované programování bez poznámek a bez valné struktury opravdovým peklem, které mělo negativní vliv i na celkový jejich myšlenkový vývoj: Když kód píšete nudlovitě, nenaučíte se problém jasně strukturovat – a strukturování problému je jednou z metod, jak problémy správně řešit, popisovat a předávat ostatním tak, aby se dalo spolupracovat.

Blok sem, blok tam: Vrací kopenogramy úder?
i Zdroj: PCTuning.cz

Jedni z této katastrofy obviňují GOTO, tedy nepodmíněný skok, který jisté pozitivní aspekty v určitých případech stále má, jen se nesmí zneužívat. S tím docela pomohly modernější implementace BASICu, které se zbavily absolutních čísel řádků a pro použití skoku vyžadovaly vytvoření návěští LABEL, což přece jenom vedlo programátory ke strukturovanému programování. Plus zavedení podprogramů SUB ... END SUB, což už najdeme u Microsoft Quick Basicu. Quick Basic byl Microsoftem velmi opečováván, vždyť implementace BASICu pro Altair 8800 napsaná Billem Gatesem podpořila vzestup Microsoftu.

Blok sem, blok tam: Vrací kopenogramy úder?
i Zdroj: PCTuning.cz

Modernější implementace rovněž vyřešily jiný z problémů raného BASICu, totiž omezení podmínky na jeden řádek. Příkaz IF ... THEN ... ELSE se musel jak s podmínkou, tak i s příkazy vejít na jeden řádek, tedy obvykle do 255 znaků, jinak se musel používat skok. Modernější implementace, které povolovaly neomezeně dlouhé bloky příkazů, tento problém taky řešily.

Velmi vtipnou – ale zřejmě také velmi pravdivou – poznámku přineslo tvrzení, že BASIC sám byl „v rukou začátečníka přiměřeně bezpečný, ale pak nějaký blbec přidal příkaz POKE“. V podstatě šlo o to, že jste sice mohli napsat program stále prasácky, ale nemohl shodit počítač, protože si jazyk automaticky vytvářel proměnné při jejich prvním výskytu, automaticky je inicializoval, hlídal limity polí, řetězců a podobně. Zatímco čisté C či assembler měl v rukou začátečníka vlastnosti odjištěného granátu a spuštění programu mohlo klidně skončit resetem systému, BASIC byl přiměřeně bezpečný, přitom však implementačně nenáročný a rozumně rychlý. POKE mu dovolilo převrtávat obsah paměti, což nebyl dobrý nápad. Zároveň dal vývojářům pocit, že se BASIC hodí i na náročnější projekty, což také nebyl dobrý nápad.

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama