Kurs i

Erlang

Erlang betraktas ibland som ett helt nytt språk, men faktum är att det skapades i början på 90-talet av Ericsson, som ett språk för storskaliga och feltoleranta telecom system. Tråkigt nog, var man på den tiden långt före sin samtid. Emellertid, har detta ändrats i grunden.

Idag är Erlang bland det hetaste man kan ägna sig åt i Internet tidsåldern. Skälet är enkelt – inget annat programspråk uppvisar de möjligheter till att både skala upp och distribuera ut som Erlang har. Det är därför ingen tillfällighet att stora välkända Internet aktörer idag har affärskritiska system implementerade i Erlang.

Denna grundkurs i Erlang ger dig alla insikter och kunskaper du behöver för att gå vidare på egen hand med Erlang programmering. Trots att språket syntaktiskt skiljer sig markant från konventionella programspråk är det enkelt att komma igång.

Detta får du lära dig på kursen
  • Innebörden av funktionell programmering
  • Varför Erlang designades som det gjorde
  • Actors modellen
  • Det eminenta stödet för feltolerant program
Innehåll

Background and Overview

Why Erlang was created and the peculiar history of its evolution
  • The Ellemtel research project
  • Joe Armstrong
  • Erlang properties
  • The bumby road of Erlang

Sequential Programming

All of the basic language, except concurrency which is covered in the next section

Basic Data Types

Scalar datatypes, tuples and lists. Pattern matching. What is a variable is in Erlang.
  • Using the Erlang shell
  • Numbers
  • Atoms
  • Booleans
  • Characters
  • Tuples
  • Lists
  • List operations
  • Strings
  • Variables
  • Pattern matching

Functions & Modules

Function syntax, multi-entry functions. Module syntax and exported functions.
  • Function syntax
  • Functions with multiple netry points
  • Recursive functions
  • Guards and why they are helpful and important
  • Function name
  • Files and erlang modules
  • Compilation
  • Execution of module

BIFs & LIBs

Built in functions overview and discussion of some of the more important modules in the standard library.
  • Erlang documentation
  • Understanding built-in functions
  • BIFs for tuples and lists
  • Type tests
  • Type conversions
  • Formatted printouts

Recursion

Walk-through of several common Erlang idioms for various iterative processing and comparison with equivalent code in Java.
  • What is recursion and why is it so important in Erlang
  • Integer iterations
  • List iterations
  • List reconstruction
  • List construction
  • List deconstruction
  • Understanding tail-recursive functions and why they are so important to master from a performance point of view
  • Writing tail-recursive function with accumulating parameters

Advanced Expressions

Lambda expressions and list comprehensions.
  • Conditional expressions; case and if
  • Bit lists
  • Lambda expressions (aka closures)
  • BIFs using lambdas
  • List comprehension
  • Comprehension filters and mappers
  • Patterns and comprehensions

Records

Pre-processor generated tuples
  • What is a record
  • Instantiation of records
  • Using getters and setters

Concurrent Programming

Erlang is based on current programming, In this section we cover all you need to know to start writing real Erlang programs.

What is a thread?

Quick conceptual overview of concurrency and why it’s important
  • Single vs. multi-threaded execution
  • Current terminology and how it clashes with the Erlang ditto
  • The concurrency model of Erlang

Processes & Messages

How to create and handle Erlang threads (aka processes). Sending and receiving asynchronous messages
  • Creating an Erlang thread (aka process)
  • Related BIFs
  • Looping threads
  • Non-looping threads
  • Sending messages
  • Receiving messages
  • Modelling message types
  • Receive guards

Rendezvous

Implementation of bi-directional synchronous message passing
  • What is rendezvous and its extended form
  • Static thread names and why its important
  • Registering a static name
  • Handling timeouts

Linked Processes

Language support for designing fault-tolerant systems. Links and EXIT signals.
  • The fail-fast and recover paradigm in Erlang
  • Catching EXIT signals
  • Supervison
  • EXIT propagation
  • Exceptions
  • The elaborated try-catch clause of Erlang

Practical Programming

Day to day working with Erlang.

Command-Line Execution

How to compile and run Erlang programs from the command-line and using shell scripts
  • Code path
  • Lib path
  • Environment variables for configuration
  • Compilation from the comnad-line
  • Execution from the command-line and shell scripts
  • Handling input arguments

The Pre-Processor

Overview of the Erlang pre-processor and brief comparison to its C/C++ counter-part
  • What is the pre-processor
  • Macro constants
  • Macro functions
  • Conditionals
  • Include files

Using Files

Opening files for reading and writing
  • Opening files
  • Reading from files
  • Diffent reading idioms
  • Writing to files
  • Formatted I/O
  • File operations
  • File name operations
  • Directory operations
  • Running external (forked) commands

Using Ports

How to fork and communicate with external programs, not written i Erlang
  • Understanding ports
  • Opening a port
  • Sending data to a port
  • Receiving data from a port
  • Obtaining port meta-data

Anti-Patterns

Different ways to bring down the Erlang VM and how to avoid it
  • Unbounded recursion
  • Zombie threads
  • Unreceived messsages
  • Lack of flow-control
  • Understanding the problem os shared mutual state and how you accidentally might introduce it in Erlang

OTP Programming

Brief covarage of OTP

OTP Concepts

Overview of the concepts and objectives

Generic Server

Library support for writing robust Erlang threads

Supervisors

How to design fault tolerant applications using concurrent components managed by supervisors
SnabbFakta
Namn
Erlang
Längd
3 dagar
Nivå
Beginner
Målgrupp
Tekniska programmerare
Förkunskaper
Aktiva kunskaper i att programmera ett vanligt programmeringsspråk, såsom Java eller C++
Teknisk miljö
  • Erlang, senaste versionen
  • En text editor för programeditering
  • Windows aller Ubuntu Linux
Dela
Schemalagd Kurs

Pris

19 000 kr + moms

Vi ger 20% rabatt för tillkommande deltagare från samma företag vid samma kurstillfälle. Läs mer om vår samma-företags-rabatt.

Aktuella KursDatum
StartdatumPlats
2017-10-25 Stockholm City
2017-12-13Stockholm City
Företagsintern Kurs

Om du beställer en företagsintern kurs kommer vi till er och håller kursen i era lokaler. Priset bestäms av vår prismodell och baseras på antalet kursdagar, antalet deltagare, samt i förekommande fall resa och logi.

Prisexempel för NN deltagare

PPP + moms

Antal
Område

Läs mer om vår prismodell och beställningsvillkor.