Původně jsem po otevření této knihy uvažoval o mírně pejorativním
názoru recenze ABC programátora v jazyce C začíná písmenem D,
protože u takového názvu knihy se mi vybaví více slabikář než
přehledná publikace. Při hlubším čtení jsem ale autorům velmi
rychle efektní název odpustil (ANSI, Borland, C++), protože sám
zastávám názor, který pan dr. Srba lakonicky shrnul do věty: "Lépe
menší efekt, nežli větší defekt". Kniha totiž pro efekt rozhodně
psaná není. Je to fundovaný přehled tří klonů původního jazyka
C pana Ritchie a Kenighana z roku 1978. Při čtení knihy oceníte
nejenom dobrý a pedagogický styl psaní, ale také řadu
implementačně závislých poznámek a upozornění, což jsou právě ty
informace, které programátor při používání konkrétní verze jazyka
C (na úvodní od písmene D) potřebuje a které v drtivé většině
v dokumentaci nenalezne. Z tohoto pohledu je publikace ojedinělá
i ve světovém kontextu, protože rady, jak implementaci využívat
efektivně, obvykle stojí podstatně více peněz, než je cena této
knihy. A odkud je zřejmé, že autoři sledovali spíše ušlechtilé
zájmy finanční a prestižní.
Vzhledem k tomu, že kritik má hledat na objektu svého zájmu
především nedostatky, a tak přinutit autora k ještě lepšímu
výkonu, musím i přes mé jednoznačné kladné hodnocení uvést
následující výtky.
Jazyk C je v současné době velmi populární a opravdu používaný,
a to zejména mezi profesionály. Proč tomu je, by měla kniha
v úvodu vysvětlit nebo se o to alespoň pokusit. Současně by
v úvodu měla být uvedená historie a v ní zdůrazněny klony jazyka,
na které se kniha zaměňuje a hlavně vysvětlit, proč jsou důležité
právě klony, které autoři vybrali. Že je to obtížné a že mnohdy
hrají významnou roli obchodní a jiné zdánlivě nesouvisející
zájmy, jako protiargument příliš neobstojí. Čtenář by měl vědět
co nejvíc, je to otázkou svědomitosti autora.
Je didakticky nezbytné vycházet ze základní verze jazyka
C (Kenighan & Ritchie 1978) a např. při popisu standardu ANSI
C rozšíření jazyka přehledně vyjmenovat. Proč ale byla tato
rozšíření zavedena, k čemu se dají výhodně použít a proč je
původní verze nevyhovující?
Myslím, že odpovědět na tyto otázky u každého rozšíření vede
k lepšímu zapamatování a obecnému náhledu čtenáře. Totéž se týká
popisu jazyka C++. Asi by čtenář už měl vědět, co je to objektové
programování, ale přesto bych uvedl schéma sounáležitosti C++
k ostatním prostředkům tohoto oboru. Na schématu bych ukázal
klady (pokud jaké jsou) C++ v tomto oboru a pokusil bych se
vysvětlit, jak jazyk umožňuje programovat objektově. Na
zdůraznění nevýhod a nepříjemností přece není nic špatného,
pokud nejsem fanatickým zastáncem toho, co jsem si oblíbil.
A konečně, co mi v knize bolestivě chybí, je gramatika jazyka
C. V naší zemi byla publikována pouze minimálně a vydání souhrnné
publikace jazyka C by ji mělo každopádně obsahovat. Tato mezera
v knize způsobuje nedostatečnost při použití jako referenčního
textu při programování. Programátor bude zase odkázán na provozní
dokumentaci a knihu odloží, protože je pouze kabátem a nikoliv
košilí, což je k dobré úrovni celého textu škoda.
Už poměrně dávno začal být používán pojem software engineering
(překládáno softwarové inženýrství) jako partie na rozhraní
computer science a technického provedení a realizace jejich
výsledků. Co to sofwarové inženýrství je, a jak vlastně
definováno, je poměrně mlhavé, proto je to asi pojem o to více
používaný. Kapitola 3 je nazvána Sofwarové inženýrství v jazyce
C a jsou tím myšleny základní konvence a doporučení pro práci
v jazyce C. To je opravdu důležité, uvědomíte-li si možnosti
C a razanci, s jakou může být použit v operačním systému bez
stanovení uživatelské a prioritní úrovně. Kapitola 3 ovšem
nehovoří zcela jednoznačně na toto téma, jde pouze o popis, jak
vytvářet větší programy, a seznam některých běžně používaných
praktik, které programátor na úrovni D už obvykle zná. Odkud
navíc autoři čerpají (zda ze své zkušenosti či ze zahraničních
pramenů a kterých) není zcela jasné. Jde ale pravděpodobně
o nedorozumění, kapitola by prostě měla mít jiný název.
Celkově vzato je to kniha dobrá, a pokud by byla rozšířena
o uvedené, šlo by jí jen stěží něco vytknout. Erudice a nadhled
autorů se jednoznačně nejsilněji projevuje v kapitole 5 o jazyce
C++, kdy směřují čtenáře k moderním metodikám programování
odkazem na své zkušenosti a univerzitní vzdělání. Doba výsměchu
"pojídačů koláčů" univerzitních doporučení modulárního, logického
a objektového programování je naštěstí za námi. Naopak, jejich
rady a doporučení začínají oceňovat dokonce i domácí uživatelé
a programátoři - samouci osobních počítačů. Že by se u nás pokrok
hýbal i na jiné než technické úrovni?