Erlang by Example

Target Audience: Software Developers,

 

Prerequisites: Good programming skills in another language

Objectives:

  • Determine when Erlang language is an appropriate solution to your project requirements
  • Describe the 5 key attributes of an Erlang implementation
  • Describe your requirements in terms that speed up implementation
  • Lead a prototype study using Erlang
  • Structure and steer an Erlang prototype project

 

Duration: Five days

The course package contains all the Erlang basics such as sequential and concurrent programming, along side error handling and the latest language extensions. The Erlang development environment is presented, with a special emphasis on the Erlang mode for Emacs alongside the major debugging tools. Good and bad programming practices are discussed, as are tools used to profile the system. OTP design principles and concepts are sneaked into the material as well as the exercises.

Course Contents


The Erlang By Example package is a five day introductory course developed for software engineers. The package consists of the four day course "Core Erlang: Sequential and Concurrent Programming with Erlang" and a one day course "Erlang Whizz: Advanced Datatypes and High Level Constructs in Erlang". Erlang By Example's objectives is to give participants the knowledge to read, write and structure Erlang programs, providing all prerequisites to attend the OTP course.

The course package contains all the Erlang basics such as sequential and concurrent programming, along side error handling and the latest language extensions. The Erlang development environment is presented, with a special emphasis on the Erlang mode for Emacs alongside the major debugging tools. Good and bad programming practices are discussed, as are tools used to profile the system. OTP design principles and concepts are sneaked into the material as well as the exercises.

Course Contents



Introduction

Introduction to the software needs of telecom control systems, followed by a history of Erlang, its features, and product and research examples within and outside Ericsson.

Basic Erlang

This section deals with Erlang data types and pattern matching. Functions, modules, and BIFs are discussed. Before the exercises, the Erlang shell, useful shell commands as well as Emacs and its Erlang mode are introduced.

Sequential Programming

The Sequential Programming section comprehends conditional evaluations, guards and scope of variables. It then introduces recursion, with a special emphasis on different recursive patterns, tail recursion, and space saving optimizations. Before the exercises, libraries and their manual pages, possible run time errors and the debugger are demonstrated.

Concurrent Programming

This section describes the creation of processes and their life span. It looks at sending and receiving messages, selective reception, and passing data in the messages. It continues with the various uses of time outs and registering processes, and terminates by showing the generic process code structure. Before the exercises, a demonstration of the Process Manager tool is given.

Process Design Patterns

This section introduces the concept of process patterns, preparing the students for the OTP behaviours. It gives a detailed example of a client server system, looks at finite state machines and event handlers. Synchronous versus asynchronous message passing is discussed.

Process Error Handling

This section introduces the simple but powerful error handling mechanisms in processes. It looks at process links, exit signals and their propagation semantics. How robust systems are built in Erlang are discussed, and an example from the Process Design Patterns section is re-implemented, making it robust.

Code Updating

The section introduces software upgrade during run time. The error handler, the code server, and code search paths are covered, as is the .erlang file.

Records and Funs

The syntax and semantics of records is introduced, with a special emphasis on pattern matching. Funs are covered, as are higher order functions. Plenty of examples are given for both constructs.

ETS tables

An introduction to the Erlang Term Storage is given, together with its different table options. Examples on when to use and not to use ETS tables are covered. A demonstration of the table visualizer is provided.

Distributed Programming

An introduction to the requirements of distributed systems is given, and how Erlang is able to fill these requirements. The distribution syntax and semantics are covered, followed by the BIFs and the net kernel.

Advanced Constructs

List comprehensions and their usage are explained. References are discussed. This is followed by Binaries, and the Bit syntax, where pattern matching can be applied directly to incoming structures. Lastly, bit wise and logical operators are described. This section also covers Macros, with examples on how they can be used for debugging purposes.

Ports and Sockets

An introduction of the mechanisms used to make Erlang more open are taken up in this section. Ports, for external communication within the same machine, and Sockets, for communication on IP networks are discussed. The difference between TCP and UDP is described.

Style and Efficiency

This section gives an introduction to writing efficient Erlang Programs. The efficiency section describes how binaries can be used to handle large amounts of data which have to be sent between processes, how tail recursion can prevent bursts of memory usage, as well as other simple optimisations based on the implementation of the virtual machine and its garbage collector. It then goes ahead with suggestions and guidelines on how to keep the code neat and readable and terminates with a few slides on coding strategy.