@dirceu

Mini-Review - Erlang Programming

Erlang Programming is probably the best book I’ve ever read about a programming language, and is worth reading even if you don’t plan to use Erlang.

The exercises in this book are helping me a lot to learn more about functional programming and recursion; also, it’s been a very good experience to use processes and “pure” functions instead of threading and shared-state.

Book contents

  1. Introduction: story, high level overview and cases
  2. Basic Erlang: data types, shell and patterns matching
  3. Sequential Erlang: BIFs, conditionals, recursion, libraries and error handling
  4. Concurrent Programming: process creation and managing, message passing, benchmarks and some theory
  5. Process Design Patterns: client / server, finite state machines, event managers and handlers
  6. Process Error Handling: process linking, exit signals, monitors and supervisors
  7. Records and Macros
  8. Software Upgrade: hot code swapping
  9. More Data Types and High-Level Constructs: anonymous functions, list comprehensions, binaries and references
  10. ETS and Dets Tables
  11. Distributed Programming in Erlang: communication between erlang nodes
  12. OTP Behaviours: introduction to generic servers, supervisors and other applications
  13. Introducing Mnesia
  14. GUI Programming with wxErlang
  15. Socket Programming
  16. Interfacing Erlang with Other Programming Languages
  17. Trace BIFs, the dbg Tracer, and Match Specifications
  18. Types and Documentation
  19. EUnit and Test-Driven Development
  20. Style and Efficiency
  21. Appendix - Using Erlang: installing erlang, editors and other tools

The good

  • The book have a great structure that teaches the language, functional and concurrent / distributed programming with baby steps;
  • It’s very well written and formatted;
  • Exercises! Every programming language book should provide exercises like these - short, well defined and that sometimes challenging.

The bad

  • The EUnit chapter should be in the beginning. It’s boring to compile and test things manually in the shell. Of course, you don’t need to read it in order, but still.