Aktuální vydání

celé číslo

03

2021

Digitální transformace, chytrá výroba, digitální dvojčata

Komunikační sítě, IIoT, kybernetická bezpečnost

celé číslo

Recenze: Učíme se programovat v jazyce C

číslo 2/2003

Recenze: Učíme se programovat v jazyce C

KADLEC, V.: Učíme se programovat v jazyce C. Praha, Computer Press 2002, ISBN 80-7226-715-9, 277 stran, náklad neuveden, doporučená cena 249 Kč/369 Sk.

Publikace, které slouží k seznámení čtenáře s některým programovacím jazykem, mohou být v zásadě dvou typů. Typ první vychází přímo z definice jazyka, a jeho struktura je proto určena touto definicí – začíná se lexikálními prvky jazyka, pokračuje syntaxí a sémantikou a končí speciálními rysy jazyka. Takovou publikací jsou především „manuály“, ale většinou i vysokoškolská skripta, jako publikace určené pro profesionály. Za příklad pro jazyk C lze zvolit český překlad knihy Referenční příručka jazyka C od autorské dvojice Harbison a Steele, kterou vydalo nakladatelství Science. Patří sem samozřejmě i prvotní definice jazyka C, kniha Programovací jazyk C od autorské dvojice Kernighan a Ritchie, která vyšla snad ve všech světových jazycích, včetně vydání v Braillově písmu.

Druhým typem popisu jazyka jsou učebnice jazyka – jejich struktura není řízena definicí jazyka, ale hlavní důraz je kladen na pedagogický výklad. Začíná se od nejjednodušších prvků a jazyk je vysvětlován postupně na příkladech. Na rozdíl od referenční příručky jsou učebnice méně striktní, ale naproti tomu čitelné a pochopitelné. V našem teritoriu reprezentuje tuto třídu známá Učebnice jazyka C od Pavla Herouta, vydaná nakladatelstvím Kopp.

Recenzovaná kniha patří mezi učebnice jazyka. Navíc si ale klade za cíl přiblížit čtenáři prostředí pro vývoj programů a naučit jej něco ze systematického programování.

Pro čtenáře neobeznámeného s prostředím pro vývoj programů v jazyce C jsou v první části knihy uvedeny velmi užitečné informace o dostupných nástrojích a jejich instalaci. Inspirující jsou zejména odstavce o volně dostupných produktech. To čtenáři umožní vybrat si a nainstalovat určité prostředí a zkoušet si v něm příklady. Příklady zařazené v knize jsou dostupné na internetu, takže není třeba nic opisovat. Dlužno poznamenat, že já sám bych se při psaní této části trochu obával, že informace zde obsažené brzy zastarají.

Druhá část knihy představuje vlastní učebnici jazyka C. Soustřeďuje se na implementace jazyka C, které odpovídají normě ANSI C, a současně více na prostředí typu Windows než Unix.

Ve třetí části knihy se čtenář dozví, jak postupovat při vytváření složitějších programů, jak využívat preprocesor jazyka, jak pracovat s některými standardními knihovnami jazyka C a jak vytvářet knihovny vlastní. Publikace rozhodně stojí za přečtení, nelze si ale odpustit následující drobné námitky.

Místo termínu deklarace identifikátoru používá autor v úvodu termín definice proměnné. Deklarace přitom představují jednu ze zvláštností jazyka C, neboť jsou mnohem „mocnější“ než u jiných jazyků. Při přečtení termínu definice proměnné se čtenář může domnívat, že se jedná o definici pojmu proměnná, zatímco termín deklarace identifikátoru velmi dobře vyjadřuje, že se jedná o dohodu s překladačem o významu daného identifikátoru.

Normou jazyka C nejsou striktně předepsány jednoduché typy dat a jejich obory hodnot. Platí pouze několik doporučení – nejmenší adresovatelnou buňku představují objekty typu char a šířkou dat procesoru je dán rozsah oboru int. Autor se v tomto ohledu nechává unést převládající „bytovou“ architekturou (byť ona skutečně převládá).

V knize je velmi mnoho dopředných odkazů. Za příklad mohou posloužit parametry funkce main(). Na str. 106 je uveden stejnojmenný odstavec, ale skutečná definice je až na str. 263. Je to samozřejmě dáno charakterem knihy, která se snaží být učebnicí, naproti tomu to trochu zhoršuje čitelnost. Knihovna string.h je uvedena až na konci knihy, přestože práce s řetězci může dobře posloužit v úvodním výkladu.

Soubor (str. 131) není posloupnost znaků ukončená „neznakem EOF“ – takto je definován pouze textový soubor simulovaný knihovnou stdio.h. Skutečná organizace textových souborů může být mnohem bohatší, než je uvedeno na str. 133 (např. lze využívat soubory s proměnnou délkou věty a vůbec nepoužívat terminátory CR a LF).

Na str. 135 by měla být lépe vysvětlena funkce znaku + jako update – speciálně na příkladu rozdílů mezi w a w+.

Autor v úvodní jazykové poznámce připravuje čtenáře na některé „nepěkné terminologické jevy“, přesto si ale myslím, že pojmy unie (sjednocení), buffer (vyrovnávací paměť) nebo nulový (nedefinovaný) ukazatel by si český překlad zasloužily.

Ještě poznámka k filipice na str. 270, kde by kromě Murphyho zákonů možná byly užitečné základní programátorské techniky typu: „Nevíš-li co dělat, zaveď si funkci!“ (to je programátorský obraz obecné techniky řešení problémů rozděl a panuj). Na rozdíl od autora se domnívám, že i v jazyce C se stále programují „ostré“ aplikace (dokonce se domnívám, že ty „nejostřejší“). Těm, kteří se to chtějí naučit od začátku, mohu knihu Učíme se programovat v jazyce C doporučit. Později jistě budou muset sáhnout po některé referenční příručce, nebo přinejmenším po druhém dílu Učebnice jazyka C a to kvůli standardním knihovnám.

Karel Richta

Inzerce zpět