Slashdot Mirror


Erlang and OTP in Action

RickJWagner writes "Manning has just released a new Erlang title, called Erlang and OTP in Action. For quite some time now, there's been a definitive guide to Erlang-- Joe Armstrong's excellent book Programming Erlang. Well, it's time to make a little extra room on the bookshelf, because the Erlang book-o-sphere has just shifted. There are now two must-have resources for an Erlang programmer." Keep reading for the rest of Rick's review. Erlang and OTP in Action author Martin Logan, Eric Merritt, Richard Carlsson pages 500 publisher Manning Publications rating 9/10 reviewer Rick J Wagner ISBN 1933988789 summary Teaches you to apply Erlang's message passing model for concurrent programming The book is divided into three sections. The first one deals with the basics of Erlang and details about the OTP application framework. Part two shows how to build a production-worthy application in Erlang. The third part of the book is about integration and tuning.

Section 1 has chapters that cover the following: basics of Erlang and OTP, Erlang language fundamentals, writing a TCP-based RPC server, OTP and the supervisor model, and graphical tools to help your development efforts. Language newbies will spend some time here, as Erlang can be a little odd to programmers coming from non-functional environments. (Concepts like recursion are given great coverage, as it should be.) OTP, the Erlang ubber-framework, is explained in detail as well. Section 1 alone would make a decent book on Erlang, but there is much more here.

Section 2 covers building a production application. The example given is a caching application, designed to increase throughput of a web application. In addition to expected topics like logging and an event-framework, the reader is exposed to Erlang's built-in distributed database, Mnesia. Application packaging and deployment considerations are also covered here.

Chapters in section 2 follow a helpful pattern to guide the reader through building an application. First, there is an introduction to some high level concept. Next, it is shown how this new widget can be used to further the needs of our production-worthy caching application. Finally the authors provide code that brings the desired functionality into the ever growing caching application. Erlang code tends to be somewhat dense-- not much code goes a long way-- so much of the latter part of each chapter is explanatory text explaining why you'd want to implement things in the way the authors did. Chapters in this part of the book read like an in-depth tutorial, and that's not a bad thing.

The third section of the book shows how to integrate with external users via HTTP, how to allow programs written in other languages to communicate with your Erlang code, and how to tune your environment. It's notable that Java gets a whole chapter on integration, through JInterface (in comparison, Joe's book offers about 4 lines on this topic. In fairness, that's a much older book, though.)

Throughout the book, simple illustrations are used to demonstrate key concepts. I found these to be extremely helpful, as Erlang in general is quite different than most programming languages. The delta between Erlang application development and other-language development is an order of magnitude different than something like the difference between Java and Ruby or Python and .Net. It's got different characteristics and different concepts. Given these large differences, I really appreciated the illustrations.

The book covers language built-ins like management tools, profilers, etc. (If you've ever used GNU development tools to profile an application, some of these might look a little familiar). The reader is given a lot to think about, and it's scattered over nearly 400 pages. To make a Java analogy, it's like an all-in-one book that teaches the language, the JDK and tools, JEE, and shows how to integrate your enterprise application with external entities. It's ambitious, but the book does a good job in explaining everything. That's why the impressive page-count helps. A skinnier book probably wouldn't be able to pull all that off.

The book is written with easy-to-understand anecdotes that help the reader grasp the finer points of Erlang craftsmanship. You definitely get the impression the authors have written 'real' code, and they offer strong direction to guide the reader through constructing application code. There is a big difference between understanding language syntax and understanding best practices in application construction. Section 2 in particular is loaded with best practices, and this alone makes this book a worthwhile read for Erlang coders writing production applications.

Probably the best thing I can say about this book is that the authors seem to put the advancement of Erlang above all else. To bolster that statement, I'd point out that they give the reader a list of other Erlang books they may wish to read, and they also include several mentions of Joe Armstrong. (Joe is the author of what has been the most popular Erlang book.) In my opinion, the authors can afford this indulgence, as this book is strong enough to merit inclusion on the Erlang programmer's bookshelf.

So who is this book good for? I'd recommend this book to anyone who wants to program in Erlang. It can get beginners off the ground, and will reveal many best-practices to those who already know their way around Erlang.

You can purchase Erlang and OTP in Action from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

11 of 63 comments (clear)

  1. Re:Well, damn by QRDeNameland · · Score: 2

    I was heavily considering writing a book on Erlang. It's a good thing I didn't. God only knows what the market for Erlang publications would be like if there were THREE books to choose from!

    Don't forget Erlang: The Movie!!

    --
    Momentarily, the need for the construction of new light will no longer exist.
  2. Haskell is in a similar position by emj · · Score: 2, Funny

    But apparently the Haskell comunity found a programmer that actually care about Haskell just last week, they are now up to 38 people. I quote:

    People see words like monads and category theory," Briars continued, swatting invisible flies around his head for emphasis, "and their Giving a Shit gene shuts down...

    1. Re:Haskell is in a similar position by TheRaven64 · · Score: 3, Informative

      Neither was Erlang. It was intended as a domain-specific language for writing high-availability telecoms software, which is not allowed any downtime (therefore requires live patching) and must scale to an almost arbitrary degree. It just turned out that these requirements were very similar to a lot of Internet servers.

      And if you've ever written a server in Erlang and then gone back to another language, you'll really miss being able to do pattern matching on binaries.

      --
      I am TheRaven on Soylent News
    2. Re:Haskell is in a similar position by Tetsujin · · Score: 2

      But apparently the Haskell comunity found a programmer that actually care about Haskell just last week, they are now up to 38 people. I quote:

      Blah. Can't feel a lot of respect for any programmer who doesn't cultivate an appreciation for different styles of expression. To me that's a fundamental aspect of improving myself as a programmer.

      Still, the bit about "hired a Perl hacker" was funny. For sure one of the big temptations in thinking too hard about programming is failing to get anything done. :)

      --
      Bow-ties are cool.
  3. Re:Well, damn by whizbang77045 · · Score: 2

    Don't forget "Erlang for Dummies," "Son of Erlang," "Erlang Strikes Back," "The Revenge of Erlang," "House of Erlang," and perhaps most important, "Ghost of Erlang." By the way, what's Erlang?

  4. The new 'IT' gift of 2010 by digitaldc · · Score: 2

    Everyone needs more programming languages in their life this holiday season, and everyone loves Erlang!
    With this book, no one will EVER guess what you gave them, it is truly original.
    Pick up your copy today, makes a great stocking stuffer!

    --
    He who knows best knows how little he knows. - Thomas Jefferson
  5. Re:I'm sure that both Erlang programmers... by TheRaven64 · · Score: 2

    I doubt it. Erlang has pretty good documentation. There's a book that you can download that describes the core language and parts of OTP, and the various OTP modules all have detailed documentation. When I learned Erlang, the idea of buying a book about it never really occurred to me. The language itself is pretty tiny (and sufficiently similar to Prolog that it's easy to pick up). I've written a couple of concurrent server apps with Erlang, although I wouldn't describe myself as an Erlang programmer. Maybe someone who only knows Java would find a book like this useful, but a rounded programmer should find Erlang pretty trivial to learn without one.

    --
    I am TheRaven on Soylent News
  6. Re:How odd by TheRaven64 · · Score: 2

    Erlang's strength is scalability, not performance. If you've got something that's numerically intensive, Erlang is unlikely to give you better performance than C unless you're using a really big cluster or a supercomputer. HiPE does pretty well on floating point if you make sure that the type inference can work correctly, but even then it's not very close to C performance. That said, it's now much easier to call C from Erlang than it used to be, so you can pretty easily write the performance-critical parts in C and all of the distribution stuff in Erlang.

    --
    I am TheRaven on Soylent News
  7. Re:OTP? by TheRaven64 · · Score: 3, Informative

    Open Telecom Platform. Erlang was created for writing telephone switching systems, and so the standard library that it comes with was named with this in mind. It's a bit of a silly name now, because it contains a load of stuff that would be no use for telecoms, but which are pretty useful in other situations.

    --
    I am TheRaven on Soylent News
  8. Erlang x Manning OTP by Peganthyrus · · Score: 2

    What with being more up on the activities of fan-fiction authors than the activities of the Erlang world (it's really a fine slicing of 'vaguely aware of' for both), I keep wanting to read "OTP" as "One True Pairing", and wonder who Erlang is supposed to be having an imagined relationship with.

    I'm not sure I want to google for the real meaning of OTP in this context. I kinda like the mental images.

    --
    egypt urnash minimal art.
  9. Mnesia is unstable on Ubuntu 10.04 by msobkow · · Score: 2

    Just a warning for anyone thinking of picking up Erlang programming. The Mnesia database is unstable under 10.04 -- so unstable that it loses the entire database every few restarts of an application.

    --
    I do not fail; I succeed at finding out what does not work.