Translated from the original Hungarian by Wolfgang Laun
Higher Order Perl
Review by Bártházi András
The book titled Higher-Order Perl is a singular work, not just for Perl programmers. I've already seen many books which support us in gaining knowledge of Perl programming, but not a single one of them really teaches us programming in Perl. This book is the exception. Extraordinarily well readable, in an understandable way, we can learn about such programming tricks and design patterns, which add increased effectiveness to our work. We gain deeper insight and a new point of view with respect to such solutions as we have used them up to now, too.
Mark Jason Dominus has been using Perl since as early as 1992, being the author of several Perl modules, and he participated in the Perl Documentation Project. He is a regular lecturer at Perl conferences and at training courses for large companies.
This book has evolved over several years, an elaborate work, every chapter having been elaborately written and polished. In a rather unorthodox manner, the book was written while an army of volunteers has helped on a mailing list where advance versions underwent inspection and were subject to improving propositions. This succeeded, the reader may obtain compressed knowledge on close to 600 pages.
While other books provide Perl's syntax, the control structures and maybe the basic programming solutions, we get something completely different from this book. The author begins the preface with the frequently heard words: it may often be heard that a good FORTRAN programmer can write FORTRAN programs in any language, knowingly or not. To this he adds his own opinion, that most Perl programmers write C programs in Perl, knowingly or not. And this is true.
To say a word about the contents of the book, too: It makes us acquainted with algorithms and programming techniques fixed on practical Perl which we might easily call programming patterns. It does all of this with numerous practical, well-explained examples. The first chapter introduces us to recursion and callback techniques, and also to the philosophy behind recursive procedures, and to how we can make flexible use of it, by writing reusable code. The second chapter instructs the reader about dispatch tables, and then it's the turn for caching and memoization techniques as well (the principle of the latter being that an automatic process can speed up obtaining the result of a subroutine, accelerating a program by an order of magnitude, if the subroutine is called repeatedly with the same values).
The fourth chapter introduces us to the use of iterators, showing how we can profit from their use, and how to process recursive or simple data structures effectively. From the fifth chapter we can learn with which steps we can rewrite a recursive algorithm to an iterative solution. The sixth chapter surveys algorithms and techniques related to infinite series. The seventh chapter deals with high-order funtions and "currying" (named after Haskell B. Curry), explaining why our work will be more effective using generic procedures. The eighth chapter explains all about packages for processing texts, showing the techniques for the processing of different formal languages and data formats. Finally, with the help of the ninth and last chapter you gain insight into the fundamentals of declarative programming, or how computers can solve a problem just from a description of the problem.
Certainly, at Hungarian universities teaching programming theory, the major part of these techniques is delivered to the students, but if someone has missed this, or when the theory was too dry for them, they can now get acquainted with their use, by practical examples, from the Perl language point of view.
According to the author's promise, the book's full text will be soon accessible on its web site, but independent from that, I can only recommend to buy it, a fundamental book within its topic. Even if we are not Perl programmers and if Perl's syntax and philosophy are far away from us, the book provides valuable insight, which we can apply well elsewhere, in the future.
Order Higher-Order Perl online from Barnes & Noble
Return to: Universe of Discourse main page | What's new page | Perl Paraphernalia