Nakladatelství Computer Press se pustilo do historického počinu, když se rozhodlo vydat překlad kultovní série knih Donalda Knutha The Art of Computer Programming. První díl označený podtitulem Základní algoritmy je pouze začátkem dlouhé série, která ani v angličtině ještě nevyšla celá, a to přestože na ní její autor začal pracovat již v roce 1962.
Původně zamýšlel napsat jednosvazkovou knihu o dvanácti kapitolách, ale nějak se rozepsal (to bych od někud znal), takže do prvního, více než 600stránkového dílu se mu vešly jen dvě kapitoly. Rozhodl se proto vydat knihu ve více dílech, přičemž každý díl měl obsahovat dvě kapitoly. Bohužel, ani toto předsevzetí nedodržel, takže 4. díl nakonec rozdělil do pěti svazků, i když výrazně tenčích.
Ing. Virius, který píše paralelní recenzi, vás v ní jistě seznámí s duchem knihy a stylem výkladu. Já proto nyní klasický formát recenze na chvíli opustím a povím vám něco o zákulisí přípravy této podivuhodné série. Chtěl bych, abyste z tohoto výkladu pochopili, že Donald Knuth připravuje všechny texty opravdu nesmírně pečlivě a snaží se v nich postihnout vše, co je o probírané problematice známo. I to je jeden z důvodů, proč známý časopis American Scientist zařadil tuto sérii knih mezi tucet nejlepších vědeckých monografií minulého století.
Jak jsem byl řekl, Knuth začal psát v roce 1962, avšak vycházet začaly jeho knihy až v roce 1968. Do roku 1973 vydal první tři díly. Mezitím ale věda pokročila, tak se s nakladatelem dohodli, že před vyjitím dalších dílů vyjde druhé vydání prvních tří.
Při přípravě druhého vydání se ale Knuthovi se ale nelíbil způsob sazby, tak se rozhodl, že vydání druhého dílu o pár měsíců práce odloží a během té doby vytvoří sázecí program, který mu umožní sázet podle jeho představ. Těch pár měsícpů se nakonec protáhlo na osm let. Po nich přišel s programem TeX, v němž je nyní celá kniha sázena a který se stal záhy nejpopulárnějším autorským i sázecím programem na univerzitách.
Jak zajisté odhadnete, vývoj se nezastavil, a tak bylo nutno před vyjitím dalších dílů nejprve aktualizovat ty již dříve vyšedší. V roce 1997 tedy začalo vycházet třetí vydání prvních dvou dílů, na něž navázalo druhé vydání třetího dílu a které nyní pokračuje postupným vydáváním prvního vydání jednotlivých svazků dílu čtvrtého.
Vzhledem k tomu, že mezi tím uplynulo 11 let, jistě odhadnete, že se opět mnohé změnilo. Proto ani plánovaný obsah kapitol, který autor předestře v předmluvě k prvnímu dílu, nevydržel a za tu dobu se trochu změnil (tedy přesněji změnil se obsah čtvrtého dílu). Současný stav je tedy následující:
  • Díl 1: Základní algoritmy (vyšel v červnu 1997)
    Zde se v první kapitole probírá nejprve povšechná teorie, pak autor vyloží architekturu svého hypotetického počítače, pro nějž všechny programy vytváří. Druhá kapitola nás pak seznámí se základními datovými strukturami: seznamy a stromy.

  • Díl 2: Seminumetrické algoritmy (vyšel v listopadu 1997)
    Kniha obsahuje třetí a čtvrtou kapitolu (kapitoly jsou číslovány plynule skrz jednotlivé díly). Třetí pojednává pseudonáhodných číslech a jejich generaci, čtvrtá pak probírá práci s čísly v plovoucí čárce a optimalizaci numerických algoritmů včetně faktorizace prvočísel používané v kryptografii.

  • Díl 3: Vyhledávání a třídění (někdo dá přednost termínu řazení – díl vyšel v květnu 1998)
    Jak jistě sami odhadnete, díl obsahuje pátou a šestou kapitolu. Pátá pojednává o třídění (řazení), které rozděluje na externí a interní (každému je věnována vlastní podkapitole). Šestá se pak zabvývá vyhledáváním v tabulkách i souborech přičemž je opět rozdělena na výklad metod pro sekvenční vyhledávání a metod pro vyhledávání pomocí klíčů.

  • Díl 4: Kombinatorické algoritmy (postupně vychází)
    Jak jsem již řekl, tento díl se oproti původním předpokladům poněkud rozrostl, takže nakonec vychází v několika svazcích. Jejich příprava ale autorovi zabrala poměrně dost času, takže jsme si na vyjití dalších svazků museli počkat a navíc jednotlivé svazky vycházely na přeskáčku (a zatím ještě všechny nevyšly). Rozdělení do více svazků bylo mimo jiné učiněno i pod tlakem čtenářů, kteří nechtěli čekat na vydání další tlusté knihy a přiměli autora, aby rozdělil text do útlejších brožurek s tloušťkou do 200 stran. Čtvrtý díl je (nebo přesněji bude) tvořen následujícími svazky:
  • Svazek 0: Úvod do kombinatorických algoritmů a booleovských funkcí (vyšel v dubnu 2008)
  • Svazek 1: Bitové triky a techniky; diagramy binárního rozhodování (vyjde v březnu 2009)
  • Svazek 2: Generace všech n-tic a permutací (vyšel v únoru 2005)
  • Svazek 3: Generování všech kombinací a částí (vyšla v srpnu 2005)
  • Svazek 4: Generování všech stromů, historie kombinatorických generací (vyšel v únoru 2006)
  • Díl 5: Syntaktické algoritmy (teprve se píše)
    Tento díl je prozatím pouze v plánech má opět obsahovat dvě kapitoly. Devátá se má zabývat lexikálním prohledáváním (scanning), kam autor zařazuje i vyhledávání textových řetězců a komprimaci, desátá pak bude probírat lexikální analýzu (parsing).
Jak si jistě domyslíte, tato série, která vám postupně vysvětlí, rozebere a exaktně dokáže téměř vše, co v současné době víme o algoritmizaci, nemá v odborné literatuře obdobu. Řekl bych, že každý, kdo to myslí s programováním vážně a chce je poznat doopravdy do hloubky, by měl vážně uvažovat o zařazení této všeobjímající série do své knihovny.