Učíme se programovat (v Javě)

Rozhodl jsem se dát dohromady seznam knih, které mi pomáhaly učit se programovat a které mi pomáhají se v tom dále zdokonalovat nejen po stránce čistě technické, ale i metodické a filozofické. Některé z těchto knih jsou už příliš staré a jiné jsou zase příliš nové na to, aby je každý znal. Přesto věřím, že i některé starší tituly mají stále svou hodnotu a jejich poslání platí i navzdory rychlosti technologického pokroku.

Pro začátek jsem vybral učebnice programovacích jazyků C a Java a jednu příručku pro pokročilejší javisty.

Učebnice jazyka C

Pavel Herout vyučuje softwarové předměty na Západočeské univerzitě v Plzni. Mimo jiné je autorem již legendární Učebnice jazyka C (a jejího pokračování). První vydání vyšlo již v roce 1992, čtvrté a zatím poslední je z roku 2004.

Poprvé jsem tuto knihu četl asi před deseti lety. Měl jsem ji půjčenou z knihovny a podle toho to vypadalo. Bylo to první vydání v salátové vazbě se zažloutlými listy. Účel byl ale splněn, základy jazyka C jsem se naučil. Nadšeně jsem si záhy koupil vlastní výtisk třetího vydání a rovnou i druhý díl.

Tato kniha je podle mě povinné čtení pro každého, kdo to myslí s programováním vážně. Sice z vás experta na programování neudělá, ale naučí vás opravdové základy strukturovaného programování. To je samozřejmě dáno především jazykem C. Ten vás nezatěžuje abstrakcemi z objektově orientovaných jazyků a současně vás nevodí za ručičku. Takže když uděláte něco špatně, natlučete si. V dnešní době to možná někomu přijde zbytečné, když máme Javu a C#, ale podle mě je dobré, když má programátor přehled o tom, jak to funguje na nižších úrovních. Kniha obsahuje spoustu příkladů a cvičení.

V jazyku C se mj. vyučují základy programování na Fakultě Informatiky na ČVUT v Praze.

Učebnice jazyka Java

Pavel Herout vydal také Učebnici jazyka Java. Poprvé vyšla v roce 2000 a v současnosti je na trhu její třetí vydání. Má dvě volná pokračování, z nichž to první se zabývá GUI a češtinou a to druhé dostupnými knihovnami.

Přiznám se, že tuto knihu jsem moc nečetl, protože v době, kdy se mi dostala do ruky, jsem již Javu ovládal na takové úrovni, že mi moc nového nepřinášela. Nicméně je obecně považována (alespoň u nás) za výbornou učebnici základů Javy a ve školách je doporučovanou literaturou. Pokud se chcete naučit Javu a v životě jste ji neviděli, pak je pro vás Učebnice jazyka Java od Pavla Herouta to pravé, s čím začít. Stejně jako předchozí kniha, i tato obsahuje spoustu cvičení.

Myslíme objektově v jazyku Java

V českých luzích a hájích ještě chvíli zůstaneme. Autorem knihy Myslíme objektově v jazyku Java je Rudolf Pecinovský. Zabývá se jak metodikami výuky programování, tak jejich aplikací při školeních atp. První vydání je z roku 2004. V knihkupectvích naleznete od roku 2008 druhé, rozšířené vydání.

Do rukou se mi tato kniha dostala asi před pěti lety. Na českém trhu se jistě (alespoň v té době) jednalo o unikát, pokud jde o způsob, jakým je čtenáři předkládána problematika objektově orientovaného programování a programovacího jazyka Java. Největší rozdíl oproti tradičním učebnicím spočívá v obráceném přístupu k výuce. Běžné učebnice objektových jazyků na začátku vysvětlují základní strukturální konstrukce jazyka a až později se dostanou k OOP samému.

Rudolf Pecinovský postupně velice srozumitelně vykládá základní principy OOP a učí čtenáře skutečně myslet objektově. Používá pojmy z tradičního paradigmatu, na kterém stojí např. Smalltalk. Vše je objekt, objekty si mezi sebou posílají zprávy, záleží jen na objektu, co s přijatou zprávou udělá atp. Použitý jazyk, tedy Javu, podává čtenáři spíš druhotně, pouze jako prostředek. Čtenář si znalosti osvojuje na jednoduchých předpřipravených příkladech zaměřených vždy na právě probírané téma a později na komplexní objektový přístup k řešení úloh. Cykly a větvení programu představuje až v momentě, když je to vhodné pro danou úlohu.

Ač je tato kniha výbornou učebnicí OOP, někomu může připadat nepříliš praktická. Pro pochopení OOP ji vřele doporučuji, ale jako vždy platí – jedna kniha nikdy nestačí.

Java efektivně (Effective Java)

Autorem knihy Java efektivně je Joshua Bloch. V současnosti pracuje v Googlu, ale řadu let byl Senior Engineerem v Sun Microsystems a podílel se na vývoji Javy a JDK. První vydání knihy vyšlo v roce 2001 (české o rok později), druhé vydání je z roku 2008. Bohužel to vypadá, že u nás se po této knize slehla zem. Grada ji na svých stránkách už nemá a patrně ji najdete jen v knihovnách nebo antikvariátech. Druhé vydání u nás (zatím) nevyšlo.

České vydání od Grady mám doma. Četl jsem i druhé anglické, které je rozšířeno především o novinky v jazyku, kterých mezi verzemi 1.4 a 1.5 přibylo poměrně dost. Jak jsem naznačil na začátku, nejedná se o učebnici, ale spíš příručku. Obsahuje desítky tipů a doporučení, jak psát kvalitní programy v Javě. Na špatných příkladech vysvětluje, proč byste se měli určitým věcem vyhnout a ukazuje správná řešení. Tuto knihu není nutné číst lineárně, můžete si v ní vyhledávat témata podle toho, s čím si právě nejste jisti, a nebo prostě jen tak, abyste se naučili něco nového. Zkrátka, ať se jedná o správné používání dědičnosti, generik nebo ošetřování výjimek, Joshua Bloch srozumitelně vykládá, jak byste k dané problematice měli přistupovat, abyste se vyhnuli zbytečným chybám.

Pokud to s Javou myslíte vážně (tj. chcete se jí věnovat profesionálně), tato kniha by ve vaší knihovně neměla chybět.