Kniha Clojure Applied
Kniha Clojure Applied je občas na internetu doporučovaná jako “druhá” kniha o Clojure, kterou byste si měli přečíst. Možná jsem se tím nechal po svém návratu ke Clojure podvědomě ovlivnit a tak po “refresh” knize od Carin Meier (o které jsem psal na jaře) jsem sáhnul po Clojure Applied. A musím říct, že spíš než “druhou”, bych ji doporučil jako “třetí”.
Proč by to měla být 2. Clojure kniha?
Důvody, proč je Clojure Applied doporučovaná jako druhá kniha jsou zřejmé. První kniha nového Clojure adepta bude pravděpodobně nějaký úvod do jazyka. Za sebe bych mohl doporučit tituly Programming Clojure (3rd edition), Living Clojure a The Joy of Clojure (2nd edition). A špatná asi nebude jakákoliv jiná, která pokrývá minimálně verzi 1.6+.
Co v těchto úvodních knihách chybí, je praktický aspekt Clojure:
- Jak v Clojure designovat rozsáhlejší produkční aplikaci.
- Jak strukturovat Clojure projekt.
- Jak vytvářet znovupoužitelné a dobře definované komponenty.
- Jak z těchto komponent stavět komplexnější řešení a jak komponenty provázat.
- Datové formáty pro výměnu dat (obligátní JSON, ale hlavně nativní Clojure formát EDN).
- Konfigurace prostředí.
- Jak aplikaci/knihovnu distribuovat (tohle je obecné, ne Clojure-specific).
Tyhle témata kniha pokrývá dobře a nováčkovi v Clojure může hodně pomoci.
Proč by to měla být 3. Clojure kniha?
Tohle bude asi dost subjektivní, ale osobně mi některá témata z knihy přišly docela náročná — necítil jsem se na ně ještě připravený. Clojure nedělám na fulltime, takže víc praxe by určitě pomohlo. Občas mi přišlo, že ten skok začátečník-expert je příliš velký a začátečník (po 1. knize) nedoskočí a zůstane “pod útesem”.
Nálož je třeba už hned první kapitola, probírající doménový model, která byla hodně hutná. Zamíchání multimethod a protokolů do modelování entit mi nepřišlo úplně šťastné a téma spíš zamlžilo.
Podobně nevhodné mi přišlo uvedení externí knihovny pro validaci Prismatic Schema hned v úvodní kapitole. To by mi sedělo spíš v kapitole o testování. Navíc bych v úvodu ocenil na validaci něco víc “vanilla-Clojure”.
Podobný, jen silnější dojem jsem měl ze sekce o Transducers a pipelines. Asi je dobře, že to bylo pohromadě v kapitole nazvané Use Your Cores. Ale musím se přiznat, že tady mne autoři ztratili a budu se muset k transducers a core.async ještě (opakovaně) vrátit.
Měla by to být 2½. Clojure kniha
Celkově mi kniha přišla nevyvážená, co se týče seniority témat. Některá témata byla vyloženě začátečnická — kolekce, sekvence, běžná concurrency (atoms, refs, agents), základní testování (clojure.test), či zakládání projektu na GitHubu. Čekání s těmito tématy až do 3. knihy je tak vlastně činí zbytečnými, jsou příliš esenciální.
Co bych tedy doporučil? Vybrat si jako druhou nějakou Clojure doménovou knihu. Zajímá vás web? Zkuste Web Development with Clojure (2nd edition). Zajímá vás machine learning? Zkuste Clojure for Machine Learning. Zajímá vás data science? Zkuste Clojure for Data Science.
A k tomu můžete po částech přikusovat Clojure Applied.
Co by mělo být v druhé edici?
Knihy stárnou. Technické knihy zastarávají ultra-rychle. Clojure Applied není výjimkou. Co by v potenciální druhé edici této knihy nemělo chybět?
Především velké téma posledního roku a nadcházející verze Clojure 1.9: clojure.spec. Nevím, jestli se nějaké knihy o clojure.spec dočkáme, ale druhá verze Clojure Applied by byla vhodným místem pro toto téma (se simultánní náhradou kapitoly o test.check).
clojure.spec by mi taky sedlo jako dobrá náhrada za již zmiňovanou knihovnu Prismatic Schema (samozřejmě separátně od úvodní doménové kapitoly).