Hlavní navigace

Senzory Martina Malého: Bez čeho se hobby hacker neobejde?

Autor: Arduino
Martin Malý

Dnes bych se rád podíval na knihu Arduino – Uživatelská příručka, kterou vydalo nakladatelství Computer Press / Albatros Media v roce 2016.

Když se nás frekventanti na kurzech ptají, jakou knihu o Arduinu doporučit, doporučujeme Průvodce světem Arduina (ostatně jsem se o něm v těchto sloupcích už zmiňoval). Česky psaných knih o Arduinu je ale víc. Dnes bych se rád podíval na knihu Arduino – Uživatelská přiručka, kterou vydalo nakladatelství Computer Press / Albatros Media v roce 2016. Autorem publikace je Matúš Selecký

Na úvod se rovnou přiznám, že mám z knihy velmi rozporuplné pocity, protože mi není jasné, pro koho je určena. Podle představy autora a nakladatelství by mělo jít o rychlý úvod do platformy, kde se naučíte základy i pokročilé techniky. Mám trochu problém toto tvrzení přijmout. 

Pokud sledujete tento sloupek pravidelně, víte, že stran výuky elektroniky zastávám názor, že zdaleka nejlepší je „škola hrou“. Nemusíme chodit daleko do minulosti, psal jsem to v Senzorech minulý týden. U popularizační knihy očekávám, že mi hned na začátku předvede něco hezkého, co mě chytí, navnadí, co si zkusím, a pln radosti, že mi to funguje a že mé „ahoj světe“ zaznělo, se ponořím do dalšího čtení. Bohužel je čím dál míň českých knih, které se tohoto postupu drží. Většinou trpí syndromem vysokoškolských skript: autor ví, že se to student stejně musí naučit, že jeho zájem má jistý, a že může nerušeně postupovat od nezbytných, ale nudných teoretických základů k samotné podstatě výkladu. Nemusí se rozptylovat nějakou snahou udělat výklad atraktivní, zpestřit ho cvičením, použít něco, co se ještě neprobíralo… 

Jenže co projde u skript, kde se počítá s tím, že student chodí navíc na přednášky a cvičení, to nelze tolerovat u knihy, která má sama o sobě udržet pozornost a naučit. Já vím, a opakovaně se mi to potvrzuje, že řada lidí považuje techniku za řeholi, kde musí adept od počátku překonávat protivenství a slovo „zábava“ je sprosté, ale na druhou stranu se pak nelze divit, že člověk, který nemá dostatečnou motivaci („musím se to naučit do školy“ nebo „musím se to naučit kvůli práci“), nakonec snahu vzdá. 

Blikání LEDkou

Kniha Arduino – Uživatelská příručka je ryzím příkladem tohoto přístupu. Zatímco anglické knihy pro začátečníky začínají blikáním LED hned na prvních stránkách, v této knize se bliká LEDkou na straně 95 poté, co autor probral historii Arduina, licenční podmínky, open-source, alternativní řešení, emulátory Arduina, datasheety, komunitní tutoriály, vzal čtenáře na procházku světem hardware hackingu a reverzního inženýrství, popsal, jak z Arduina vyčíst nahraný program pomocí AVRdude a disassemblovat (na straně 40), představil zásady softwarového inženýrství, představil IDE, vysvětlil, co jsou soubory zdrojového kódu, a velmi důkladně (20 stran) se pověnoval konvencím zápisu zdrojového kódu, správnému komentování, formátování, čistotě kódu, pseudokódu a programovacím vzorům, kde popsal imperativní, objektové a funkcionální programování a vzájemně je porovnal. 

A teprve pak se bliká LEDkou. Ovšem důsledně nazývanou „LED dioda“, což je editorské selhání – pleonasmus (protože LED je zkratka Light-Emitting Diode, česky „světlo vyzařující dioda“, a autor tedy připojuje „světlo-vyzařující-diodu diodu“). Ale k jazyku se ještě dostanu. 

Po bliknutí LEDkou pokračuje teoretický výklad dál a člověk má dojem, že tento první praktický pokus byl jen vlastně vedlejším efektem, který nastal mezi výkladem o funkcionálním jazyku a datových typech. Dokonce to nelze svést ani na to, že se hodilo bliknout diodou, protože výklad dospěl k tématu vstupů a výstupů – tam dospěje až po dalších deseti stránkách. Následuje další teorie k jazyku: funkce, podmínky if, cykly for a while, ukazatelé, pole, knihovny a druhou kapitolu uzavírá část o optimalizaci kódu a ladění. Ovšem mezi to se ještě vmáčkla podkapitola „grafika“, v níž se autor zmínil o nástrojích OpenFrameworks, Processing a PureData. 

Co to čtu?

Když už jsem tu zmínil jazyk: třeba podkapitola „Grafika“ začíná větami „Jednou z nejčastějších forem interakce zařízení s lidmi jsou vizuální vjemy. Nový rozměr vizuální komunikace lze získat prostřednictvím vizuálního programování, které po propojení s Arduinem otevírá nové možnosti interakce.“ Pasáž o optimalizaci zase začíná větou „Optimalizace kódu se realizuje ve smyslu zmenšení velikosti kódu a zvýšení jeho rychlosti.“ Jistě, chápu, ne každý je Vrchlický, ale tohle jsou věty jak z policejního protokolu nebo ministerského oběžníku. 

Bohužel to nejsou výjimky, ale styl. Text knihy tak působí floskulovitě, strojeně a neživě; je plný trpného rodu, pleonasmů, opisů, v nichž „dochází k realizaci čehosi prostřednictvím něčeho“, a vět jak ze slohových cvičení mladých sociologů: „Dotazy jsou v praxi důležité při sběru požadavků za účelem podrobného porozumění problému.“ Autor se jak čert kříži vyhýbá čemukoli, co by mohlo být bráno jako odlehčení nebo hovorové vyjádření. Škoda. Na referenční příručku je to hodně upovídané, na běžné čtení zase přehnaně kostrbaté. 

Kniha navíc obsahuje řadu momentů, kdy si čtenář říká: „Co to čtu a proč?“ Například graf na straně 152 v kapitole „Testy embedded zařízení“ znázorňuje křivku ceny opravy chyb v různých fázích vývoje produktu. Když pominu to, že graf má osy popsané anglicky a slovensky, tak stále zůstává otázka: Proč je taková věc v „uživatelské příručce k Arduinu“? A bohužel – není v knize jediný takového druhu. 

Arduino a integrály

Od třetí kapitoly začnou být informace trošku užitečné: popis SPI a I2C, k tomu ukázky kódu, popis GPIO, časovače, přerušení, paměti, watchdog, zmínka o bootloaderu… Do toho je trochu neústrojně zakomponována pasáž o RTOS. Asi nejcennější mi připadá kapitola čtvrtá, věnovaná nejrůznějším periferiím, od displejů a klávesnic přes snímače, H-můstky, RFID až ke GPS, gyroskopu, akcelerometru a komunikaci přes Wi-Fi, Ethernet či Bluetooth. Kapitola končí stručnými příklady propojení Arduina s něčím jiným – od Raspberry přes další Arduino až po BASH či klientský program v Pythonu. Bohužel, u většiny těchto oblastí se autor omezí na konstatování, že něco takového existuje, k tomu připojí náčrtek s připojením dané součástky a ukázku kódu. 

Pátá kapitola uzavírá užitečný obsah informacemi o internetu věcí, respektive představuje nejčastější komunikační protokoly (AMQP, MQTT, ZeroMQ) a brokery. 

Posledních dvacet stran knihy, Přílohy, jsou ryzí bizarnost: kromě obligátních „rezervovaných slov a znaků“, „ASCII tabulky“ a alespoň trochu užitečného Ohmova zákona obsahují například řeckou abecedu, symboly elektronických součástek (v podobě „Periodické soustavy“, bohužel naprosto nečitelné), barevné značení rezistorů, zapojení trojúhelník-hvězda, voltampérové charakteristiky elektronických součástek, tabulku „přepočtu frekvence na čas“ (v podobě 1 kHz = 1 ms), algebraické vzorce, trigonometrii a vzorce na výpočet derivace a integrálu. Důvod zařazení integrálů v knize o Arduinu mi opravdu není jasný. 

Prerekvizita hobby hackera

Úhrnem nemůžu říct, že se jedná o knihu zbytečnou. To by nebylo spravedlivé. Autorovi slouží ke cti, že se dotkl i velmi specifických oblastí – funkcionálních jazyků pro Arduino, integrace s různými platformami apod. Přesto se obávám, že snaha „podchytit vše“ spíš výsledku ublížila a vedla k nutnému krácení, kdy některé zásadní oblasti, například sériové sběrnice, jsou zmíněny velmi stroze na několika stránkách a s minimem příkladů a ukázek, zatímco téměř třetinu knihy zabírají věci relativně zbytné, jako je čistota kódu, formátovací konvence nebo reverzní inženýrství, kterým by stačil rozsah mnohem menší. 

Kniha bude velmi těžko sloužit jako průvodce pro začátečníky, na to se mi zdá příliš toporná, suchá a k neučtení. Ale moc nefunguje ani jako referenční příručka. Asi nejvíc knihu ocení „pokročilejší bastlíř“, který může z kapitol 3 a 4 nasát impulsy pro vlastní experimenty s různými periferiemi a pak se podívat do okolního textu, jestli si nechce vyzkoušet třeba funkcionální programování nebo RTOS. Kniha mu vždy poskytne pár základních informací a odkaz, kde si na internetu může nastudovat víc. 

KL17-nominace

Přemýšlel jsem, čím recenzi této poněkud svérázné knihy uzavřít. Nejvhodnější mi připadá citát, který jsem našel v kapitole o reverzním inženýrství, konkrétně v pasáži „Odkrytování zařízení“, protože trefně ilustruje styl i vyznění celé knihy: 

„Téměř nezbytnou prerekvizitou hobby hackera jsou nástroje nezbytné k rozebírání a snímání krytů. Je potřeba mít k dispozici velkou sadu nástrojů, obzvlášť šroubováků nejrůznějších tvarů a velikostí.“

Našli jste v článku chybu?