SlideShare a Scribd company logo
1 of 35
Erlang
Yann Schwartz @abolibibelot
altnet fr
Thursday, 6 June 13
Intro
Thursday, 6 June 13
• 1986 : première version chez Ericsson
• 1998 : Open Source
Thursday, 6 June 13
Mais pourquoi ?
• Pour un système concurrent et fiable
Thursday, 6 June 13
Composantes
• Erlang - le langage
• ERTS - le runtime
• OTP - libs, patterns et conventions
• BEAM - bytecode etVM
Thursday, 6 June 13
Caractéristiques
• Fonctionnel
• Immutabilité
• Syntaxe héritée de euh Prolog
Thursday, 6 June 13
Erlang, le langage
Thursday, 6 June 13
Types
• Classiques : flottants, entiers
• atomes : ok truc 'bonjour ?'
• Références
• Tuples {ceci, "cela", 17.23}
• Listes [a, b, c, d]
• Records
Thursday, 6 June 13
• Variables capitalisées
• Affectation unique (binding)
• Pattern matching = affectation
Thursday, 6 June 13
> A = 2.
2
> A = 1+1.
2
> A = 0+2.
2
> A = 3.
** exception error: no match of right hand
side value 3
Thursday, 6 June 13
Techniques de base
• Les boucles n’existent pas
• Pattern matching
• Récursivité (TCO)
• Compréhensions de listes, foldl, etc.
Thursday, 6 June 13
Les chaînes
• Erlang aime tellement les chaînes de
caractères qu’il en a trois types
• S = "hello". (liste d’entiers)
• Sb = <<"hello">>. (binary)
• Sio = ["hel",<<"l">>,[[o]]]. (iolist)
Thursday, 6 June 13
Structure
• L’unité de compilation est le module
• Export explicite des fonctions du module
• appel extérieur : module:fonction(...)
Thursday, 6 June 13
Le modèle acteur
Thursday, 6 June 13
• Threads natifs et état partagé : tristesse
• Un lock global : tristesse
• Un seul thread et 10^9 callbacks : tristesse
Thursday, 6 June 13
• Le principe
• Passage de message asynchrone entre
acteurs, sans état partagé
Thursday, 6 June 13
• Un acteur (process en Erlang) c’est :
• Une unité de traitement
• Des points d’entrée
• Une boîte de messages
• Un Stack, un Heap, une GC (par acteur)
• De la supervision...
Thursday, 6 June 13
Les acteurs
• Coût d’un acteur:
• Création : ~ 1 µs
• Overhead mémoire : 1 Ko
Thursday, 6 June 13
Comment ça marche
Pid = spawn(module,fonction,[]).
Pid ! message.
Thursday, 6 June 13
Réception
receive
{stop,_} -> ok;
{hello,_} -> io:format("Hello");
{echo, M} -> io:format("~p~n",[M])
after 1000
-> timeout
end,
Thursday, 6 June 13
Exits, exceptions
• sortie normale
• exit(reason).
• exceptions (throw)
Thursday, 6 June 13
Supervision : links
• Liens entre deux processes
• Transmet erreur ou fin normale
• Un seul lien possible entre deux process
• Par défaut, un process qui meurt tue l’autre
Thursday, 6 June 13
Thursday, 6 June 13
Monitors
• Pareil que link, mais unidirectionnel
• Messages d’exit envoyés au créateur du
monitor
Thursday, 6 June 13
OTP
Thursday, 6 June 13
OTP
• Des conventions
• Des patterns
Thursday, 6 June 13
Thursday, 6 June 13
Principes
• Un superviseur et n workers
• Le superviseur lance et surveille les
workers
• Politique de restart/crash
• N superviseurs : arbre de supervision
Thursday, 6 June 13
Behaviors
• Encapsulation de patterns de
communication
• Callbacks standard à fournir dans son code
• Plus ou moins équivalent à des classes de
base
Thursday, 6 June 13
Behaviors courants
• gen_server : client/serveur classique
(synchrone et asynchrone)
• gen_event : pub/sub
• gen_fsm : automate à états
• supervisor : le superviseur...
Thursday, 6 June 13
Principes d’Erlang
• Chaque unité de traitement a son process
• “Let it crash”
Thursday, 6 June 13
Et aussi...
• Communication inter-VM
• Reload de modules à chaud
• Ports et NIF
Thursday, 6 June 13
Erlang inside
• RabbitMQ
• Première version du chat facebook
• ejabberd
• CouchDB, Riak
• Chef server
• Serveurs de jeu...
Thursday, 6 June 13
Frameworks
• WebMachine
• Cowboy
• riak core
Thursday, 6 June 13
Biblio
• Learn you some Erlang for great good!
( http://learnyousomeerlang.com/ )
• Programming Erlang - Joe Armstrong
• OTP in action - Manning
• Erlang Programming O’Reilly
Thursday, 6 June 13

More Related Content

Similar to Introduction Erlang - altnet fr Juin 2013

Java - notions de bases pour développeur
Java - notions de bases pour développeurJava - notions de bases pour développeur
Java - notions de bases pour développeurJean David Olekhnovitch
 
soft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch
 
EventMachine
EventMachineEventMachine
EventMachineLeTesteur
 
Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012slandelle
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Jean-Michel Doudoux
 
Coding dojos : diffusez les bonnes pratiques de dev
Coding dojos : diffusez les bonnes pratiques de devCoding dojos : diffusez les bonnes pratiques de dev
Coding dojos : diffusez les bonnes pratiques de devPascal LE MERRER
 
ES6, le futur de Javascript
ES6, le futur de JavascriptES6, le futur de Javascript
ES6, le futur de JavascriptOpenska
 
Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Louis Jacomet
 

Similar to Introduction Erlang - altnet fr Juin 2013 (11)

Java - notions de bases pour développeur
Java - notions de bases pour développeurJava - notions de bases pour développeur
Java - notions de bases pour développeur
 
soft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch - Clojure Values
soft-shake.ch - Clojure Values
 
EventMachine
EventMachineEventMachine
EventMachine
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
 
Coding dojos : diffusez les bonnes pratiques de dev
Coding dojos : diffusez les bonnes pratiques de devCoding dojos : diffusez les bonnes pratiques de dev
Coding dojos : diffusez les bonnes pratiques de dev
 
GetText / Rails - FR
GetText / Rails - FRGetText / Rails - FR
GetText / Rails - FR
 
GetText / Rails
GetText / RailsGetText / Rails
GetText / Rails
 
ES6, le futur de Javascript
ES6, le futur de JavascriptES6, le futur de Javascript
ES6, le futur de Javascript
 
Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3
 

Introduction Erlang - altnet fr Juin 2013