Zobrazují se příspěvky se štítkembooks. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkembooks. Zobrazit všechny příspěvky

20. září 2017

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).

Související články


5. dubna 2017

Kniha Living Clojure

Jsem beznadějný čtenář knih. Musím denně číst a ačkoliv jsou dnes k dispozici tuny textů v různých formách, mě nejvíc vyhovují knihy.

Jedinou úlitbou modernosti je, že pro odbornou literaturu mi více vyhovují ty digitální. Přece jenom - do Kindlu se toho vejde kupa a zastaralé vydání vám nepřekáží v reálném světě.

Back to the Future

Ani nevím, co mě to cvrnklo přes nos, ale po pětileté přestávce se vracím ke Clojure. Pět let je v softwarovém inženýrství dlouhá doba. Technologie můžou zaniknout, či se nečekaně rozvinout, nebo nabrat úplně jiný směr. A těší mě, že Clojure stále rozkvétá.

Říkal jsem si - jak se do toho zase dostat? No dobře, je to řečnická otázka. Spíš jsem si říkal, kterou knihu si vybrat? Když jsem s Clojure začínal, byla na trhu jediná kniha - Programming Clojure od @StuartHalloway. Byla to tehdy bible Clojure. A možná ještě je - letos vyjde třetí edice!

Udělal jsem si seznam a jako první volbu jsem hodně zvažoval oceňované Joy of Clojure, jejíž první edici jsem kdysi nedočetl. Nakonec ale převážila náhoda. (Mimochodem, kdyby vás ten seznam zajímal, najdete ho u mne na Goodreads. Nebo ve webové verzi zaskrolujte po pravé straně dolů.)

Gigasquid!

Že jsem zase vlítnul do Clojure je více méně náhoda. Nebo osud. Minulý podzim jsem se byl po čase podívat na Java konferenci - český GeeCON - a tam jsem potkal Carin Meier, aka @Gigasquid. (Už jsem o tom psal na svém druhém blogu - GeeCON Prague 2016, den 2.)

Carin stojí za to sledovat. Kromě výše a níže zmíněné knihy, pracuje v Cognitectu. Ano, v té firmě, kde se koncentruje Clojure smetánka (posuďte sami), včetně polo-boha Riche Hickeyho.

Pokud budete mít možnost, určitě si s Carin popovídejte. Zvládl jsem to i já, zavilý introvert. Zakecal jsem se s ní tak moc, až jsem v podstatě prošvihnul následnou přednášku.

Alice in Wanderland

No dobře, to bylo keců... co ta kniha? Je dobrá, dal jsem jí na Goodreads 5 hvězd. Samozřejmě, v daném kontextu - je to dobrá kniha pro začátečníky, nebo pro někoho, kdo si potřebuje po čase Clojure oživit.

Kniha prochází všechny základní témata, která byste v učebnici čekali a skládá je v rozumném pořadí:
  • Kolekce a sekvence
  • Funkcionální programování
  • Stav a konkurence
  • Java interoperabilita
  • Leiningen a Clojure projekt
  • Asynchronni komunikace s core.async
  • Clojure web applikace
  • Makra
Napsáno pěkně, stručně, přehledně. Kromě toho, ale přináší druhá část knihy tréninkový program: Clojure v 7 týdnech.

Jak píše Carin v úvodu, učení se nového jazyka má silné paralely, jako když chcete zčista jasna začít běhat: důležitá je motivace, pravidelnost a... nepřetrénovat se.

Ohledně běhání, na webu je dnes spousta tréninkových plánů od 5 kilometrů až po maraton. Carin k tomu přistupuje obdobně - začít zvolna a postupně navyšovat objemy a obtížnost.

Prvních pár týdnů jde o řešení problémů na 4clojure. Pak se přesuneme na GitHub, kde má Carin několik kata, inspirovaných příběhem Alenky v říši divů: wonderland-clojure-katas. Poslední týden je pak věnovaný deploymentu Clojure aplikace na Heroku.

A je to! Kniha je přečtená a vy jste fluent v Clojure :-)  No, tak jednoduché to není. Ale je to dobrý začátek. Jeden z možných.

17. července 2011

PragPub se věnuje Clojure

Vydavatelství The Pragmatic Bookshelf, které svého času založili někdejší signatáři Manifestu agilního vývoje softwaru Andy Hunt a Dave Thomas, vydává (zdarma) příjemný časopis, měsíčník PragPub. Aktuální červencové číslo se věnuje převážně Clojure. Jsou zde mmj. články o neměnnosti dat a kolekcích, nebo o DSL.

Kromě odkazovaného HTML vydání jsou na stránce vydaných čísel magazínu k dispozici i formáty mobi, epub a PDF.

15. června 2011

Rich Hickey: Radši trávím čas přemýšlením o problému

Skončil mi v Readeru zajímavý rozhovor s Richem Hickeym. Zajímavý byl i dotazovatel - Michael Fogus, autor knihy The Joy of  Clojure. Rozhovor je trochu delší a dost špatně (typograficky) formátovaný, ale kvůli tomu obsahu stojí za to se tím prokousat.

Rich hovoří o svých zkušenostech programátora, co bylo před Clojure, co Clojure pozitivně a negativně ovlivnilo, apod. Zmíněn je také Richův seznam na Amazonu Clojure Bookshelf (mmch. inspirativní seznam pro čtení, už před časem jsem si tam pár kousků vybral).

Mmj. mě zaujalo, že Rich je spíš na debuggování (debugging master) a nepíše testy (TDD):

"If people think that spending fifty percent of their time writing tests maximizes their results—okay for them. I’m sure that’s not true for me—I’d rather spend that time thinking about my problem. I’m certain that, for me, this produces better solutions, with fewer defects, than any other use of my time."

A co dělá Rich pro zlepšení svých programátorských skillů?

"I read relentlessly. I don’t do any programming not directed at making the computer do something useful, so I don’t do any exercises. I try to spend more time thinking about the problem than I do typing it in."

3. února 2011

Currying

Čtu teď knížku Groovy for Domain-Specific Languages a zaujala mě tam technika, kterou jsem doposud neznal - currying. V krátkosti jde o transformaci funkce, která má více argumentů (nebo pole argumentů) tak, že může být zavolána jako řetěz funkcí s jedním argumentem. Zapsáno matematicky: g(y) = (y -> f(x,y)). Funkce g je "(z)kariovaná"  (curried) verze funkce f.

Pojem currying je spojován hlavně se jménem matematika Haskella Curryho. Ano, je to ten Haskell, po kterém je pojmenován (čistě) funkcionální jazyk Haskell. Currying je vlastní v podstatě všem funkcionálním jazykům, za zmínku stojí speciálně Haskell a ML, kde všechny funkce mají přesně jeden argument, tj. jsou "kariované". "Kariované" funkce by také měly jít použít/vytvořit ve všech jazycích, které podporují closures, namátkou:
No a jak vypadá currying konkrétně? V Groovy:

No a tenhle blog je o Clojure, takže jak to vypadá v Clojure?

V Clojure není potřeba syslit argumenty po jednom, ale dá se jich zadat víc naráz (1-n):

Závěrem, k čemu je vlastně currying dobrý? Kromě toho, že může zpřehlednit/zjednodušit funkce s mnoha argumenty (lambda kalkul v matematice), je hlavní výhoda použití v doplňování argumentů on-the-fly - doplním argumenty, které aktuálně znám a ostatní doplním, až budou k dispozici. Vzhledem k tomu, že Clojure je lazy-init, může být currying konvenující metoda.