Literatura k přednášce Programování v C++ a k jazykům C a C++ vůbec

Doporučená literatura    Nedoporučená literatura     Ostatní literatura o C a C++     Literatura o standardní šablonové knihovně (STL)

Pořadí knih v jednotlivých oddílech je zatím víceméně náhodné. Časem tu třeba zavedu lepší systém.
Pokud se vám zdá, že některé z uváděných knih jsou naprosté anachronizmy, máte nepochybně pravdu. Nicméně jde o knihy, se kterými jsem se u posluchačů ve velice nedávné době setkal a které lze stále najít v knihovnách, a proto je zde cituji.

Pokud není v textu řečeno něco jiného, platí, že knihy, které hovoří o jazyce C, berou v úvahu standard ISO 9899 z roku 1990, nikoli s současnosti platný standard ISO 9899 z r. 2011, standard z r. 1999 nebo některý ze starších standardů ANSI.

Vynikajícím zdrojem informací o jazycích C a C++ je webový portál cppreference.com, na kterém lze najít nejen informace o platném standardu, ale i o připravovaných novinkách.


Doporučená literatura

Knihy uvedené v tomto oddílu má smysl použít jako základní nebo doplňkovou literaturu k přednášce o programovacím jazyku C++.

  1. M. Virius: Základy programování v C++
    Toto skriptum je určeno pro přednášku "Základy programování". Neobsahuje úplný výklad jazyka.
  2. M. Virius: Programování v C++ od základů k profesionálnímu použití.
    Tato kniha pokrývá C++ od naprostých základů přes základy objektově orientovaného púrogramování až po výjimky a pasivní použití šablon.
  3. M. Virius: Programovací jazyk C++. 1. díl.
    Toto skriptum pokrývá základní konstrukce programovacích jazyků C podle standardu z roku 2011 a C++ podle standardu z r. 2017 v rozsahu nezbytném pro předmět "Programování v C++". První díl ze tří.
  4. M. Virius: Programovací jazyk C++. 2. díl.
    Toto skriptum pokrývá pokročilé konstrukce programovacích jazyků C podle standardu z roku 2011 a C++ podle standardu z r. 2017 v rozsahu nezbytném pro předmět "Programování v C++". Druhý díl ze tří.
  5. M. Virius: Programovací jazyk C++. 3. díl.
    Toto skriptum seznamuje s knihovnami programovacích jazyků C podle standardu z roku 2011 a C++ podle standardu z r. 2017 v rozsahu nezbytném pro předmět "Programování v C++". Třetí díl ze tří.
  6. M. Virius: Pokročilé C++.
    Toto skriptum seznamuje se šablonovým mepatrogramováním a s novinkami C++20 jako jsou koncepty, korutiny, moduly, rozsahy (ranges) a další.
  7. M. Virius: Programování v C++
    Toto skriptum pokrývá programovací jazyky C a C++ podle standardu z r. 2003 a bylo donedávna používáno pro předmět "Programování v C++".
  8. M. Virius: Jazyky C a C++ -- kompletní kapesní průvodce. 2., aktualizované vydání. Grada Publishing, Praha 201. 368 stran.
    V této knize najdete podrobný přehled jazyků C (podle standardů C90 i C99) a C++, a to včetně očekávaných novinek ve standardu C++0x. Neobsahuje přehled knihoven.
  9. M. Virius: Od C k C++ Kopp, České Budějovice 2000. 230 stran.
    Tato může posloužit posluchačům, kteří již znají jazyk C.
  10. B. Stroustrup: The C++ Programming Language. 3rd edition. Addison-Wesley 1997. ISBN 0-201-88954-4. 910 stran. Anglicky.
    Učebnice C++. Ne každému styl výkladu v této knize vyhovuje, mně ano a já ji považuji za velice dobrou. Najdete tu nejen výklad jazyka C++, ale i výklad a příklady na použití standardních knihoven.
    Pozor: Tato kniha existuje ve 3 různých vydáních, které popisují tři různé verze jazyka C++.
    První vydání hovoří o C++ z r. 1986 (Cfront 1), které nemá s dnešní podobou jazyka mnoho společného. Pokud na toto vydání někde narazíte, raději ho tam ponechte, dnes už není v podstatě k ničemu (a k přednášce se naprosto nehodí).
    Druhé vydání z r. 1991 hovoří o C++ z doby těsně před počátkem standardizace. To znamená, že se v některých drobnostech odlišuje od standardu a především vůbec nehovoří o standardních knihovnách. Toto vydání vyšlo v českém překladu v nakladatelství Ben r. 1997 pod názvem C++ Programovací jazyk. Pokud tuto knihu máte, nezahazujte ji, není špatná, i když je trochu zastaralá. (Na české poměry je ovšem dost drahá -- stojí 699,- Kč.)
    Třetí vydání vyšlo zhruba v době, kdy se objevil český překlad druhého vydání. V knize najdeme výklad o jazycích a knihovnách, příklady programových konstrukcí i použití knihoven. Já sám vidím jedinou nevýhodu této knihy -- její cenu (cca 2500,- Kč).
    Obsahově prakticky stejné je i vydání označené Special Edition, které vedle tvrdých desek a opravy několika tiskových chyb obsahuje navíc i dodatky D a E, věnované použití třídy locale a bezpečnosti při používání výjimek. Tyto dodatky jsou k dispozici na internetu na adrese http://www.research.att.com/~bs/.
  11. B. Stroustrup: Programming. Principles and Practice Using C++. Addison-Wesley 2009. ISBN 978-0-321-54372-1. 1236 stran. Cena 69.99 $. Anglicky.
    Učebnice programování založená na C++. po úvodních poznámkách začne od "Hello, World" a projde přes objekty a datové typy k počítání, zpracování chyb atd. Teprve pak dává do pořádku technické podrobnosti. Ve druhé části se zabývá vstupy a výstupy, ve třetí daty a algoritmy -- samozřejmě na bázi jazyak C++. Vš čtvrté části ukazuje autor širší siouvislosti; zmiňuje se stručně o historii C++, o problematice manipulace s texty, numerických výpočtech, programování vnořených systémů atd. Nechybí samozřejmě ani kapitola o vztahu C a C++. V dodatcích najdeme mj. souhrn gramatiky jazyka, přehled standardní knihovny a informace o knihovně FLTK.
    I když přístup téhle knihy je poněkud netradiční, je dobrý a je to dobrá učebnice. (Ve skutečnosti vychází z moderního pojetí -- začínat od objektů, nikoli od strukturovaného programování založeného na objektech.)[květen 2009]
  12. Margaret A. Ellis, B. Stroustrup: The Annotated C++ Reference Manual. Addison-Wesley 1994. ISBN 0-201-51459-1. 460 stran. Anglicky.
    Není to učebnice, je to referenční příručka s podrobným výkladem, předpokládá znalost jazyka C++, ale najdete tu i výklad některých důležitých detailů, zdůvodnění apod. Velice dobré čtení pro pokročilejší programátory. Dnes je tato kniha bohužel již zastaralá, neboť vznikla na počátku 90. let a proto neobsahuje některé věci, které přinesl standard, nicméně i tak může pomoci v mnoha ohledech. (Ostatně stala se podkladem pro návrh standardu. Nehovoří ovšem o knihovnách.)
  13. M. Virius: Pasti a propasti jazyka C++. Grada Publishing, Praha 1997. ISBN 80-7169-607-2. 246 stran.
    Druhé vydání ComputerPress, Brno 2005. ISBN 80-251-0509-1.375 stran, 349 Kč/519 Sk.
    Tato kniha se zabývá běžnými programátorskými chybami, které vznikají z nepochopení významu některých konstrukcí jazyka C++, díky podobnosti s některými jinými jazyky apod. Dobré doplňkové čtení, pokud již znáte alespoň základy jazyka.
    Druhé, doplňěné a rozšířené vydání se zabývá i šablonami, standardní šablonovou knihovnou a objektovým návrhem.
    Vhodné doplňkové čtení.
  14. Bruce Eckel: Myslíme v jazyku C++. Grada Publishing, Praha 2000. ISBN 80-247-9009-2. 552 stran. (První díl)
    Velice dobře napsaná učebnice C++. Výklad začíná od základních pojmů objektového programování a při seznamování s nimi používá jazyk UML. Pak následuje rychlokurs jazyka C pro účely programování v C++. Poté se věnuje jazyku C++ (používání objektů, funkcí, šablon, jmenných prostorů). Vše je vysvětlováno na velmi jednoduchých příkladech. Neobsahuje podrobnosti o šablonách, výjimky, RTTI a standardní šablonovou knihovnu -- to má být spolu s tvorbou robustních aplikací ve druhém dílu (který ovšem dosud česky nevyšel).
    Výraznou vadou této knihy je kvalita překladu. Například nadpisy "Převod konstruktoru", resp. "Převod operátorů" vlastně znamenají "Převod pomocí konstruktoru", resp. "Převod pomocí operátorů", což svědčí o tom, že to překládal někdo, kdo netušil, o čem mluví. Najdeme tu i slohové krásy typu "na jiných strojích může docházet k jiným výsledkům".
    Poznámka: Jde o překlad druhého anglického vydání knihy Thinking in C++, Prentice Hall 2000, ISBN 0-13-979809-9. První anglické vydání předpokládalo znalost jazyka C (neobsahovalo kapitolu "Jazyk C v C++").
  15. Herb Sutter: Exceptional C++. Addison-Wesley 2000. ISBN 0-201-61562-2. 208 stran. Anglicky.
    Zaměřením se podobá knize výše zmíněné Pasti a propasti C++, je však o úroveň dál (a je také novější, takže obsahuje zkušenosti se standardem ISO 14882). Zabývá se problémy, které vznikají při používání výjimek, chybami při práci se standardní knihovnou, s alokací paměti, rozebírá vybrané návrhové vzory pro vytváření tříd a jejich hierarchií, ukazuje souvislost Koenigova vyhledávání s tzv. principem rozhraní (interface principle) a chyby, které z nedodržení tohoto principu mohou vzniknout, atd. Obsahuje 47 vybraných problémů, které ukazují chybný kód, nespolehlivý kód, neefektivní kód atd. Např. hned první problém začíná slovy: Následující ukázka kódu obsahuje nejméně 4 chyby v práci s iterátory. Dokážete je najít? Pak následuje jejich řešení a výklad.
    Skvělé doplňkové čtení, pokud dobře znáte alespoň základy jazyka C++ včetně standardní knihovny a chcete v C++ programovat opravdu profesionálně.
    Poznamenejme, že podkladem pro tuto a následující knihu se staly autorovy články z rubriky "Guru of the weak" z časopisu The C++ User Journal.
  16. Herb Sutter: More Exceptional C++. Addison-Wesley 2002. ISBN 0-201-70434-X. 279 stran. Anglicky.
    navazuje na předchozí knihu; obsahuje dalších 40 problémů a jejich řešení. Zabývá se generickým programováním, standardní knihovnou, optimalizací, problémy s bezpečností při používání výjimek, objektovým návrhem, správou prostředků, ale také makry, volnými funkcemi atd. Velice dobře napsaná kniha, i když ve srovnání s předchozí upovídanější.
    Stejně jako předchozí kniha představuje skvělé doplňkové čtení.
  17. Andrew Koenig: C Traps and Pitfalls. Addison-Wesley 1989. ISBN 0-201-18928-8. 146 stran. Anglicky.
    Čtivě napsaná kniha o častých i méně častých programátorských chybách v jazyce C (nikoli C++). Rozebírá situace, kdy se program sice přeloží, ale dělá něco jiného, než programátor očekává; vedle chyb, jako je záměna operátorů = a == nebo překročení mezí pole, rozebírá i problémy s přenositelností programu na jiné počítače nebo s funkcemi ze standardní knihovny. Obsahuje cvičení a odpovědi na ně.
    Skvělé doplňkové čtení; i když by se podle data vydání mohlo zdát, že jde o počítačovou prehistorii, na její platnosti se nic nezměnilo.
    Poznamenejme, že tato kniha mne inspirovala k napsání podobné knihy o C++ -- zmíněných Pastí a propastí C++ -- a to nejen pokud jde o zaměření, ale i pokud jde o název.
  18. John J. Barton, Lee R. Nackman: Scientific and Engineering C++ An Introduction with Advanced Techniques ans Examples. Addison-Wesley 1994. ISBN 0-201-53393-6. 665 stran. Anglicky.
    Dobře napsaný úvod do jazyka, který předpokládá znalost buď Fortranu nebo C. Na příkladech, zaměřených především na věděcké a technické výpočty, ukazuje použití tříd, dědičnosti, polymorfizmu, šablon atd.
    Nevýhodou je, že tato kniha vznikla v době, kdy ještě nebyla k dispozici standardní šablonová knihovna, a proto řeší problémy, které jsou v této knihovně vyřešeny. Přesto je to i dnes velice dobrá kniha. (Nedávno vyšla v novém vydání.)
  19. H. M. Deitel, J. M. Deitel: C++ How to Program Prentice Hall 1998. ISBN 0-13-528910-6. 1130 stran. Anglicky.
    Učebnice jazyka, která hovoří i o nejdůležitějších věcech ze standardních knihoven. Po úvodu, ve kterém se seznámíme s příkazy a s programováním funkcí, autoři proberou pole a ukazatele; pak přejdou ke třídám. Následuje přetěžování operátorů, dědění (v tomto pořadí), polymorfizmus, datové proudy, šablony a výjimky. Pak se začnou autoři zabývat zpracováním souborů a použitím datových struktur (ze standardní knihovny). V následujících kapitolách hovoří o nízkoŕovňových operacích, použití preprocesoru, některých věcech zděděných od Unixu a ze starších verzí jazyka C, klasickými řetězci a třídou string; nakonec přijde přehled standardní šablonové knihovny. Výklad samozřejmě doprovázejí příklady, někdy i docela rozsáhlé.
    Je to dobře napsaná kniha, i když mně se osobně daleko víc líbí učebnice
    Stroustrupova.[Srpen 2006]
  20. D. R. Stephens, C. Diggins, J. Turkanis, J. Cogswell: C++ Cookbook. O'Reilly 2006. ISBN 0-596-00761-2. 574 stran. Anglicky. Cena 44,95 $.
    Dobře postavená sbírka řešených příkladů. Věnuje se většině důležitých oblastí, počínaje překladem a sestavením programu nebo knihovny, přes matematické výpočty, práci s textem, datem a časem, vstupní a výstupní operace, práci s podprocesy (vlákny), po použití XML a internacionalizaci. V převážné většině případů se opírá o standard jazyka C++ a jeho knihovny; pouze v případě jazyka XML používá nestandardní volně dostupnou knihovnu Xerces a v případě podprocesů používá volně dostupnou knihovnu Boost.
    Základní schéma, kterého se tato kniha drží, je jednoduché: Formuluje problém, ukáže jeho řešení a pak prodiskutuje možné nevýhody, alternativní postupy atd. Jasné, přehledné a srozumitelné.
    Mohu jen doporučit. [Březen 2008]

Nedoporučená literatura

  1. Karel Mozdřeň: Programování v C++, První kroky. Dostupné na http://homel.vsb.cz/~moz017/cpp/kniha/c++.pdf. Zveřejněno r. 2009. 52 stran.
    To je opravdu silný zážitek. Kniha obsahuje vždu jen pár slov a příklad, který ovšem není vždy k věci a výklad (nebo spíše "výklad") pomíjí mnohé důležité věci. Nehovoří o znakových řetězcích a o moha dalších věcech, bez nichž nelze smysluplně programovat. Navíc autor nejspíš nezná ani odbornou terminologii, protože např. v oddílu nadepsaném Polymorfizmus hovoří o přetěžování konstruktorů objektového typu. NEPOUŽÍVAT V ŽÁDNÉM PŘÍPADĚ!

  2. Martin Beran: Učebnice Borland C++. Technická literatura BEN, Praha 1995. ISBN neuvedeno. 438 stran.
    Kniha obsahuje řadu neuvěřitelně hrubých chyb, příklady, které nelze přeložit, příklady, které dělají něco jiného, než mají, atd. NEPOUŽÍVAT V ŽÁDNÉM PŘÍPADĚ!

  3. Jan Pokorný: Rukověť uživatele Borland C++ AF. Plus, Praha 1992. ISBN 80-85297-39-6. 464 stran.
    Zastaralé -- popisuje Borland C++ 3.1, takže výklad jazyka C++ končí u šablon, neobsahuje výjimky, prostory jmen atd. Řada věcí je vysvětlena tak, že to čtenář nepochopí (to se týká mj. i šablon), řada podstatných věcí chybí.

  4. Vladimír Rudolf: ABC programátora v C++. Kopp, České Budějovice 1990, 1999. 112 stran.
    Kniha obsahuje pouze základní informace o objektovém programování a o přetěžování operátorů, nic víc. Navíc ve výkladu o přetěžování operátorů je řada věcí špatně a řada informací chybí (mnohé velmi podstatné). Také ve výkladu objektů několik důležitých věcí chybí a jsou tam chyby. Šablony, výjimky, RTTI, prostory jmen a šablonová knihovna tu vůbec nejsou, výklad o proudech vychází ze zkušenosti s překladači, které se odchylovaly od tehdejšího neoficiálního standardu (Specifikace AT&T 2.0). Závěr: NEPOUŽÍVAT.

  5. Dirk Louis: C und C++ -- Programierung und Referenz. Markt & Technik, Haar bei München. ISBN 3-8272-5066-8. Německy. 588 stran.
    Kniha obsahuje referenční přehled C a C++ a především knihoven, ovšem bohužel s řadou chyb, občas dosti obludných. NEPOUŽÍVAT! (Překladem a podstatnou úpravou této knihy vznikla kniha
    Jazyky C a C++ podle normy ANSI/ISO, ze které se mi doufám podařilo chyby odstranit.)
  6. Dalibor Kačmář: Jazyk C -- učebnice pro střední školy. Computer Press 2000. ISBN 80-7226-295-5. 185 stran.
    Je to učebnice jazyka C, nikoli C++ -- to ovšem není důvod, proč ji nedoporučuji. Pokud jde o obsah, drží se osvědčeného schématu -- začne jednoduchým příkladem, který ukáže základní možnosti jazyka, a pok postupně probere všechny důležité nástroje. Problém je, že výklad je uspořádán poměrně velmi chaoticky, obsahuje řadu odkazů dopředu, řada věcí je vysvětlována v místech, kde to čtenář neočekává, některé konstrukce použité v příkladech nejsou vysvětleny a není tam ani odkaz na místo, kde budou probírány. Vůbec tu chybí např. informace o tom, že příkaz break lze použít k ukončení cyklu nebo že ukazatele lze porovnávat pomocí relačních operátorů. O parametrech funkce main se dočteme v kapitole o vstupech a výstupech, o inicializaci struktur a unií je stručná zmínka v kapitolce o polích. Vedle toho obsahuje tato kniha i věcné chyby; nejde věci opravdu závažné, snad až na tvrzení, že rozdílem dvou ukazatelů je počet bajtů ležících mezi adresami, na které ukazují, ale v učebnici -- navíc označené "pro střední školy" -- nemají chyby co dělat. Také počet gramatických chyb, především špatně umístěných čátek ve větách, je zarážející (2 -- 3 na stránce).
    Nedoporučuji tuto knihu používat, neboť i když pomineme chyby, i zkušený čtenář z této knihy získá dojem, že jazyk C je nesmírně složitý -- a co teprve studenti, kteří s programováním začínají.
  7. Šaloun, P.: Programovací jazyk C pro zelenáče. Neokortex, Praha, 2000. ISBN 80-86330-02-X. 205 stran.
    Kniha sice pokrývá většinu témat, která by měl programátor v jazyce C znát, ale nepatří mezi podařené. Výklad je poměrně málo přehledný (i díky jazyku), autor často bez vysvětlení předbíhá a používá neprobrané konstrukce. Kniha neobsahuje sice příliš mnoho chyb, ale najdou se, a to i poměrně vážné. Asi největší výhrada, kterou proti ní mám, se týká výkladu o znakových řetězcích a polích vůbec: Autor zaměňuje pojmy "řetězec" a "ukazatel na řetězec", a to občas i v jedné větě -- a to je v textu pro začátečníky vyloženě nešťastné, neboť z nepochopení vztahu polí a ukazatelů pocházejí ty nejhrubší chyby při práci s pamětí.
    Celkově působí dojmem knihy spáchané v horečném chvatu. Nemohu ji v žádném případě doporučit.
    Poznámka ke druhému vydání (léto 2003, ISBN 80-86330-08-7): Pro druhé vydání byla kniha přepracována, autor odstranil nejhrubší chyby. Celkový dojem neobratnosti výkladu ovšem trvá.

Ostatní literatura o jazycích C a C++

Knihy v tomto oddílu jsou převážně kvalitní, nedoporučuji je ale jako literaturu k přednášce z jazyka C++. Důvodem může např. být, že jde o knihu věnovanou pouze jazyku C, že jsou věnovány nějakému speciálnímu tématu, nebo proto, že hovoří více o nějakém vývojovém prostředí než o C++. Mnohé z knih zde uvedených představují dobré doplňkové čtení.

  1. Kernighan, B. W. -- Ritchie, D. M.: The C Programming Language. Second Edition. Prentice Hall 1988. ISBN 0-13-110362-8. Anglicky.
    (Česky: Programovací jazyk C. Computer Press, Brno 2006. ISBN 80-251-0897-X.) 286 stran, cena 297 Kč/447 Sk.) Klasická a přitom velice dobře napsaná učebnice jazyka C. Obsahuje výklad jazyka C podle standardu ANSI (a tedy také ISO). V posledních kapitolách je referenční přehled jazyka a přehled standardní knihovny jazyka C. Lze jen doporučit.
    České vydání je doplněno o informace o novinkách standardu ISO 9899-1999.
    Ovšem pozor: Tato kniha existuje ve dvou vydáních. První anglické vydání vyšlo v r. 1978 a popisovalo starší verzi jazyka, pro kterou se vžila označení "Jazyk C podle Kernighana a Ritchieho", "K&R" ap. Tato archaická verze jazyka C se sice občas ještě někde vidí, ale... od standardu se v několika bodech odlišuje, neobsahuje některé konstrukce běžně ve standardu používané ap. Takže starší vydání nedoporučuji používat, pokud opravdu nemusíte pracovat s překladačem, který tuto verzi implementuje. (Kniha sama je napsána dobře a pokud se starou verzí jazyka C pracujete, bude vám velice užitečná. Existuje v dobrém slovenském překladu -- viz následující bod.)
  2. Kernighan, B. W. -- Ritchie, D. M.: Programovací jazyk C. SNTL -- Alfa, Bratislava 1988. 248 stran. Slovensky.
    Slovenský překlad prvního vydání (z r. 1978) slavné učebnice jazyka C. Platí o ní vše, co bylo řečeno o
    prvním anglickém vydání -- tedy používat, pouze pokud pracujete s překladačem, který implementuje odpovídající verzi jazyka C.
  3. Stroustrup, B.: The Design and Evolution of C++. AT&T 1994. ISBN 0-201-54330-3. Anglicky.
    Kniha věnovaná historii jayzka C++, logice jeho návrhu ap. Najdeme to mimo jiné i zdůvodnění, proč tento jazyk obsahuje či neobsahuje určité rysy (např. proč chybí automatická správa paměti -- garbage collector), diskuzi o některých temných zákoutích jazyka ap. Velice zajímavé doplňkové čtení pro ty, které zajímají další souvislosti. Předpokládá ovšem solidní znalost C++.
  4. Herout, P.: Učebnice jazyka C, III upravené vydání. Kopp, České Budějovice 1994. ISBN 80-85828-21-9. 270 stran.
    Herout, P.: Učebnice jazyka C, VI přepracované vydání. Kopp, České Budějovice 2004. ISBN 80-7232-220-6.
    Dobře napsaná učebnice jazyka C podle ISO 9899-1990 v češtině. Vysvětlí všechny základní konstrukce a seznámí s běžnými knihovními funkcemi. Ve čtvrtém vydání byly odstraněny některé drobné překlepy.

  5. Herout, P.: Učebnice jazyka C, 2. díl. Kopp, České Budějovice 1995. ISBN 80-85828-50-2. 236 stran.
    Herout, P.: Učebnice jazyka C, 2. díl. II přepracované vydání. Kopp, České Budějovice 2004. ISBN 80-7232-221-4. 160 stran.
    První vydání: Vzdor názvu to není učebnice jazyka C. V první části najdete podrobný výklad o vstupních a výstupních operacích v C, popis některých užitečných funkcí a maker ze standardní knihovny, výklad o ladění v jazyce C. Druhá část této knihy obsahuje informace o Borland C++ a jeho využití pro programování v DOSu (programování přerušení, práce s porty, ovládání EMS a XMS a další speciální informace. Užitečné doplňkové čtení.
    Druhé vydání: Jeho obsah prošel ve srovnání s prvním vydáním důkladnou revizí. Zmizely kapitoly o EMS, XMS a jiných věcech typických pro DOS. Zůstaly kapitoly věnované vstupům a výstupům a přibyly důkladné popisy řady knihovních funkcí. Nová je také kapitola shrnující novinky standardu ISO/IEC 9899-1999. Tím se z toho stal opravdu druhý díl učebnice jazyka C a velice užietčné čtení.
  6. Herout, P.: Borland C++, návod k použití. Kopp, České Budějovice 1994. ISBN 80-85828-19-7. 185 stran.
    Není to učebnice C++, je to kniha o prostředí Borland C++ 3.1 a o práci s ním.
  7. Mark Andews: Programujeme v jazyce Visual C++. Computer Press, Praha 1997. ISBN 80-85896-91-5. 385 stran.
    Na obálce je slovo "Visual" skryto uvnitř "C", takže snadno unikne pozornosti a láká čtenáře jako učebnice C++. Nicméně je to především kniha o vývojovém prostředí Microsoft Visual C++ 4.x; kromě toho v ní najdeme velice stručný rychlokurs základů C++ -- učebnici C++ ovšem nemůže nahradit -- a základy práce s knihovnou MFC. (Jde o překlad knihy Learn Visual C++ Now! vydané nakladatelstvím Microsoft Press r. 1996).
  8. Racek, S.: Objektově orientované programování v C++. Kopp, České Budějovice 1994. ISBN 80-85828-20-0. 205 stran.
    Ke čtení je třeba znát jazyk C. Autorovi jde především o základní principy OOP, jazyk C++ zůstává poněkud stranou (a je neustále srovnáván s jazykem Eiffel). Navíc výklad C++ v této knize vychází ze zkušeností s Borland C++ 3.1, takže pochopitelně neprobírá výjimky, prostory jmen, dynamickou identifikaci typů nebo standardní šablonovou knihovnu. Vedle základů teorie OOP tu lze najít zajímavý rozbor problematiky perzistence objektů.
  9. Racek, S. -- Kvoch, M.: Třídy a objekty v C++. Kopp, České Budějovice 1998. ISBN 80-7232-017-3. 215 stran.
    Podstatně přepracovaná a aktualizovaná verze knihy S. Racka Objektově orientované programování v C++ (viz předchozí text). Ke čtení je opět třeba znát jazyk C. Autoři vysvětlí základní principy OOP a pak ukazují jejich aplikaci v C++ -- projdou objektové typy, přetěžování operátorů, šablony, výjimky, stručně hovoří i o objektových knihovnách. Z této knihy se lze základy C++ naučit.
  10. Nenadál, K. -- Václavíková, D.: Borland C++. Grada Publishing, Praha 1992. 225 stran.
    Nepříliš kvalitně přepsané manuály k Borland C++ 2.0. To znamená, že se zde mj. ještě nehovoří ani o šablonách, natož pak o výjimkách nebo prostorech jmen. Dnes prakticky nemá smysl používat.
  11. Kruglinski, D. -- Shepherd, G. -- Wingo, S.: Programujeme v Microsoft Visual C++. Computer Press, Praha, 2000. ISBN 80-7226-362-5.
    Přepracované vydání úspěšné knihy D. Kruglinského Mistrovství ve Visual C++ ( Mastering Visual C++, Microsoft Press), upravené pro Visual C++ 6.0.
    Ke čtení potřebujete znát C++. Naučíte se zde používat knihovnu MFC (základy, architekturu dokument-pohled), používat prvky ActiveX, pracovat s automatizací, vytvářet komponenty COM a (včetně použití knihovny ATL), pracovat s databázemi pomocí ODBC, DAO a OLE DB a programovat pro internet (speciálně pro Microsoft IIS). I přes značný rozsah nejde v žádném z témat do přílišné hloubky.
    První dojem: užitečná kniha, i když poměrně drahá (doporučená cena 975 Kč, 1404 Sk); tomu ale odpovídá i rozsah (1000 stran).
  12. S. Prata: Mistrovství v C++. Computer Press, Praha 2001. ISBN 80-7226-339-0
    Vysvětluje podrobně jednotlivé konstrukce, ukazuje jejich význam a použití. Postupuje od základů k pokročlým konstrukcím, používá od počátku i standardní knihovnu. Na první pohled také vypadá dobře, i když je na můj vkus trochu rozvláčná (cca 1000 stran).
    V současné době vyšel český překlad 3., opraveného a doplněného vydání.
  13. Stanley B. Lippman: Essential C++. Addison-Wesley 1999. ISBN 0-201-48518-4. 270 stran. Anglicky.
    Dobrá učebnice základů jazyka C++, která hned od počátku -- od programu Hello, world -- používá standardní knihovnu. Zajímavé je uspočádání výkladu podle přístupů k programování: Po probrání základů se autor věnuje procedurálnímu programování, pak využití generických algoritmů a kontejnerů ze standardní knihovny (což označuje za generické programování), následuje programování s objekty, objektové programování, programování se šablonami a práce s výjimkami.
  14. Andrei Alexandrescu: Modern C++ Design. Addison-Wesley 2001. ISBN 0-201-70431-5. 321 stran. Anglicky. Český překlad: Moderní programování v C++. Computer Press, Brno 2004. ISBN 80-251-0370-6.
    Šablony byly původně navrženy proto, aby usnadnily vytváření opakujícího se podobného kódu, který se liší jen datovými typy nebo hodnotou konstant známých už v době překladu. Ovšem šablony v dnešní podobě otevřely obrovské a netušené možnosti, které se dnes shrnují pod označení "generické metaprogramování". Lze je s trochou nadsázky označit za programování, při kterém vše podstatné proběhne v době překladu a za běhu už jen vystoupí výsledky.
    Autor v této knize ukazje, jak takové konstrukce vytvářet. V úvodu např. najdeme analogii makra assert(), ovšem vyhodnocovaného v době překladu. Jako další ukázky najdeme seznamy typů, zobezněné funktory atd. V mnoha případech jde o "generické" implementace klasických návrhových vzorů.
    Tato kniha nabízí vyšší školu programování pomocí šablon. Je to zajímavé čtení, i když dosti náročné.
  15. F. Kašpárek a kol.: Co v manuálu nenajdete. Unis Publishing, Brno 1993. ISBN neuvedeno. 762 stran.
    Kniha o nedokumentovaných vlastnostech překladače Borland C++ 3.1 a starších a některých (v době vydání) méně známých vlastnostech C++. Popis jazyka C++ odpovídá variantě použité v tomto překladači, tzn. dost významně se odchyluje od standardu ISO 14882.
    Má smysl používat pouze v případě, pokud pracujete s uvedeným překladačem.
  16. D. Matoušek: C++Builder -- vývojové prostředí. Ben -- Technická literatura, Praha 2000. ISBN 80-86056-70-8. 630 stran.
  17. D. Matoušek: C++Builder -- vývojové prostředí. 2. díl. Ben -- Technická literatura, Praha 2001. ISBN 80-7300-003-2. 520 stran.
    Velmi podrobná kniha o C++Builderu verzí 4 a 5 s řadou příkladů. První díl probírá vývojové prostředí, běžně používané komponenty, práci s INI soubory, tvorbu nápovědy, tvorbu vlastních komponent, komponenty pro práci s DDE a OLE. Autor také vysvětluje použití výjimek.
    Ve druhém dílu najdeme informace o pokročilejších rysech vývojového prostředí. Najdeme tu informace o práci s metasoubory, rolování, způsobu zpracování zopráv, práci s prostředky (resources) včetně textu atd. V této knize najdeme i informace o odpovídajících funkcích z Windows API. Poslední kapitoly seznamují se základy knihovny OpenGL, se sériovým portem ap.
    Velmi užitečná kniha, i když nepokrývá některé témata (ale nikde není řečeno, že druhý díl je poslední).
  18. J. Bergin, M. Stehlik, J. Roberts, R. Pattis: Karel++. J. Wiley and Sons, 1997. ISBN 0-471-13809-6. Anglicky.
    Robot Karel, ovšem v objektovém provedení založeném na jazyce C++. (Robot Karel je dnes už klasická pomůcka pro výuku základů programování, zavedená R. Pattisem v knize Karel the Robot, 1981.)
  19. A. Koenig, Barbara E. Moo: Accelerated C++. Addison-Wesley, 2000. ISBN 0-201-70353-X. Anglicky.
    Kvalitní úvod do jazyka C++.
  20. S. Meyers: Effective C++. Addison-Wesley, 1993, 2001. Anglicky.
  21. S. Meyers: More Effective C++. Addison-Wesley, 1996. ISBN 0-201-63371-X. Anglicky.
  22. S. Meyers: Effective STL. Addison-Wesley 2001. ISBN 0-201-74962-9. Anglicky.
    Všechny tři knihy obsahují řadu kráktých kapitol, které rozebírají některé důležité a často špatně chápané stránky jazyka C++. První z nich vznikla na počátku 90. let a v 50 kapitolkách se zabývá tématy jako jsou ukazatele, používání konstruktorů a destruktorů objektových typů, přetěžování operátorů atd. Druhá vznikla v polovině 90. let a v 35 kapitolkách se zabývá chybami objektového návrhu, problémy okolo používání výjimek, efektivitou atd. Poslední kniha vznikla už po přijetí mezinárodního standardu IS0 14882 a v 50 kapitolkách rozebírá problémy a nedorozumění kolem správného používání kontejnerových tříd a iterátorů ve standardní šablonové knihovně.
    Velice užitečné knihy. I když první dvě vznikly ještě před přijetém standardu, neztratily nic na platnosti. Jediná nevýhoda: Čím novější kniha, tím upovídanější. Přesto je doporučuji.
  23. V. Kadlec: Učíme se programovat v jazyce C. Computer Press, Praha 2002. ISBN 80-7226-715-9.
    Docela dobře napsaný úvod do jazyka C. Jediné mé výhrady se týkají skutečnosti, že autor hovoří o normě ANSI jazyka C, která de facto neexistuje (ANSI distribuuje mezinárodní standard ISO 9899). Autor také vychází ze standardu z r. 1990 a možná i starších, takže např. nehovoří o typu long long a dalších věcech, které tato norma zavedla.
  24. R. Neruda, T. Holan: C++ Builder v příkladech. Ben -- Technická literatura, Praha 2002. ISBN 80-7300-042-3.
    Řada řešených příkladů v C++Builderu. Kniha pokrývá tvorbu GUI, počítačovou grafiku s pomocí C++Builderu a databázové aplikace. Každý příklad obsahuje vždy zadání, řešení a poznámky a komentáře. Předpokládá znalost C++ a ve výkladu o C++Builderu (tedy o knihovně VCL) nejde do hloubky, jen naznačuje, ale to obvykle snaprosto stačí. Skvělý doplněk jakéhokoli úvodního nebo i lehce pokročilého kurzu C++Builderu, velmi dobré i pro samostatné čtení.
  25. D. Vandervoorde, N. M. Josuttis: C++ Templates. The Complete Guide.Addison-Wesley 2003. ISBN 0-201-73484-2. 530 stran, cena 55 $.
    Kniha předpokládá znalost jazyka C++ (kromě šablon, neboť ty vysvětluje od základů). Zachází ovšem do hloubky, s níž se v běžných učebnicích nesetkáme -- pokrývá nejen základní použití šablon v C++, ale i základy šablonového metaprogramování a někteté další pokročilejší aplikace. Vynikající doplňkové čtení, i když má smysl spíše pro tvůrce knihoven než pro běžné programátory.
  26. R. Chalupa: 1001 tipů a triků pro Visual C++. Computer Press 2003. ISBN 80-7226-842-2. 434 stran, cena 397 Kč, 595 Sk.
    kniha obsahuje 1003 (nikoli 1001) krátkých návodů a ukázek, jak řešit různé problémy v jazyce C++ v prostředí Windows. Vychází z Visual C++ .NET, hovoří ovšem převážně o knihovně MFC a o Windows API. Najdme tu vedle sebe poučení o vlastnostech celočíselných typů, návod, jak napsat spořič obrazovky nebo třeba jak pracovat s bitovou mapou a mnoho dalšího. Užitečná publikace, i když mj. neobsahuje rejstřík (a to mi připadá jako docela závažná chyba).
  27. J. Liberty: Naučte se C++ za 21 dní. Computer Press 2002. ISBN 80-7226-774-4. 765 stran, cena 590 Kč, 890 Sk.
    Po prvním prolistování mi to připadá jako docela dobrá učebnice. Je značně rozsáhlá, ale to je dáno nejen rozsahem jazyka, ale i možstvím příkladů. Autor prtobírá všechny důležité konstrukce, které tento jazyk nabízí, ukazuje jejichh použití na příkladech, upozorňuje na možné problémy. Zdrojové kódy příkladů jsou na doprovodném CD. [duben 2006]
  28. David Abrahams, Aleksey Gurtovoy: C++ Template Metaprogramming. Addison-Wesley 2005. ISBN 0-321-22725-5. Anglicky. 373 stran, CD
    Výklad o tom, co to je metaprogramování, jak ho lze v C++ používat, kdy se hodí, a samozřejmě také jak psát metaprogramy pomoc šablon v C++. Předpokládá dobrou znalost problematiky šablon v C++. [srpen 2007]
  29. Radim Dostál: C/C++ -- Hotová řešení. Computer Press, Brno 2009. ISBN 978-80-251-2190-0. 376 stran, CD
    Tahle kniha mne stylem výkladu příliš neuchvátila, ale pokud jde o obsah, je velice užitečná. Jako všechny knihy z edice "Hotová řešení" obsahuje návody jak řešit různé běžné i méně běžné úkoly. Vedle standardních operací, jako je práce s řetězci, zde najdeme několik kapitol věnovaných nestandardním, ale velice užitečným knihovnám, jako je Xerces, analyzátor (parser) jazyka XML, nebo knihovny pro práci se sokety jak pod Windows, tak i pod Linuxem. Velice užitečná je i kapitola věnovaná práci s databázovám serverem MySQL.
    Na doprovodném CD jsou jak zdrojové texty příkladů z této knihy, tak i nestandardní knihovny, o nichž autor mluví.[leden 2010]

Literatura o standardní šablonové knihovně (STL)

  1. P. J. Plauger, A. A. Stepanov, Meng Lee, D. R. Musser: The C++ Standard Template Library. Prentince Hall 2001. ISBN 0-13-437633-1. Anglicky.
    Popis hlavičkových souborů obsahujících standardní knihovnu jazyka C++, dále popis tříd a dalších konstrukcí v nich, základní informace o jejich účelu a použití. Může sloužit především jako reference, jako učebnice je to omezeně použitelné.
  2. D. R. Musser, G.J. Derge, A. Saini: STL Tutorial and Reference guide, Second Edition.Addison-Wesley, 2001. ISBN 0-201-37923-6. Anglicky.
    Ukazuje použití konstrukcí ze STL (nejen tříd, ale i algoritmů). Podstatně lépe čitelné než předchozí publikace. Ve skutečnosti asi jedna z nejlepších publikací o STL. Anglicky.
  3. P. J. Plauger: The Draft Standard C++ Library.Prentince Hall 1995. ISBN 0-13-117003-1. Anglicky.
    Popis hlavních hlavičkových souborů obsahujících standardní knihovnu jazyka C++ a tříd v nich, ovšem podle návrhu standardu z doby před rokem 1995. To znamená, že dnes jde o zastaralou záležitost. Například datové proudy zde nejsou ještě implementovány prostřednictvím šablon, liší se používání tříd rysů (traits), nepopisuje alokátory, lokální nastavení pouze zmiňuje atd. Liší se i jména hlavičkových souborů. Dnes již jen omezeně použitelné, pokud nepracujete s překladačem z oné doby. (Pozor, slovo "draft" je na obálce velice nenápadné).
  4. S. Meyers: Effective STL. Addison-Wesley 2001. ISBN 0-201-74962-9. Anglicky.
    Předpokládá povrchní znalost základních tříd knihovny STL. Vysvětluje použití kontejnerů (prostřednictvím iterátorů) a v 50 kapitolkách ukazuje problémy, na které můžeme narazit. Velice užitečná kniha.
  5. Nicolai S. Josuttis: The C++ Standard Library. Addison-Wesley 1999. ISBN 0-201-37926-0. Anglicky. 799 stran, cena 57,99$.
    (Česky C++ Standardní knihovna a STL. Computer Press 2005. 744 stran, cena 890 Kč/1330 Sk. ISBN 80-251-0511-1)
    Podrobná a dobře napsaná kniha. Na rozdíl od většiny autorů se nevěnuje jen kontejnerům, iterátorům a případně algoritmům a pomocným třídám, ale např. i třídě locale a problémům neanglických jazyků. (Autor žije v Německu. Zřejmě je nutné, aby šlo o knihu od autora, jehož rodnou řečí není angličtina, aby tuto problematiku považoval za hodnou zmínky. Poznamenejme ale, že v dodatku ke
    Stroustrupově knize je výklad o lokálním nastavení možná přehlednější.)
  6. Leen Ammeraal: STL for C++ Programmers. John Wiley & Sons 1997. ISBN 0-471-97181-2. Anglicky.
    Stručný, ale efektivně napsaný úvod do STL. Recenze citované na obálce říkají, že "hned po přečtení lze v STL programovat". Vychází ovšem ze starší verze návrhu standardu, a proto se mohou některé drobnosti odlišovat od konečné podoby standardu.
  7. Angelika Longer, Klaus Kreft: Standard C++ IOStreams and Locales. Adddison-Wesley 2004. ISBN 0-201-18395-1. Anglicky.
    Kniha obsahuje podrobný rozbor knihovny datových proudů počínaje použitím přes architekturu až po pokročilé vlastnosti. Vedle toho zde najdeme podrobný výklad o třídě locale, třídách fazet a dalších věcech, které souvisí s internacilonalizací programů v C++. Téměř polovinu knihy zabírá referenční přehled uvedených tříd.
    Zajímavé, ale velice specializované čtení.[srpen 2007]
  8. Pete Becker: C++ Standard Library Extensions. A Tutorial and Reference. Addison-Wesley 2006. ISBN 0-321-41299-0. Anglicky.
    Standardní knihovna jazyka C++ nebyla v době zveřejnění standardu ISO 14882 v r. 1998 zcela dokončena -- chyběla v ní řada nástrojů. Tato kniha popisuje konstrukce, které by měly být v nové verzi standardu; některé již byly standardizační komisí schváleny. Jde především o chybějící kontejnery, nástroje pro práci s regulárními výrazy atd. Je to kniha, která brzy bude aktuální. [srpen 2007]

 

Doporučená literatura    Nedoporučená literatura     Ostatní literatura o C a C++    Literatura o STL    Ostatní literatura


Moje domovská stránka    Přednášky a semináře