- Paperback: 600 pages
- Publisher: Morgan Kaufmann; 1 edition (March 28, 2005)
- Language: English
- ISBN-10: 1558607013
- ISBN-13: 978-1558607019
- Product Dimensions: 7.4 x 1.4 x 9.4 inches
- Shipping Weight: 2.8 pounds (View shipping rates and policies)
- Average Customer Review: 21 customer reviews
- Amazon Best Sellers Rank: #246,130 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Higher-Order Perl: Transforming Programs with Programs 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
Fulfillment by Amazon (FBA) is a service we offer sellers that lets them store their products in Amazon's fulfillment centers, and we directly pack, ship, and provide customer service for these products. Something we hope you'll especially enjoy: FBA items qualify for FREE Shipping and Amazon Prime.
If you're a seller, Fulfillment by Amazon can help you increase your sales. We invite you to learn more about Fulfillment by Amazon .
"Enlightenment Now: The Case for Reason, Science, Humanism, and Progress"
Is the world really falling apart? Is the ideal of progress obsolete? Cognitive scientist and public intellectual Steven Pinker urges us to step back from the gory headlines and prophecies of doom, and instead, follow the data: In seventy-five jaw-dropping graphs, Pinker shows that life, health, prosperity, safety, peace, knowledge, and happiness are on the rise. Learn more
Frequently bought together
Customers who bought this item also bought
Customers who viewed this item also viewed
“It's well written…everyone who claims to be an expert ought to read it…these techniques allow programmers to accomplish far more than they're used to." Gregory V. Wilson, Dr. Dobb's Journal, November 2005 "It is, quite simply, one of the best books on programming I have read for a long time."Martin Schweitzer, Computing Reviews, Association for Computing Machinery, July 2005 "Mark Jason Dominus has hit his mark with Higher Order Perl. It is a very informative book that is a must read for Perl programmers who want to take their skills to the next level. Mark Rutz, Linux Journal, November 2005
“Higher-Order Perl is one of the Perl books that should have a place on the bookshelf of every Perl programmer. It offers an in-depth understanding of important programming techniques and fundamental concepts. The chapter on parsing alone is worth the price of this book. I do not know a better text about parsing in Perl. Reinhard Voglmaier, Unix Review, November 2005
“Higher-Order Perl is the most exciting, most clearly-written, most comprehensive, and most forward-looking programming book I've read in at least ten years. It's your map to the future of programming in any language." Sean M. Burke, Leading Programmer, Comprehensive Perl Archive Network (CPAN) "There are lots of book that teach you new Perl modules or techniques. This book goes beyond that and teaches a new way to think about Perl programming. Peter Norvig, Google Inc.
“As a programmer, your bookshelf is probably overflowing with books that did nothing to change the way you program. . . or think about programming. You're going to need a completely different shelf for this book. While discussing caching techniques in Chapter 3, Mark Jason Dominus points out how a large enough increase in power can change the fundamental way you think about a technology. And that's precisely what this entire book does for Perl. It raids the deepest vaults and highest towers of Computer Science, and transforms the many arcane treasures it finds--recursion, iterators, filters, memoization, partitioning, numerical methods, higher-order functions, currying, cutsorting, grammar-based parsing, lazy evaluation, and constraint programming--into powerful and practical tools for real-world programming tasks: file system interactions, HTML processing, database access, web spidering, typesetting, mail processing, home finance, text outlining, and diagram generation. Along the way it also scatters smaller (but equally invaluable) gems, like the elegant explanation of the difference between 'scope' and 'duration' in Chapter 3, or the careful exploration of how best to return error flags in Chapter 4. It even has practical tips for Perl evangelists. Dominus presents even the most complex ideas in simple, comprehensible ways, but never compromises on the precision and attention to detail for which he is so widely and justly admired. His writing isas alwayslucid, eloquent, witty, and compelling. Aptly named, this truly is a Perl book of a higher order, and essential reading for every serious Perl programmer. Damian Conway, Co-designer of Perl 6
“Higher-Order Perl is a terrific book targeted at the advanced Perl programmer with a significant computer science background. The tone, content, and code make Higher-Order Perl memorable; the knowledge, wisdom, and intuition it provides make it a book any Perl programmer should aim to understand and digest in full.. Teodor Zlatanov, Programmer, Gold Software Systems
The eagerly awaited book by one of the best-known Perl developers summarizing years of innovative practice
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
It is well worth the 40$ I paid in 2013 for the Kindle edition. If the author will ever publish a new and expanded edition I'll get that too.
It is a great book about higher-order programming, which happens to use Perl to illustrate these concepts. Those concepts are directly translatable to other dynamic languages like Python and Ruby.
Simply put, higher order programming is writing programs which write programs. This is an extraordinary powerful technique which can create higher-performing applications with less effort.
Higher Order Perl was originally going to be given some fairly bland name, like "Handbook of Advancted Perl Techniques." This would have been a spot-on (but uninteresting) title. HOP provides the reader with explanation and demonstration of techniques for problem-solving that are often overlooked. The examples are complex and detailed, but not byzantine, and they're built up slowly, piece by piece, so that each line of code's meaning and significance are made clear.
The title "Higher Order Perl" refers to the book's most central technique, functional programming. While many programmers understand how to abstract a specific solution into a more general one, Dominus helps the reader learn to push the envelope, abstracing generic solutions into extremely generalized solutions that can be applied to seemingly-unrelated problems. This is frequently done by the construction of functions that build functions that build functions -- and so on, functions all the way down. Instead of solving the problem in base, earthly Perl, the programmer produces Perl elements of a higher order which, operating in harmony, become all things to all people.Well, I'm hyperbolizing, but I think it would be hard for me to over-emphasize the value of techniques like closures, iterators, and currying. They are, in part, what make Lisp so powerful, and the marriage of Lisp's power and Perl's expressivity is a happy one.As for the writing, it is good. The language is clear and the material is well-presented. One should be cautioned, though, that the book is dense. Dominus is constantly pressing onward, explaining new techniques or new ways to apply already-explained techniques. I found myself reading each page carefully and deliberately, only to turn back to it a few pages later, to be sure that I understood how the new material was relying on the old. It made the book a challenge to read, but it was a thoroughly enjoyable challenge. I never felt so frustrated by a bizarre idea that I gave up or so bored with an over-explained one that I skipped ahead.
Finally, while the techniques that Dominus presents are powerful and advanced, the required knowledge of Perl is not particularly great. Because he clearly explains the key Perl concepts that he uses (especially closures and associated scoping issues), any competent programmer with a working knowledge of Perl should be able to put the ideas in Higher Order Perl to work.
For serious Perl programmers, Higher Order Perl is a must-read book.
This book serves two purposes: on the one hand it helps Perl programmers to move the center of gravity of their solutions further away from Perl, and a bit closer to their problems (quite a bit closer, actually), and on the other it provides a good introduction to Perl for Lisp programmers, and for that it gets an effortless five stars.
I suspect that it is maybe more successful for the second purpose than the first: a relaxed read for someone who knows what a closure is, but for someone who does not know what a closure is, most likely not a relaxed read. Further, anyone who masters the contents may find that his newly refined coding style is somewhat caviary to the general, something that would be a problem in any IT/ORG that I have experienced.
Small quibbles: A Pratt Precedence parser might have fitted the discussion better than the recursive descent parser that is developed, and a deeper discussion of the ways that Perl nevertheless falls short of Lisp, instead of just a passing reference to Norvig's list, would actually have made the arguement stronger - for instance you cannot add a macro facility similar to that of Lisp to Perl, and you cannot add the general continuations available in Scheme (or the limited continuations that Graham, e.g., shows how to add to Common Lisp).
In short, Higher Order Perl makes a good case for the the aesthetics of haiku, but one should understand that (in spite of what my cousin, Leontia Flynn, thinks) it is haiku written with a typewriter, not with a caligrapher's brush.
P.S. One minor repeated irritation for me was the way the author, in spite of everything, insisted on emphasising how input functions should read input files one line at a time. This is a bizarre mindset holdover from the seventies, that is inconsistent with the general argument of the book: if you have a computer with hundreds of megabytes, or gigabytes, of core, then the efficient way to read a text file is not line by line, but in one go.