10. > 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
11. Techniques de base
• Les boucles n’existent pas
• Pattern matching
• Récursivité (TCO)
• Compréhensions de listes, foldl, etc.
Thursday, 6 June 13
12. 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
13. Structure
• L’unité de compilation est le module
• Export explicite des fonctions du module
• appel extérieur : module:fonction(...)
Thursday, 6 June 13
15. • Threads natifs et état partagé : tristesse
• Un lock global : tristesse
• Un seul thread et 10^9 callbacks : tristesse
Thursday, 6 June 13
16. • Le principe
• Passage de message asynchrone entre
acteurs, sans état partagé
Thursday, 6 June 13
17. • 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
18. Les acteurs
• Coût d’un acteur:
• Création : ~ 1 µs
• Overhead mémoire : 1 Ko
Thursday, 6 June 13
19. Comment ça marche
Pid = spawn(module,fonction,[]).
Pid ! message.
Thursday, 6 June 13
22. 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
28. 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
29. Behaviors
• Encapsulation de patterns de
communication
• Callbacks standard à fournir dans son code
• Plus ou moins équivalent à des classes de
base
Thursday, 6 June 13
30. 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
35. 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