2012. március 17.

Könyvismertető - Michaelson: An Introduction to Functional Programming Through Lambda Calculus

A funkcionális programozás iránt napjainkban ismét megnőtt az érdeklődés. A párhuzamos/konkurens programozás terén egyre inkább előtérbe kerülnek a funkcionális nyelvek (Haskell, Erlang, Clojure ill. Scala), ill. a Hadoop és egyéb MapReduce eszközök is egy régi funkcionális megoldásra építenek, de pl. a "mainstream" nyelvek is egyre több megoldást vesznek át ebből a paradigmából (pl. a Python és a Ruby is megemlíti a Lisp-et mint nagy elődöt). Michaelson könyve egyszerűen tökéletes! Senki sem tanulhat meg belőle programozni (ez hülyén hangozhat elsőre), nem is ez a célja, de pont oda juthat el vele az érdeklődő olvasó ahonnét már sikeresen támadhatja a funkcionális nyelveket. Nagy előnye hogy nem csak infósok és matekosok forgathatják haszonnal, hanem nyelvészek és filozófusok is.


A könyv nagy előnye hogy ingyenesen is elérhető, ill. az első kiadás példányai fel-fel bukkannak kedvező áron online és hagyományos boltokban is. A második kiadás reprint, egy rövid előszónál nincs benne több, ezért aki spórolni szeretne bátran forduljon az alternatív beszerzési források felé. Az "utánnyomás" hátránya hogy modern funkcionális nyelvekkel nem ismerteti meg az olvasót. A kilencedik fejezetben a standard ML, a tizedikben a Lisp sajátosságaival ismerkedhetünk meg, nem túl mélyen.

Hátrányai ellenére a mű a maga nemében zseniális! Nyolc fejezetben implementációtól függetlenül mutatja be a szerző hogyan alkalmazható a lambda kalkulus mint számítási modell. A diszkrét matematikai alapokkal tisztában lévő nyelvész vagy filozófus is eredményesen dolgozhat a könyvvel, amennyiben nem akar végigszaladni a háromszáz oldalon hanem emészti a problémákat, és időt szán a feladatok megoldására is.

Nem egy funkcionális nyelvvel ismertet meg minket Michaelson, hanem a mögöttük rejlő "filozófiával".  Egy rövid történeti ismertető után a második fejezet félig-meddig informális módon bevezeti a lambda kalkulus fontosabb ismérveit. A harmadik fejezetben (Conditionals, booleans and numbers) a funkcionális nyelvek legalapvetőbb építőelemeit vehetjük szemügyre, ezután az aritmetika és a rekurzió témái következnek. Ezt köveit a típuselmélet, majd a listák (és stringek) következnek. Ez nagyon fontos része a könyvnek, hiszen a listák központi szerepet töltenek be a legtöbb funkcionális nyelvben. Végül az összetett kifejezések a kiértékelések (evaluation) kerülnek terítékre. Ezeket követi a két már említett rövid bevezető a standard ML ill. a Lisp nyelvbe.

Egyszerű logikai alapismeretekkel bárki belevághat a könyvbe. Kb. egy GAMUT I. és Computability and Logic háttérrel már különösebben erőlködnie sem kell az olvasónak és remekül felkészíti a kezdőket az olyan nagyszerű könyvek feldolgozására mint pl. a The Haskell Road to Logic, Maths and Programming ill. Computational Semantics with Functional Programming de jó felvezetője a Lisp családba tartozó nyelveknek is.

Nincsenek megjegyzések: