Programovací jazyk C pro zelenáče Petr Šaloun, Neokortex, Praha 2000, 208 stran, doporučená cena 199 Kč, v češtině, ISBN 80-86330-02-X V řadě "pro zelenáče" vydalo nakladatelství Neokortex několik knih, které zasvěcují začátečníky do tajů práce s počítačem. Některé z nich – např. kniha P. Satrapy o Pascalu – nasadily laťku kvality pěkně vysoko. Podívejme se, jak se s nelehkou úlohou vysvětlit základy jazyka C vypořádal Petr Šaloun z Ostravské univerzity. Na počátku autor seznámí čtenáře se základními pojmy, jako je počítač, algoritmus, programovací jazyk apod., a pak přejde k prvnímu programu, kterým je samozřejmě "Hello, world". Potom se pustí do výkladu základních stavebních kamenů jazyka C – konstant, proměnných, příkazů, operátorů atd. Dále přijdou na řadu pokročilejší témata – pole a ukazatele, struktury a unie, práce se soubory – a také jednosměrně zřetězený seznam jako zástupce dynamických datových struktur. V přílohách najdeme stručný přehled knihoven jazyka C, informace, jak získat zdarma překladač tohoto jazyka, a návod, jak přeložit a spustit program v jazyce C. Bohužel nemohu tvrdit, že by se mi tato kniha příliš líbila. Nemohu se totiž ubránit dojmu, že jako zelenáče by mne od programování spíše odradila. Kniha P. Šalouna neobsahuje příliš mnoho věcných chyb; nejzávažnější se jako obvykle týkají ukazatelů, polí a práce s nimi. První, co mne zarazilo, bylo, že autor nehovoří o konstantě NULL a nepoužívá ji nebo hodnotu 0 k inicializaci ukazatelů; tato konstanta se však náhle a bez vysvětlení vynoří o několik kapitol dále. (To je totéž, jako ve výkladu o číslech vynechat nulu.) Má další připomínka se týká adresové aritmetiky. Zejména začátečníkům je třeba zdůrazňovat, že její použití má smysl, pouze když jde o ukazatele do pole, jinak si koledují o záludné chyby. Nic takového zde ovšem nenajdeme. Také skutečnost, že autor občas zaměňuje znakové řetězce a ukazatele na ně, může začátečníka svést k velice záludným chybám. I styl výkladu mi připadá problematický. Autor zpravidla volí krátké, někdy až holé věty, a tím rozseká ucelené myšlenky tak, že v tom někdy ztratí přehled i sám. Za příklad lze vzít třeba úvod ke kapitole o funkcích nebo třeba vysvětlení příkazu switch. Některá místa – např. výklad o předávání parametrů – působí dojmem, že jsou opsána z učebnice nějakého jiného programovacího jazyka. V příkladech občas narazíme na dosud neprobrané konstrukce, které zůstanou bez vysvětlení. Některé příklady jsou více nebo méně matoucí; například při porovnávání znakových řetězců říká autor "kratší" a myslí tím řetězec, který se při lexikografickém porovnání podle kódu ASCII řadí jako první, i když má třeba větší počet znaků. Příklad s výpočtem čísla e je sice programově v pořádku, ale jeho matematické vysvětlení je naprosto nesmyslné. Některé příklady jsou zbytečně složité; např. příklad čtení složitějších deklarací mi připomněl známou výukovou metodu – hodit neplavce do hluboké vody. Orientaci v textu ztěžují i komentáře, které jsou psány důsledně cesky, tedy bez hacku a carek. Tak se to sice opravdu v programech často píše, ale do učebnice to nepatří. Začátečník má dost starostí s porozuměním zdrojovému textu příkladů, nemá smysl ztěžovat mu situaci tím, že bude muset ještě luštit těžko čitelné komentáře k němu. Také čeština dostala v této knize tu a tam pěkně zabrat; najdeme tu krásy jako "vyalokovat", "přeci", "padesátšestcelých" (psáno dohromady), "každý z 16-ti" aj. Celkově na mne tato kniha působila dojmem, že ji autor odbyl nebo že na ni neměl dost času. Miroslav Virius