Druhý díl úspěšné a poměrně podařené učebnice jazyka C navazuje
na výklad "pokročilejších" programovacích technik v tomto jazyce.
Vazba "druhého dílu" na první je poměrně volná: původní knihu
rozhodně nepotřebujete, pokud jste schopni porozumět všem
obvyklým jazykovým konstrukcím a máte trochu praxi v psaní
programů v "céčku". Spíše se jedná o zcela samostatnou příručku,
až na občasné odkazy pod čarou na výklad určitých partií do
"prvního dílu". Na rozdíl od něj není text postaven na srovnání
s Pascalem,což odpovídá i zaměření na čtenáře, který již základy
jazyka C zvládl. Autor se zaměřuje výhradně na C a úmyslně se
vyhýbá jazyku C++.
Obsah knihy je formálně rozdělen na výklad některých vlastností
ANSI C, dále popis detailů implementace a specifických vlastností
překladače Borland C++ a na přílohy, ve kterých autor radí, jak
postupovat při práci na rozsáhlejších projektech. V první části,
zaměřené na ANSI C (kromě očekávaného Borlandu autor srovnává
také implementaci standardního překladače v v prostředí blíže
neurčeného Unixu), jsou vyloženy zejména standardní knihovny.
Najdete zde podrobně vyloženou práci se soubory pomocí funkcí nad
datovým typem FILE, včetně velmi užitečných poznámek
o problematických situacích při práci s nimi.
Autor prozkoumal také chování knihoven různých překladačů se
"záludnými" funkcemi, jako jsou změny velikosti vyrovnávací
paměti nebo problémy synchronizace vstupního a výstupního
ukazatele ve vyrovnávací paměti. Dále jsou popsány důležité
standardní knihovny ANSI C, jako jsou funkce pro práci s řetězci,
časem, matematické funkce, funkce pro nelokální skok
(setjmp/longjmp) a obsluhu signálů. Zvláštní pozornost je věnována
funkcím s proměnným počtem parametrů (zde bych však přivítal
poznámku o rozdílech v deklaraci výpustky v C++ ) a pomůckám pro
ladění, jako jsou ověřovací body (assertion) či využití
podmíněného překladu. "Ostříleným borcům" může sice podobný
výklad připadat až triviální, avšak sám jsem měl možnost se
přesvědčit, že mnoho tzv. "programátorů" v jazyce C podobné
prostředky nezná nebo jich ke své škodě nepoužívá. Ostatně, kniha
je učebnicí a nikoliv referenční příručkou.
V druhé části, co do počtu stránek menší, se autor věnuje
"špecifikám" Borland C++ a DOSu. Na poměrně malé ploše jsou
tu vyložena jazyková rozšíření pro práci s ukazateli a použití
přerušení, resp.psaní funkcí pro obsluhu přerušení.Text ovšem
nepostihuje všechny situace, do kterých se při použití
příslušných partií jazyka dostanete (především potíže s bloky
paměti o velikosti nad 64 KB). Samozřejmě vzhledem k zaměření
textu zde nenajdete ani žádné podrobnosti například o funkcích
jednotlivých přerušení. Dále jsou v této části knihy popsány
základní funkce pro práci s rozšířenou (XMS) a expandovanou (EMS)
pamětí.
V přílohách autor "uděluje" praktické rady pro řešení větších
projektů. V daném rozsahu si samozřejmě neklade za cíl suplovat
specializovanou literaturu o softwarovém inženýrství - dostatečně
výmluvný je sám o sobě název této kapitoly: "Malé úvahy o velkých
projektech". "Drobné" rady, týkající se například uzavírání smluv
a vztahů se zákazníkem vůbec, viditelně pocházejí ze života
a nejsou opsané z teoretických spisů. Pojednání završuje
"Desatero přikázání pro programátory v C" (akorát bych se z něj
nechtěl vždycky zpovídat..).
Jak napovídá již obsah, kniha je určena především těm, kteří se
chtějí zdokonalit v programování v jazyce C a zvládli již na
dobré úrovni základy jazyka. Proto si myslím, že název knihy je
trochu zavádějící: nejde ani tak o učení jazyka C, jako spíše
o jeho použití. Doporučil bych ji hlavně studentům, kteří
pokračují ve studiu jazyka C, a také těm programátorům, kteří si
nejsou zcela jisti svými znalostmi.