Introduction Erlang - altnet fr Juin 2013

  • 406 views
Uploaded on

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

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

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
406
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ErlangYann Schwartz @abolibibelotaltnet frThursday, 6 June 13
  • 2. IntroThursday, 6 June 13
  • 3. • 1986 : première version chez Ericsson• 1998 : Open SourceThursday, 6 June 13
  • 4. Mais pourquoi ?• Pour un système concurrent et fiableThursday, 6 June 13
  • 5. Composantes• Erlang - le langage• ERTS - le runtime• OTP - libs, patterns et conventions• BEAM - bytecode etVMThursday, 6 June 13
  • 6. Caractéristiques• Fonctionnel• Immutabilité• Syntaxe héritée de euh PrologThursday, 6 June 13
  • 7. Erlang, le langageThursday, 6 June 13
  • 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. • Variables capitalisées• Affectation unique (binding)• Pattern matching = affectationThursday, 6 June 13
  • 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. 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 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. Structure• L’unité de compilation est le module• Export explicite des fonctions du module• appel extérieur : module:fonction(...)Thursday, 6 June 13
  • 14. Le modèle acteurThursday, 6 June 13
  • 15. • Threads natifs et état partagé : tristesse• Un lock global : tristesse• Un seul thread et 10^9 callbacks : tristesseThursday, 6 June 13
  • 16. • Le principe• Passage de message asynchrone entreacteurs, 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 KoThursday, 6 June 13
  • 19. Comment ça marchePid = spawn(module,fonction,[]).Pid ! message.Thursday, 6 June 13
  • 20. Réceptionreceive{stop,_} -> ok;{hello,_} -> io:format("Hello");{echo, M} -> io:format("~p~n",[M])after 1000-> timeoutend,Thursday, 6 June 13
  • 21. Exits, exceptions• sortie normale• exit(reason).• exceptions (throw)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’autreThursday, 6 June 13
  • 23. Thursday, 6 June 13
  • 24. Monitors• Pareil que link, mais unidirectionnel• Messages d’exit envoyés au créateur dumonitorThursday, 6 June 13
  • 25. OTPThursday, 6 June 13
  • 26. OTP• Des conventions• Des patternsThursday, 6 June 13
  • 27. Thursday, 6 June 13
  • 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. Behaviors• Encapsulation de patterns decommunication• Callbacks standard à fournir dans son code• Plus ou moins équivalent à des classes debaseThursday, 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
  • 31. Principes d’Erlang• Chaque unité de traitement a son process• “Let it crash”Thursday, 6 June 13
  • 32. Et aussi...• Communication inter-VM• Reload de modules à chaud• Ports et NIFThursday, 6 June 13
  • 33. Erlang inside• RabbitMQ• Première version du chat facebook• ejabberd• CouchDB, Riak• Chef server• Serveurs de jeu...Thursday, 6 June 13
  • 34. Frameworks• WebMachine• Cowboy• riak coreThursday, 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’ReillyThursday, 6 June 13