Poised Solutions Library

Poised Solutions Tech Library

book review
programming erlang

Poised Solutions

Programming Erlang Book Review

Coding

IT Library

Programming Erlang

Programming Erlang

Amazon UKAmazon USA
Programming Erlang
Author:
Joe Armstrong
Publisher:
Pragmatic Bookshelf
Published:
2007
Pages:
515

Programming Erlang is a joy to read. Every now and again a really excellent programming book is released, and Programming Erlang is one of these, they are often made better and often come from the author of the language itself.

Programming Erlang makes Erlang an interesting and fun language to explore, this is type of approach to program language explanation is generally the one that works best when learning a new language and introducing new concepts.

Erlang (Ericsson Language and last name of mathematician Agner Krarup Erlang) was designed to be a telecommunication language. Erlang is useful for both distributed and multi core systems, it is a language that respects the concept of parallel interactions at core, and the network.

I am going to go out on a limb here, and say that Erlang is probably a parrallelnym; a word that has two meanings both of which describe it. Joe may not wish to say if Erlang means Ericsson Language or is named after Agner Erlang, I think it is a dash of both.


Programming Erlang Chapters

Programming Erlang Chapters
  1. Begin
    • Road Map
    • Begin Again
    • Acknowledgments
  2. Getting Started
    • Overview
    • Installing Erlang
    • The Code in this Book
    • Starting the Shell
    • Simple Integer Arithmetic
    • Variables
    • Floating-Point Numbers
    • Atoms
    • Tuples
    • Lists
    • Strings
    • Pattern Matching Again
  3. Sequential Programming
    • Modules
    • Back to Shopping
    • Function with the Sane Name and Different Arity
    • Funs
    • Simple List Processing
    • List Comprehensions
    • Arithmetic Expressions
    • Guards
    • Records
    • case and if Expressions
    • Building List in Natural Order
    • Accumulators
  4. Exceptions
    • Exceptions
    • Raising an Exception
    • try .. catch
    • catch
    • Improving Error Messages
    • Programming Style with try .. catch
    • Catching Every Possible Exception
    • Old and New Style Exception Handling
    • Stack Traces
  5. Advanced Sequential Programming
    • BIFs
    • Binaries
    • The Bit Syntax
    • Miscellaneous Short Topics
  6. Compiling and Running Your Program
    • Starting and Stopping the Erlang Shell
    • Modifying the Development Environment
    • Different Ways to Run Your Program
    • Automating Compilation with Makefiles
    • Command Editing the Erlang Shell
    • Getting Out of Trouble
    • When Things Go Wrong
    • Getting Help
    • Tweaking the Environment
    • The Crash Dump
  7. Concurrency
  8. Concurrent Programming
    • The Concurrency Primitives
    • A Simple Example
    • Client-Server - An Introduction
    • How Long Does it take to Create a Process?
    • Receive with a Timeout
    • Selective Receive
    • Registered Processes
    • How Do We Write a Concurrent Program?
    • A Word About Tail Recursion
    • Spawning with MFAs
    • Problems
  9. Errors in Concurrent Programs
    • Linking Processes
    • An on_exit Handler
    • Remote handling of Errors
    • The Details of Error Handling
    • Error handling Primitives
    • Sets of Linked Processes
    • Monitors
    • A Keep-Alive Process
  10. Distributed Programming
  11. IRC Lite
    • Message Sequence Diagrams
    • The User Interface
    • Client-Side Software
    • Server-Side Software
    • Running the Application
    • The Chat Program Source Code
    • Exercises
  12. Interfacing Techniques
    • Ports
    • Interfacing an External C Program
    • open_port
    • Linked-in Drivers
    • Notes
  13. Programming with Files
    • Organization of the Libraries
    • The Different Ways of Reading a File
    • The Different Ways or Writing to a File
    • Directory Operations
    • Finding Information About a File
    • Copying and Deleting Files
    • Bits and Pieces
    • A Find Utility
  14. Programming with Sockets
    • Using TCP
    • Control Issues
    • Where Did That Connection Come From?
    • Error Handling with Sockets
    • UDP
    • Broadcasting to Multiple Machines
    • A SHOUTcast Server
    • Digging Deeper
  15. ETS and DETS: Large Data Storage Mechanisms
    • The Basic Operations on Tables
    • Types of Table
    • ETS Table Efficiency Considerations
    • Creating an ETS Table
    • Example Programs with ETS
    • DETS
    • What Haven't We Talked About?
    • Code Listings
  16. OTP Introduction
    • The Road to the Generic Server
    • Getting Started with gen_server
    • The gen_server Callback Structure
    • Code and Templates
    • Digging Deeper
  17. Mnesia: the Erlang Database
    • Database Queries
    • Adding and Removing Data in the Database
    • Mnesia Transactions
    • Storing Complex Data in Tables
    • Table Types and Location
    • Creating the Initial Database
    • The Table Viewer
    • Digging Deeper
    • Listings
  18. Making a System with OTP
    • Generic Event Handling
    • The Error Logger
    • Alarm Management
    • The Application Servers
    • The Supervision Tree
    • Starting the System
    • The Application
    • File System Organization
    • The Application Monitor
    • Digging Deeper
    • How Did We Make that Prime?
  19. Multicore Prelude
  20. Programming Multicore CPUs
    • How to Make Programs Run Efficiently on a Multicore CPU
    • Parallelizing Sequential Code
    • Small Messages, Big Computations
    • mapreduce and Indexing Our Disk
    • Growing into the Future
Programming Erlang Appendices
  1. Documenting Our Program
    • Erlang Type Notation
    • Tools That Use Types
  2. Erlang on Microsoft Windows
    • Erlang
    • Fetch and Install MinGW
    • Fetch and Install MSYS
    • Install the MSYS Developer Toolkit (Optional)
    • Emacs
  3. Resources
    • Online Documentation
    • Books and Theses
    • Link Collections
    • Blogs
    • Forums, Online Communities, and Social Sites
    • Conferences
    • Projects
    • Bibliography
  4. A Socket Application
    • An Example
    • How lib_chan Works
    • The lib_chan Code
  5. Miscellaneous
    • Analysis the Profiling Tools
    • Debugging
    • Tracing
    • Dynamic Code Loading
  6. Module and Function Reference
    • Module: application
    • Module: base64
    • Module: beam_lib
    • Module: c
    • Module: calendar
    • Module: code
    • Module: dets
    • Module: dict
    • Module: digraph
    • Module: digraph_utils
    • Module: disk_log
    • Module: epp
    • Module: erl_eval
    • Module: erl_parse
    • Module: erl_pp
    • Module: erl_scan
    • Module: erl_tar
    • Module: erlang
    • Module: error_handler
    • Module: error_logger
    • Module: ets
    • Module: file
    • Module: file_sorter
    • Module: filelilb
    • Module: filename
    • Module: gb_sets
    • Module: gb_trees
    • Module: gen_event
    • Module: gen_fsm
    • Module: gen_sctp
    • Module: gen_server
    • Module: gen_tcp
    • Module: gen_udp
    • Module: global
    • Module: inet
    • Module: init
    • Module: io
    • Module: io_lib
    • Module: lib
    • Module: lists
    • Module: math
    • Module: ms_transform
    • Module: net_adm
    • Module: net_kernel
    • Module: os
    • Module: proc_lib
    • Module: qlc
    • Module: queue
    • Module: random
    • Module: regexp
    • Module: rpc
    • Module: seq_trace
    • Module: sets
    • Module: shell
    • Module: slave
    • Module: sofs
    • Module: string
    • Module: supervisor
    • Module: sys
    • Module: timer
    • Module: win32reg
    • Module: zip
    • Module: zlib
  7. Index

Programming Erlang is not without its niggles, these come to light more readily because the information is so engaging. Some concepts such as quiting the shell; q(). ( init:stop(). ) do not appear until page 110. The order in which information is presented could do with a few tweaks, but the information shown is very comprehensive, Programming Erlang if the order was tweaked would act as a template for other programming language books to follow.

Programming Erlang is a classic, if you are interested in concurrent programming, with a highly functional basis, then Programming Erlang does an excellent job of demystifying it all. The examples are spot on, and most things that you require are shown succinctly, this book deserves to be on most developers' bookshelves.

Functional











Poised Solutions Web Development and Web Design by Poised Solutions IT Practice

Guild of Developers  •  PantheonOS  •  Cyber Security