Higher-Order Perl
Szerző:
Mark Jason Dominus
Kiadó:
Morgan Kaufmann
Kiadás éve:
2005
ISBN:
1-55860-701-3
Oldalak száma:
600
Értékelés:
10
A Higher-Order Perl (Magasszintű Perl) című könyv egy egyedülálló kiadvány, nem csak Perl programozóknak. Számos könyvet láttam már, melyek segítségével elsajátíthatjuk a Perl programozást, de egyikük sem tanít meg minket valóban Perlben programozni. Ez a könyv a kivétel. Rendkívül olvasmányos, érthető módon ismerhetünk meg olyan programozási fogásokat, tervezési mintákat, melyek jóval hatékonyabbá tehetik munkánkat. Filozófiát, új nézőpontot kapunk olyan megoldások tekintetében is, melyeket eddig is használtunk.
Mark Jason Dominus már 1992 óta használja a Perl nyelvet, szerzője több Perl modulnak, részt vett a Perl dokumentációjának készítésében is. Rendszeres előadó a Perl konferenciákon, s nagyvállalatoknak is tart tanfolyamokat különböző Perles témakörökben.
Ez a könyv már évek óta készülő, alapos mű, minden fejezete alaposan meg lett fogalmazva, ki lett dolgozva. Nem túl általános módon a könyv írását önkéntesek hada segítette egy levlistán, ahol az előzetes változatok átolvasásával, javaslatok tételével tehették még jobbá, forgathatóbbá a könyvet. Ez sikerült, a könyv közel 600 oldalán tömény tudást kaphat az olvasó.
Míg más könyvek a Perl szintaktikáját, a vezérlő szerkezeteket, s talán az alapvető programozási megoldásokat kínálják, ettől a könyvtől egészen mást kapunk. Előszavát a szerző a sokat hallott szólással indítja: sokszor hallani, hogy egy jó Fortran programozó bármely programozási nyelven tud Fortranban programozni - akár tud erről, akár nem. Ezt egészíti ki saját meglátásával: a legtöbb Perl programozó C programot ír Perlben - akár tud erről, akár nem. S ez így igaz.
Hogy a könyv tartalmáról is szót ejtsünk: gyakorlatilag Perlre szabott algoritmusokkal és programozási technikákkal ismertet meg minket, melyeket bátran hívhatunk akár tervezési mintáknak is. Teszi mindezt számos gyakorlati példával, olvasmányosan. Az első fejezetben a rekurzió és a kampók (callbacks/hooks) technikáját ismerhetjük meg, vagyis azt, hogy mi a rekurzív eljárások filozófiája, s hogyan használhatjuk ezt rugalmas, újra felhasználható kódok írására. A második fejezet a kapcsoló táblákkal (dispatch tables) ismerteti meg az olvasót, majd sor kerül a gyorsítótárazásra és a "memorization" technikára is (ez utóbbi lényege, hogy egy eljárás automatikusan gyorsítótárazni tudja a futási eredményét, nagyságrendekkel felgyorsítva egy programot, ha az ugyanazon értékkel többször is meghívja azt.
A negyedik fejezet az iterátorok használatába vezet be minket, bemutatva, hogyan profitálhatunk használatukból, egy rekurzív, vagy szimpla adatszerkezetet hogyan dolgozhatunk fel hatékonyan. Az ötödik fejezetből azt tudhatjuk meg, hogyan, milyen lépések segítségével írhatunk át egy rekurzív algoritmust iterátoros megoldássá. A hatodik fejezet a végtelen sorokhoz kapcsolódó algoritmusokból és technikákból ad egy áttekintést. A hetedik fejezetben a magasszintű függvényekkel és a „körrizésükkel” (currying, ami Haskell B. Curry-ről kapta a nevét) ismertet meg, vagy azzal, hogy miért lesz hatékonyabb „előtét” eljárásokal a munkánk. A nyolcadik fejezet a szövegfeldolgozás mélyebb bugyrait teszi teljesen érthetővé, a különböző nyelvek, adatformátumok feldologozására használható technikákat bemutatva. Végezetül az utolsó, kilencedik fejezet segítségével a hatalmas irodalommal bíró deklaratív programozás Perles vetületébe tekinthetünk bele, vagyis abba, hogy milyen technikák vannak arra, hogy csupán a probléma leírásával a számítógép meg is tudja azt oldani.
Minden bizonnyal a hazai elméleti programozással foglalkozó egyetemeken ezen technikák többségét megtanítják a hallgatóknak, de aki ezt kihagyta, vagy akkor túl száraz volt ez számára, most konkrét példákkal, a Perl nyelv felől szemlélve ismerkedhet meg a hatékony használatukkal.
A könyv weblapján a szerző ígérete szerint hamarosan elérhető lesz a könyv teljes anyaga, de ettől függetlenül csak javasolni tudom a megvételét, alapkönyv a témában. Sőt, ha nem vagyunk Perl programozók, s távol áll tőlünk a Perl nyelv szintaktikája, filozófiája, akkor is jól hasznosítható szemléletet nyújthat a könyv, melyet máshol is okosan alkalmazhatunk a jövőben.
■ Mark Jason Dominus már 1992 óta használja a Perl nyelvet, szerzője több Perl modulnak, részt vett a Perl dokumentációjának készítésében is. Rendszeres előadó a Perl konferenciákon, s nagyvállalatoknak is tart tanfolyamokat különböző Perles témakörökben.
Ez a könyv már évek óta készülő, alapos mű, minden fejezete alaposan meg lett fogalmazva, ki lett dolgozva. Nem túl általános módon a könyv írását önkéntesek hada segítette egy levlistán, ahol az előzetes változatok átolvasásával, javaslatok tételével tehették még jobbá, forgathatóbbá a könyvet. Ez sikerült, a könyv közel 600 oldalán tömény tudást kaphat az olvasó.
Míg más könyvek a Perl szintaktikáját, a vezérlő szerkezeteket, s talán az alapvető programozási megoldásokat kínálják, ettől a könyvtől egészen mást kapunk. Előszavát a szerző a sokat hallott szólással indítja: sokszor hallani, hogy egy jó Fortran programozó bármely programozási nyelven tud Fortranban programozni - akár tud erről, akár nem. Ezt egészíti ki saját meglátásával: a legtöbb Perl programozó C programot ír Perlben - akár tud erről, akár nem. S ez így igaz.
Hogy a könyv tartalmáról is szót ejtsünk: gyakorlatilag Perlre szabott algoritmusokkal és programozási technikákkal ismertet meg minket, melyeket bátran hívhatunk akár tervezési mintáknak is. Teszi mindezt számos gyakorlati példával, olvasmányosan. Az első fejezetben a rekurzió és a kampók (callbacks/hooks) technikáját ismerhetjük meg, vagyis azt, hogy mi a rekurzív eljárások filozófiája, s hogyan használhatjuk ezt rugalmas, újra felhasználható kódok írására. A második fejezet a kapcsoló táblákkal (dispatch tables) ismerteti meg az olvasót, majd sor kerül a gyorsítótárazásra és a "memorization" technikára is (ez utóbbi lényege, hogy egy eljárás automatikusan gyorsítótárazni tudja a futási eredményét, nagyságrendekkel felgyorsítva egy programot, ha az ugyanazon értékkel többször is meghívja azt.
A negyedik fejezet az iterátorok használatába vezet be minket, bemutatva, hogyan profitálhatunk használatukból, egy rekurzív, vagy szimpla adatszerkezetet hogyan dolgozhatunk fel hatékonyan. Az ötödik fejezetből azt tudhatjuk meg, hogyan, milyen lépések segítségével írhatunk át egy rekurzív algoritmust iterátoros megoldássá. A hatodik fejezet a végtelen sorokhoz kapcsolódó algoritmusokból és technikákból ad egy áttekintést. A hetedik fejezetben a magasszintű függvényekkel és a „körrizésükkel” (currying, ami Haskell B. Curry-ről kapta a nevét) ismertet meg, vagy azzal, hogy miért lesz hatékonyabb „előtét” eljárásokal a munkánk. A nyolcadik fejezet a szövegfeldolgozás mélyebb bugyrait teszi teljesen érthetővé, a különböző nyelvek, adatformátumok feldologozására használható technikákat bemutatva. Végezetül az utolsó, kilencedik fejezet segítségével a hatalmas irodalommal bíró deklaratív programozás Perles vetületébe tekinthetünk bele, vagyis abba, hogy milyen technikák vannak arra, hogy csupán a probléma leírásával a számítógép meg is tudja azt oldani.
Minden bizonnyal a hazai elméleti programozással foglalkozó egyetemeken ezen technikák többségét megtanítják a hallgatóknak, de aki ezt kihagyta, vagy akkor túl száraz volt ez számára, most konkrét példákkal, a Perl nyelv felől szemlélve ismerkedhet meg a hatékony használatukkal.
A könyv weblapján a szerző ígérete szerint hamarosan elérhető lesz a könyv teljes anyaga, de ettől függetlenül csak javasolni tudom a megvételét, alapkönyv a témában. Sőt, ha nem vagyunk Perl programozók, s távol áll tőlünk a Perl nyelv szintaktikája, filozófiája, akkor is jól hasznosítható szemléletet nyújthat a könyv, melyet máshol is okosan alkalmazhatunk a jövőben.
PHP-ban ugyanez?
Nincs?
Ennek a könyvnek egy része azonban PHPben is hasznosítható technikákat mutat be.
A PHPt inkább a web programozás felől szokták megközelíteni, s webes algoritmusokkal megismertetni.
-boogie-
Angol nyelven / In English
http://hop.perl.plover.com/~alias/list.cgi?2:mss:191:200506:kkaigcnkldohelpehmdg
-boogie-