Spotlight customer reviews:
|
Customer Rating:      Summary: Necessary book, but needs a 2nd edition Comment: I've been working through this book and am very glad for it. I'm not sure how else I'd efficiently have gotten up to speed on Erlang.
The book does need lots of minor work, though - it still feels like a beta piece of software. There are examples / explanations that make use of not-yet (or never) explained functions/modules. The appendix describing some of Erlang's modules only claims that the set of documented modules is incomplete, but doesn't mention that the set of functions within some modules is also incomplete. Etc.
Another issue is the license of the code examples. The author shows some example code for how to do certain things, such as a distributed map function (pmap). After reading the book, it's hard (at least for a newbie) to imagine a different solution than the author's. But if you go to the website containing the example code from the book, you find a pretty restrictive license on the example code. So this leaves the reader in a difficult position: the book only shows you one way to do something like pmap, and the author has a license on that code that makes it unusable to many readers. This is more than a little frustrating.
Finally, the index is very incomplete.
If you're new to Erlang you still want this book. But it would really be a good thing for the author to gather criticism (if he hasn't already) and go a second round.
Customer Rating:      Summary: An excellent book Comment: This book was recommended by a colleague and I was hesitant at first, but it really is an excellent read.
After flipping through the first few chapters, taking in the examples and absorbing what it was spelling out, it really altered the way that I fundamentally look at software modeling. Joe Armstrong's style of teaching by example and breaking things down into the smallest possible space makes this book worthwhile.
Customer Rating:      Summary: Are you already familiar with functional programming? Comment: Erlang really appears to be an interesting language, and the author's enthusiasm for the subject shows - which is good. It helped me to keep going, when at times the code was a little hard to follow.
The book does a good job of introducing the language. In particular later chapters give emphasis to the topics of concurrency through multiple processes, multi-cores and distributed programs. All very timely subjects for a world that is connected to the Internet, and where even laptops have multi-core processors
I gave the book a 4 star rating because I feel the author somewhat forgot who his audience is.
On page 5 he starts out with a description that fit me almost perfectly, and probably many other readers: "Once upon a time a programmer came across a book describing a funny programming language. It had an unfamiliar syntax [...] it wasn't even object-oriented. The programs were, well, different....Not only were the programs different, but the whole approach to programming was different."
After reading the book I don't feel like the "Erlang Master" that the road map described (pg 9). While the syntax is now familiar, I still look at the Erlang code and it feels foreign. I still have to "decipher" the code instead of read it.
I would have liked the book to more fully address the items from the "Once upon a time" paragraphs. Being that "the whole approach to programming" is different than the OO that many readers are used to, I would have liked to have seen a chapter (or three) on how to best get into that mode of thinking.
I do think the book is a good jumping off point. It gives you more than enough to get started.
However, if you are unfamiliar with languages where functions accept functions which also accept functions as parameters and return another function as a result, you may end up feeling (as I did) that you only have half the puzzle.
Customer Rating:      Summary: Very interesting topic for leading edge types Comment: I got interested in learning more about Erlang when I discovered that some of the Amazon web services use it underneath (SimpleDB). And I consider these services to be very well designed.
I enjoyed the book as it gave a good overview of the concepts and capabilities of Erlang. But now I'm wanting for more -- more depth on concurrency and fault tolerance; more complete real world examples; how to use for building web apps; and of course how to use with Amazon web services.
So what this book needs now is a sequel!
Customer Rating:      Summary: A Practical and Philosophical Introduction to Erlang Comment: "Programming Erlang" numbers among the classic programming books which not only show you how to program in a language but also teach why you would want to do so. Joe Armstrong communicates the philosophy behind Erlang, which excels at building concurrent, distributed, and fault-tolerant software. He writes with a light touch, which makes learning Erlang's somewhat unusual syntax more enjoyable.
The first few chapters provide an introduction to "sequential programming" in Erlang. Armstrong covers basic language features, simultaneously providing an introduction to functional programming concepts. He shows how to use functional ideas like pattern matching, higher-order functions, and tail recursion to write powerful and compact Erlang modules.
Armstrong then dedicates several chapters to "concurrent programming." Here is where Erlang really comes into its own. He demonstrates how easy it is to create parallel processes, which can also be made to communicate between networked machines or across the Internet. The trick is that these processes do not communicate through shared memory, but by passing messages asynchronously. These chapters also discuss error handling, showing basic patterns for monitoring processes and for guaranteeing that processes are kept-alive.
The final chapters deal with a range of subjects, including socket programming and how to optimize Erlang for use on multicore processors. The book also includes the code for building an IRC-like chat server, a SHOUTcast server, and a text-indexing engine which implements the MapReduce algorithm.
My goal in reading the book was not so much to start programming in Erlang, but to expand my understanding of functional programming. I came away with a good grasp of what Armstrong calls "concurrency-oriented programming" and why this style of programming is likely to expand in the coming years. While I may not be using Erlang in any projects in the near future, I recommend "Reading Erlang" to anyone who enjoys thinking 'outside the [imperative programming] box.'
|
|
|