PCTuning Článek

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

Michal Rybka
Michal Rybka
21. 4. 2017 18:00 15 Sdílej:

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

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.

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.

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

Byl detekován AdBlock

PCTuning je komunitní web, jehož hlavním příjmem je reklama. Zvažte prosím vypnutí AdBlocku, ať můžeme všem čtenářům i nadále přinášet kvalitní herní zpravodajství, články a videa.

Děkujeme!

Váš tým PCTuning