ErlangYann Schwartz @abolibibelotaltnet frThursday, 6 June 13
IntroThursday, 6 June 13
• 1986 : première version chez Ericsson• 1998 : Open SourceThursday, 6 June 13
Mais pourquoi ?• Pour un système concurrent et fiableThursday, 6 June 13
Composantes• Erlang - le langage• ERTS - le runtime• OTP - libs, patterns et conventions• BEAM - bytecode etVMThursday, 6 ...
Caractéristiques• Fonctionnel• Immutabilité• Syntaxe héritée de euh PrologThursday, 6 June 13
Erlang, le langageThursday, 6 June 13
Types• Classiques : flottants, entiers• atomes : ok truc bonjour ?• Références• Tuples {ceci, "cela", 17.23}• Listes [a, b,...
• Variables capitalisées• Affectation unique (binding)• Pattern matching = affectationThursday, 6 June 13
> A = 2.2> A = 1+1.2> A = 0+2.2> A = 3.** exception error: no match of right handside value 3Thursday, 6 June 13
Techniques de base• Les boucles n’existent pas• Pattern matching• Récursivité (TCO)• Compréhensions de listes, foldl, etc....
Les chaînes• Erlang aime tellement les chaînes decaractères qu’il en a trois types• S = "hello". (liste d’entiers)• Sb = <...
Structure• L’unité de compilation est le module• Export explicite des fonctions du module• appel extérieur : module:foncti...
Le modèle acteurThursday, 6 June 13
• Threads natifs et état partagé : tristesse• Un lock global : tristesse• Un seul thread et 10^9 callbacks : tristesseThur...
• Le principe• Passage de message asynchrone entreacteurs, 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...
Les acteurs• Coût d’un acteur:• Création : ~ 1 µs• Overhead mémoire : 1 KoThursday, 6 June 13
Comment ça marchePid = spawn(module,fonction,[]).Pid ! message.Thursday, 6 June 13
Réceptionreceive{stop,_} -> ok;{hello,_} -> io:format("Hello");{echo, M} -> io:format("~p~n",[M])after 1000-> timeoutend,T...
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• ...
Thursday, 6 June 13
Monitors• Pareil que link, mais unidirectionnel• Messages d’exit envoyés au créateur dumonitorThursday, 6 June 13
OTPThursday, 6 June 13
OTP• Des conventions• Des patternsThursday, 6 June 13
Thursday, 6 June 13
Principes• Un superviseur et n workers• Le superviseur lance et surveille lesworkers• Politique de restart/crash• N superv...
Behaviors• Encapsulation de patterns decommunication• Callbacks standard à fournir dans son code• Plus ou moins équivalent...
Behaviors courants• gen_server : client/serveur classique(synchrone et asynchrone)• gen_event : pub/sub• gen_fsm : automat...
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 NIFThursday, 6 June 13
Erlang inside• RabbitMQ• Première version du chat facebook• ejabberd• CouchDB, Riak• Chef server• Serveurs de jeu...Thursd...
Frameworks• WebMachine• Cowboy• riak coreThursday, 6 June 13
Biblio• Learn you some Erlang for great good!( http://learnyousomeerlang.com/ )• Programming Erlang - Joe Armstrong• OTP i...
Upcoming SlideShare
Loading in...5
×

Introduction Erlang - altnet fr Juin 2013

530

Published on

Introduction à erlang, au modèle acteur et à OTP.

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
530
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introduction Erlang - altnet fr Juin 2013

  1. 1. ErlangYann Schwartz @abolibibelotaltnet frThursday, 6 June 13
  2. 2. IntroThursday, 6 June 13
  3. 3. • 1986 : première version chez Ericsson• 1998 : Open SourceThursday, 6 June 13
  4. 4. Mais pourquoi ?• Pour un système concurrent et fiableThursday, 6 June 13
  5. 5. Composantes• Erlang - le langage• ERTS - le runtime• OTP - libs, patterns et conventions• BEAM - bytecode etVMThursday, 6 June 13
  6. 6. Caractéristiques• Fonctionnel• Immutabilité• Syntaxe héritée de euh PrologThursday, 6 June 13
  7. 7. Erlang, le langageThursday, 6 June 13
  8. 8. Types• Classiques : flottants, entiers• atomes : ok truc bonjour ?• Références• Tuples {ceci, "cela", 17.23}• Listes [a, b, c, d]• RecordsThursday, 6 June 13
  9. 9. • Variables capitalisées• Affectation unique (binding)• Pattern matching = affectationThursday, 6 June 13
  10. 10. > A = 2.2> A = 1+1.2> A = 0+2.2> A = 3.** exception error: no match of right handside value 3Thursday, 6 June 13
  11. 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. 12. Les chaînes• Erlang aime tellement les chaînes decaractè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. 13. Structure• L’unité de compilation est le module• Export explicite des fonctions du module• appel extérieur : module:fonction(...)Thursday, 6 June 13
  14. 14. Le modèle acteurThursday, 6 June 13
  15. 15. • Threads natifs et état partagé : tristesse• Un lock global : tristesse• Un seul thread et 10^9 callbacks : tristesseThursday, 6 June 13
  16. 16. • Le principe• Passage de message asynchrone entreacteurs, sans état partagéThursday, 6 June 13
  17. 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. 18. Les acteurs• Coût d’un acteur:• Création : ~ 1 µs• Overhead mémoire : 1 KoThursday, 6 June 13
  19. 19. Comment ça marchePid = spawn(module,fonction,[]).Pid ! message.Thursday, 6 June 13
  20. 20. Réceptionreceive{stop,_} -> ok;{hello,_} -> io:format("Hello");{echo, M} -> io:format("~p~n",[M])after 1000-> timeoutend,Thursday, 6 June 13
  21. 21. Exits, exceptions• sortie normale• exit(reason).• exceptions (throw)Thursday, 6 June 13
  22. 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’autreThursday, 6 June 13
  23. 23. Thursday, 6 June 13
  24. 24. Monitors• Pareil que link, mais unidirectionnel• Messages d’exit envoyés au créateur dumonitorThursday, 6 June 13
  25. 25. OTPThursday, 6 June 13
  26. 26. OTP• Des conventions• Des patternsThursday, 6 June 13
  27. 27. Thursday, 6 June 13
  28. 28. Principes• Un superviseur et n workers• Le superviseur lance et surveille lesworkers• Politique de restart/crash• N superviseurs : arbre de supervisionThursday, 6 June 13
  29. 29. Behaviors• Encapsulation de patterns decommunication• Callbacks standard à fournir dans son code• Plus ou moins équivalent à des classes debaseThursday, 6 June 13
  30. 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
  31. 31. Principes d’Erlang• Chaque unité de traitement a son process• “Let it crash”Thursday, 6 June 13
  32. 32. Et aussi...• Communication inter-VM• Reload de modules à chaud• Ports et NIFThursday, 6 June 13
  33. 33. Erlang inside• RabbitMQ• Première version du chat facebook• ejabberd• CouchDB, Riak• Chef server• Serveurs de jeu...Thursday, 6 June 13
  34. 34. Frameworks• WebMachine• Cowboy• riak coreThursday, 6 June 13
  35. 35. Biblio• Learn you some Erlang for great good!( http://learnyousomeerlang.com/ )• Programming Erlang - Joe Armstrong• OTP in action - Manning• Erlang Programming O’ReillyThursday, 6 June 13

×