• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introduction Erlang - altnet fr Juin 2013
 

Introduction Erlang - altnet fr Juin 2013

on

  • 616 views

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

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

Statistics

Views

Total Views
616
Views on SlideShare
608
Embed Views
8

Actions

Likes
1
Downloads
0
Comments
0

2 Embeds 8

https://twitter.com 5
http://instacurate.com 3

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introduction Erlang - altnet fr Juin 2013 Introduction Erlang - altnet fr Juin 2013 Presentation Transcript

    • 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 June 13
    • 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, c, d]• RecordsThursday, 6 June 13
    • • 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.Thursday, 6 June 13
    • 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
    • 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 acteurThursday, 6 June 13
    • • Threads natifs et état partagé : tristesse• Un lock global : tristesse• Un seul thread et 10^9 callbacks : tristesseThursday, 6 June 13
    • • 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 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 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,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’autreThursday, 6 June 13
    • 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 superviseurs : arbre de supervisionThursday, 6 June 13
    • Behaviors• Encapsulation de patterns decommunication• Callbacks standard à fournir dans son code• Plus ou moins équivalent à des classes debaseThursday, 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 NIFThursday, 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 coreThursday, 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’ReillyThursday, 6 June 13