ObrázokHovorí sa, že koľko jazykov vieš, toľkokrát si človekom. Nepochybujem o tom, že v čase, keď toto porekadlo vzniklo, niečo ako programovacie jazyky ani neexistovalo. Napriek tomu by sa to dalo ľahko parafrázovať ako: Koľko programovacích jazykov vieš, toľkokrát si programátorom. Nie že by ste potrebovali byť guru vo všetkých existujúcich jazykoch. Nie. Stačí veľmi dobre (do hĺbky) poznať zopár a tak trochu vedieť o všetkých. Tá širšia (aj keď nie hlboká) vedomosť o iných jazykoch vám za prvé otvára obzory a ukazuje, čo všetko existuje a za druhé vás tak trochu pripravuje na deň, keď sa pred vami zrazu objaví projekt postavený na jednom z týchto jazykov. Aj preto je dobré skôr alebo neskôr siahnuť po knihe ako je Seven Languages in Seven Weeks od Bruce Tatea.

Je to naozaj tak, ako sa píše v názve. Kniha vás učí sedem programovacích jazykov (aj keď to nemusí byť za sedem týždňov). Autor si dal pomerne silne záležať na výbere a zozbieral naozaj mnohochuť. Ako sám píše, robí to nie aby vás naučil konkrétne týchto sedem jazykov, ale aby ukázal, čo všetko existuje a že je dobre si študovať a prezerať úplne nové veci. Aj preto kniha začína motivačnou kapitolou, prečo sa vôbec naraz učiť toľko jazykov.

A potom už nasledujú samotné jazyky – každý ma svoje tri kapitoly, ktoré vás rýchlokurzom prevedú od úplného začiatku až po komplikovanejšie témy. Ruby ako čiste objektovo orientovaný jazyk, IO ako prototypový jazyk a Prolog založený na logických pravidlách. Ďalej Scala ako kombinácia objektovo orientovaného a funkcionálneho jazyka, Erlang ako niečo medzi Prologom a funkcionálnymi jazykmi, Closure ako funkcionálny jazyk pre JVM a na záver Haskell ako čiste funkcionálny jazyk.

Ako vidno, zastúpené sú rôzne paradigmy programovania, pričom autor medzi nimi preskakuje a vyberá jazyky, ktoré plne zastupujú danú paradigmu, alebo sú naopak, ich kombináciou. A práve o tých kombináciách hovorí ako o niečom, čo v skutočnosti posúva svet programovacích jazykov ďalej. Podľa jeho názoru to totiž nikde nefunguje tak, že ak príde nová paradigma, tak sa jednoducho začne používať. To je vždy príliš veľká zmena pre svet IT, aby sa jednoducho mohla stať. Namiesto toho sa udeje to, že príde nejaký jazyk, ktorý v sebe kombinuje starú aj novú paradigmu. Akýsi most, ktorý umožňuje rozmýšľať starým aj novým štýlom (napríklad C++ bol medzistupeň medzi C-čkom a novými objektovými jazykmi).

Bruce je fanúšikom funkcionálnych jazykov (na tom výbere to je tak trochu vidno, hoci musím povedať, že sa snaží objektívne pomenovať aj problémy a nedostatky týchto jazykov). A tiež si myslí (v poslednom čase sa s týmto názorom stretávam nejako často), že všetky jazyky nakoniec smerujú k Lispu (funkcionálny jazyk, ktorý je tu s nami už 40 rokov), zároveň si ale uvedomuje, že ak by mal Lisp uspieť, tak už by sa to stalo. Aj preto sa pozerá na nové jazyky ako Scala alebo Closure ako na tých pravých potomkov Lispu (a Javy), ktoré by sa mohli presadiť.

Kniha je napísaná tak, že každý programovací jazyk je rozdelený do troch častí, každá vysvetľuje jedno alebo viacero zaujímavých tém. Na záver každej takejto časti je potom séria cvičení. Autor nabáda a ukazuje, ako si u seba rozbehať pre každý jazyk skúšobné prostredie, takže pokiaľ si radi skúšate veci, o ktorých práve čítate, tak to budete mať o to jednoduchšie.

Za sedem týždňov sa nedokážete naučiť do hĺbky sedem programovacích jazykov. Niektoré z tých, ktoré sú v knihe, sú naozaj obsiahle a ich plné pochopenie by vám zabralo pravdepodobne mesiace. Ale to ani nebol cieľ. Cieľ bol ukázať nové veci a to, že jazyky sa menia. Že mainstream sa veľmi pomaly, ako tektonická doska, centimeter po centimetri posúva. A že ak dnes viete .Net, Javu a JavaScript, tak o 10 rokov to už nemusí byť také super ako je dnes. A cieľom bolo tiež vysvetliť existujúci svet z novej perspektívy. Až pri čítaní o Ruby môžete pochopiť, že Java nie je čiste objektovo-orientovaný jazyk (lebo má primitívne typy, čo nie sú objekty) alebo až pri čítaní o Io pochopíte ako fungujú prototypové jazyky a teda JavaScript (a zaradíte sa tak medzi pomerne úzku skupinu vývojárov). Veľmi jednoducho povedané, čas strávený čítaním takejto knihy vám nemôže uškodiť. Môže vám len pomôcť tým alebo iným smerom.