SlideShare une entreprise Scribd logo
1  sur  53
Erlang
République Algérienne démocratique et populaire.
Université Dr. Tahar Moulay – Saïda
Département d’informatique
Matière : DAMSC
Master 2 RISR
2019/2020
Présenté par : Enseigné par :
• Kamar MEDDAH • Mr. khobzaoui
Plan
I. Historique,
II. Caractéristiques,
III. Langage fonctionnel,
IV. Pourquoi Erlang,
V. Types,
VI. Fonctions,
VII. Conditions,
VIII.Modules,
IX. Conclusion.
I. Historique
I. Historique
▪ Langage de programmation créé par Ericsson (acteur de
l’industrie des télécommunication).
▪ Créé en 1986.
▪ Open Source depuis 1998
▪ Conçu pour les autocommutateurs (centres téléphoniques).
▪ Fonctionne sur Unix, Windows et systèmes embarqués.
▪ Utilise un bytecode compact et efficace et/ou du code natif.
II. Caractéristiques
II. Caractéristiques
▪ Langage simple et épuré.
▪ Gestion de la concurrence très léger.
▪ Pas d’états partagé entre les processus.
▪ Passage des messages asynchrones.
▪ Les processus doivent êtres en mesure de s’exécuter tout le
temps.
▪ Adapté pour les applications réparties temps-réel.
II. Caractéristiques
▪ Permet une mise à jour de l'application sans interruption.
▪ Permet une répartition de la charge et une migration de service.
▪ Pas d’états partage pas de variable mutable.
▪ Langage fonctionnel.
▪ Parallélisassions grâce à des processus concurrents.
▪ Faiblement typé (typage dynamique).
▪ Basé sur « pattern matching ».
II. Caractéristiques
▪ Interpréteur interactif.
▪ Outils de gestion graphiques.
▪ Base de données intégrée avec langage de requête.
▪ Permet de booter un nœud sur le réseau.
II. Caractéristiques
▪ Interpréteur interactif.
▪ Outils de gestion graphiques.
▪ Base de données intégrée avec langage de requête.
▪ Permet de booter un nœud sur le réseau.
ii. Variables
▪ Le nom des variables commencent toujours par une majuscule.
▪ Une variable est affectée une seul fois (immutable).
▪ 1> X = 10.
▪ 12
▪ 2> X = 20.
▪ ** exeption error : no match of right hand side value 20
iii. Ponctuation
▪ Le point suivi d’un espace ou d’un saut de ligne : marque la fin
d’une expression ou d’une fonction.
▪ Le point virgule : sépare les clauses (définition d’une fonction).
▪ La virgule : sépare les éléments d’une structure (liste ou tuples) Ou
les arguments d’une fonction.
III. Langage
fonctionnel
i. Qu’est ce qu’un langage fonctionnel
▪ Pas de procédure uniquement des fonctions renvoyant quelque
chose.
▪ Les fonctions sont des objets du langage à part entière et
peuvent être manipulées.
▪ Aucune structure de boucle impérative n'existe.
▪ Récursivité.
i. Qu’est ce qu’un langage fonctionnel
▪ Une variable est affectée une seul fois (immutable).
▪ Pas de limite sur la taille des entiers manipulés.
▪ L'unification permet une expression claire :
▪ fact (0) -> 1;
▪ fact (N) -> N * fact (N-1).
IV.Pourquoi Erlang
IV. Pourquoi Erlang
▪ Lors d'une mise à jour, on souhaite mettre à jour l'application
sans couper la connexion de tous nos utilisateurs (encore plus
critique dans le cas des websockets).
▪ Dans le cadre d'une application de petite taille, on souhaite
partager le même code pour le serveur HTTP et le serveur de
WebSocket (et ne pas avoir 2 codes / 2 langages à maintenir).
IV. Pourquoi Erlang
▪ Lors d'une montée en charge il faut être capable de distribuer
une partie de notre application pour répondre aux besoins sans
affecter le reste de l'application.
▪ Une requête qui crash ou un processus qui échoue (échec d'un
traitement d'image, d'un envoie d'email...) ne doit pas affecter
toute l'application.
▪ Erlang apporte une solution à toutes ces problématiques grâce
à la structure OTP (Open Telecom Platform).
IV. Pourquoi Erlang
IV. Pourquoi Erlang
IV. Pourquoi Erlang
▪ Cette solution consiste à découper notre application sous forme
de processus ultra légers.
▪ Ces processus vont être capable de communiquer ensemble à
travers un système de message interne à la machine virtuelle.
▪ Les processus seront accompagnés d'un superviseur capable
d'agir en cas d'erreur.
▪ Cette structure donne d'ailleurs lieu à une philosophie propre à
Erlang « Let it crash »
IV. Pourquoi Erlang
IV. Pourquoi Erlang
▪ Si notre processus rencontre une erreur qui n'est pas gérée, le
processus crash et un nouveau processus est démarré pour le
remplacer.
▪ Ce processus redémarre dans un état "stable" et l'application
ne se trouve pas affecté.
IV. Pourquoi Erlang
IV. Pourquoi Erlang
IV. Pourquoi Erlang
▪ Cependant, si un processus crash en boucle le problème sera
alors remonté et pourra affecter l'ensemble de votre application.
▪ Si la base de données est inaccessible par exemple, le
processus n'arrivera pas à se reconnecter lors de son
démarrage et au bout d'un certain nombre de redémarrage, fera
planter le superviseur parent.
VI.Types
VI. Types
▪ Les entiers.
▪ Les réels.
▪ Les atomes.
▪ Les tuples.
VI. Types
▪ Les listes.
▪ Les booléens.
▪ Les chaines de caractères.
▪ Les dictionnaires.
i. Entier
▪ Aucune taille le limite sauf celle de la mémoire.
▪ Par défaut, les entier sont exprimes en base 10.
▪ Possibilité de définir un entier dans une base comprise entre 2 et
16 (Base#value).
i. Entier
▪ Exemple:
▪ Dec = 12345.
▪ Bin = 2#001101.
▪ Hex = 16#FFA68B.
ii. Réel
▪ Présentation 64 bits.
▪ Un numérique est un réel s’il contient un point.
▪ Exemple:
▪ X = 1.2345.
▪ Bin = -2.67e+5.
iii. Atome
▪ Ce n’est pas une constante numérique.
▪ Un atome est un littéral, une constante dont la valeur est le nom.
▪ Un atome commence par une lettre minuscules suivie par des lettre
minuscules ou majuscules ou des chiffre ou ‘_’ ou ‘@’.
▪ Il peut aussi être une suite de caractères délimitée par des simple
quotes.
iii. Atome
▪ Exemple:
▪ A = ok.
▪ B = exemple@test.com.
▪ C = ‘salut tout le monde’.
iv. Tuples
▪ Un ensemble de taille fixe d’éléments.
▪ Exemple:
▪ Tup = {1,2, ’’salut’’,nom}.
v. Listes
▪ Un ensemble de taille variable d’éléments.
▪ Une liste chainer.
▪ Exemple:
▪ Arr = [1,2, ’’salut’’,nom].
vi. Booléen
▪ Les booléens sont un cas particulier d’atomes
▪ Exemple:
▪ T = true.
▪ F = false.
vii. Chaines de caractères
▪ Une chaine de caractères est une liste d’entiers compris entre 0 et 255
(code ASCII).
▪ Délimitée par double quotes.
▪ Possibilité de définition directement sous forme d’une liste.
▪ Support de l'Unicode.
▪ Exemple:
▪ Str = ‘’Salut’‘.
▪ Str2 = [83, 97, 108, 117, 116].
viii. Dictionnaire
▪ Un dictionnaire est représenté par une liste de tuples a deux
éléments.
▪ Exemple:
▪ Dict = [{a, 1}, {b, 2}].
VII.Fonctions
VII. Fonction
▪ Une fonction possède :
▪ une partie gauche (clause) qui sera unifiée alors de l'appel.
▪ une partie droite (corps).
▪ Une déclaration se termine par un . (point).
▪ une clause se termine par un ;(point-virgule) si d'autres clauses
suivent.
VII. Fonction
▪ Exemple:
▪ fact (0) -> 1;
▪ fact (N) -> N * fact (N-1).
VIII.Conditions
i. Guard
▪ Les gardes permettent de tester les paramètres.
▪ Une garde ne peut contenir que des opérations simples.
I. Guard
▪ Exemple:
▪ -module(test).
▪ -export([display/1,start/0]).
▪ display(N) when N > 10 -> io:fwrite("greater then 10");
▪ display(N) when N < 10 -> io:fwrite("Less than 10").
▪ start() -> display(11).
ii. If statement
▪ Les ‘if’ est une séquence des conditions.
▪ Des que une condition est vérifiée on applique le membre droit.
▪ La séquence termine souvent par true.
ii. If statement
▪ Exemple:
▪ If
▪ X>Y -> ’’X est plus grand que Y’’;
▪ true -> ‘’Y est plus grand que X’’
▪ end.
IX.Modules
IX. Modules
▪ Un module est déclaré par la construction -module (name).
▪ Déclare les fonctions exportées avec leur arité : -export([f/1,g/2]).
▪ Seules les fonctions exportées peuvent être appelées de l'extérieur
du module.
IX. Modules
▪ Exemple:
▪ -module (math).
▪ -export ([fact/1]).
▪ fact (0) -> 1;
▪ fact (N) -> N * fact (N-1).
X. Conclusion
X. Conclusion
• Erlang est utilisée pour construire des application temps réel
massivement évolutifs avec des exigences de haute disponibilité.
• Erlang est utiliser pour créer de nombreux technologie populaire
notamment RabbitMQ et couchDB.
• Erlang est un langage un peu trop "simple" qui entraine beaucoup
de boiler plate et de répétition, ce qui peut le rendre frustrant par
moment.
• Elixir un langages basé sur erlang permet une meilleur
organisation du code et offre une série de module afin de travailler
plus simplement avec les outils fournis par erlang.
Références
• http://erlang.org/doc.
• https://info.usherbrooke.ca/GabrielGirard/cours/ift-630-
processus-concurrents-et-parallelisme/projet/exemples-
danciens-projets/Hiver2009/erlang-un-langage-de-
programmation-parallele.
• Programmer en Erlang De Francesco Cesarini, Simon
Thompson.
• https://www.grafikart.fr/tutoriels/presentation-elixir-896.
• https://erlangbyexample.org/
Merci pour votre
attention

Contenu connexe

Similaire à Erlang

intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPfrwebhelp
 
Taleb formation-talend-open-studio-data-integration-les-bases-et-perfectionne...
Taleb formation-talend-open-studio-data-integration-les-bases-et-perfectionne...Taleb formation-talend-open-studio-data-integration-les-bases-et-perfectionne...
Taleb formation-talend-open-studio-data-integration-les-bases-et-perfectionne...CERTyou Formation
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Loic Yon
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winformsChristophe Zome
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#Youness Boukouchi
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelleAssociation Agile Nantes
 
Guide scilab
Guide scilabGuide scilab
Guide scilabzan
 
Cours java avance avancé thread arraylist
Cours java avance avancé thread arraylistCours java avance avancé thread arraylist
Cours java avance avancé thread arraylistHoussem Hamrouni
 
JavaLesBasespourles debutantset pour vous.pdf
JavaLesBasespourles debutantset pour vous.pdfJavaLesBasespourles debutantset pour vous.pdf
JavaLesBasespourles debutantset pour vous.pdfhindguendouz2000
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tFrancois Ostyn
 
Présentation LMAX / Disruptor
Présentation LMAX / DisruptorPrésentation LMAX / Disruptor
Présentation LMAX / DisruptorSOAT
 
Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Mamadou Oury Ba
 

Similaire à Erlang (20)

C# langage & syntaxe
C#   langage & syntaxeC#   langage & syntaxe
C# langage & syntaxe
 
intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APP
 
Taleb formation-talend-open-studio-data-integration-les-bases-et-perfectionne...
Taleb formation-talend-open-studio-data-integration-les-bases-et-perfectionne...Taleb formation-talend-open-studio-data-integration-les-bases-et-perfectionne...
Taleb formation-talend-open-studio-data-integration-les-bases-et-perfectionne...
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winforms
 
Introduction a Java
Introduction a JavaIntroduction a Java
Introduction a Java
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelle
 
Language java
Language javaLanguage java
Language java
 
Guide scilab
Guide scilabGuide scilab
Guide scilab
 
Cours java avance avancé thread arraylist
Cours java avance avancé thread arraylistCours java avance avancé thread arraylist
Cours java avance avancé thread arraylist
 
cours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhouminecours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhoumine
 
JavaLesBasespourles debutantset pour vous.pdf
JavaLesBasespourles debutantset pour vous.pdfJavaLesBasespourles debutantset pour vous.pdf
JavaLesBasespourles debutantset pour vous.pdf
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@t
 
Présentation LMAX / Disruptor
Présentation LMAX / DisruptorPrésentation LMAX / Disruptor
Présentation LMAX / Disruptor
 
Introduction Kotlin
Introduction KotlinIntroduction Kotlin
Introduction Kotlin
 
Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5
 
Cours java
Cours javaCours java
Cours java
 
Algorithme chap 2
Algorithme chap 2Algorithme chap 2
Algorithme chap 2
 
Algorithme chap 3
Algorithme chap 3Algorithme chap 3
Algorithme chap 3
 

Plus de kamar MEDDAH

Algorithme Colonie de fourmis
Algorithme Colonie de fourmisAlgorithme Colonie de fourmis
Algorithme Colonie de fourmiskamar MEDDAH
 
Random number generator
Random number generatorRandom number generator
Random number generatorkamar MEDDAH
 
Etude comparative entre les grilles, cloud et p2p
Etude comparative entre les grilles, cloud et p2pEtude comparative entre les grilles, cloud et p2p
Etude comparative entre les grilles, cloud et p2pkamar MEDDAH
 
Base de données distribuée
Base de données distribuéeBase de données distribuée
Base de données distribuéekamar MEDDAH
 
Les Base de Données NOSQL
Les Base de Données NOSQLLes Base de Données NOSQL
Les Base de Données NOSQLkamar MEDDAH
 
Porter stemming algorithm
Porter stemming algorithmPorter stemming algorithm
Porter stemming algorithmkamar MEDDAH
 

Plus de kamar MEDDAH (13)

Intro to web dev
Intro to web devIntro to web dev
Intro to web dev
 
Algorithme Colonie de fourmis
Algorithme Colonie de fourmisAlgorithme Colonie de fourmis
Algorithme Colonie de fourmis
 
Random number generator
Random number generatorRandom number generator
Random number generator
 
Routage rip
Routage ripRoutage rip
Routage rip
 
Etude comparative entre les grilles, cloud et p2p
Etude comparative entre les grilles, cloud et p2pEtude comparative entre les grilles, cloud et p2p
Etude comparative entre les grilles, cloud et p2p
 
Base de données distribuée
Base de données distribuéeBase de données distribuée
Base de données distribuée
 
Branch and bound
Branch and boundBranch and bound
Branch and bound
 
Active directory
Active directoryActive directory
Active directory
 
Wwan
WwanWwan
Wwan
 
Hadoop
HadoopHadoop
Hadoop
 
Les Base de Données NOSQL
Les Base de Données NOSQLLes Base de Données NOSQL
Les Base de Données NOSQL
 
Porter stemming algorithm
Porter stemming algorithmPorter stemming algorithm
Porter stemming algorithm
 
Javascript
JavascriptJavascript
Javascript
 

Erlang

  • 1. Erlang République Algérienne démocratique et populaire. Université Dr. Tahar Moulay – Saïda Département d’informatique Matière : DAMSC Master 2 RISR 2019/2020 Présenté par : Enseigné par : • Kamar MEDDAH • Mr. khobzaoui
  • 2. Plan I. Historique, II. Caractéristiques, III. Langage fonctionnel, IV. Pourquoi Erlang, V. Types, VI. Fonctions, VII. Conditions, VIII.Modules, IX. Conclusion.
  • 4. I. Historique ▪ Langage de programmation créé par Ericsson (acteur de l’industrie des télécommunication). ▪ Créé en 1986. ▪ Open Source depuis 1998 ▪ Conçu pour les autocommutateurs (centres téléphoniques). ▪ Fonctionne sur Unix, Windows et systèmes embarqués. ▪ Utilise un bytecode compact et efficace et/ou du code natif.
  • 6. II. Caractéristiques ▪ Langage simple et épuré. ▪ Gestion de la concurrence très léger. ▪ Pas d’états partagé entre les processus. ▪ Passage des messages asynchrones. ▪ Les processus doivent êtres en mesure de s’exécuter tout le temps. ▪ Adapté pour les applications réparties temps-réel.
  • 7. II. Caractéristiques ▪ Permet une mise à jour de l'application sans interruption. ▪ Permet une répartition de la charge et une migration de service. ▪ Pas d’états partage pas de variable mutable. ▪ Langage fonctionnel. ▪ Parallélisassions grâce à des processus concurrents. ▪ Faiblement typé (typage dynamique). ▪ Basé sur « pattern matching ».
  • 8. II. Caractéristiques ▪ Interpréteur interactif. ▪ Outils de gestion graphiques. ▪ Base de données intégrée avec langage de requête. ▪ Permet de booter un nœud sur le réseau.
  • 9. II. Caractéristiques ▪ Interpréteur interactif. ▪ Outils de gestion graphiques. ▪ Base de données intégrée avec langage de requête. ▪ Permet de booter un nœud sur le réseau.
  • 10. ii. Variables ▪ Le nom des variables commencent toujours par une majuscule. ▪ Une variable est affectée une seul fois (immutable). ▪ 1> X = 10. ▪ 12 ▪ 2> X = 20. ▪ ** exeption error : no match of right hand side value 20
  • 11. iii. Ponctuation ▪ Le point suivi d’un espace ou d’un saut de ligne : marque la fin d’une expression ou d’une fonction. ▪ Le point virgule : sépare les clauses (définition d’une fonction). ▪ La virgule : sépare les éléments d’une structure (liste ou tuples) Ou les arguments d’une fonction.
  • 13. i. Qu’est ce qu’un langage fonctionnel ▪ Pas de procédure uniquement des fonctions renvoyant quelque chose. ▪ Les fonctions sont des objets du langage à part entière et peuvent être manipulées. ▪ Aucune structure de boucle impérative n'existe. ▪ Récursivité.
  • 14. i. Qu’est ce qu’un langage fonctionnel ▪ Une variable est affectée une seul fois (immutable). ▪ Pas de limite sur la taille des entiers manipulés. ▪ L'unification permet une expression claire : ▪ fact (0) -> 1; ▪ fact (N) -> N * fact (N-1).
  • 16. IV. Pourquoi Erlang ▪ Lors d'une mise à jour, on souhaite mettre à jour l'application sans couper la connexion de tous nos utilisateurs (encore plus critique dans le cas des websockets). ▪ Dans le cadre d'une application de petite taille, on souhaite partager le même code pour le serveur HTTP et le serveur de WebSocket (et ne pas avoir 2 codes / 2 langages à maintenir).
  • 17. IV. Pourquoi Erlang ▪ Lors d'une montée en charge il faut être capable de distribuer une partie de notre application pour répondre aux besoins sans affecter le reste de l'application. ▪ Une requête qui crash ou un processus qui échoue (échec d'un traitement d'image, d'un envoie d'email...) ne doit pas affecter toute l'application. ▪ Erlang apporte une solution à toutes ces problématiques grâce à la structure OTP (Open Telecom Platform).
  • 20. IV. Pourquoi Erlang ▪ Cette solution consiste à découper notre application sous forme de processus ultra légers. ▪ Ces processus vont être capable de communiquer ensemble à travers un système de message interne à la machine virtuelle. ▪ Les processus seront accompagnés d'un superviseur capable d'agir en cas d'erreur. ▪ Cette structure donne d'ailleurs lieu à une philosophie propre à Erlang « Let it crash »
  • 22. IV. Pourquoi Erlang ▪ Si notre processus rencontre une erreur qui n'est pas gérée, le processus crash et un nouveau processus est démarré pour le remplacer. ▪ Ce processus redémarre dans un état "stable" et l'application ne se trouve pas affecté.
  • 25. IV. Pourquoi Erlang ▪ Cependant, si un processus crash en boucle le problème sera alors remonté et pourra affecter l'ensemble de votre application. ▪ Si la base de données est inaccessible par exemple, le processus n'arrivera pas à se reconnecter lors de son démarrage et au bout d'un certain nombre de redémarrage, fera planter le superviseur parent.
  • 27. VI. Types ▪ Les entiers. ▪ Les réels. ▪ Les atomes. ▪ Les tuples.
  • 28. VI. Types ▪ Les listes. ▪ Les booléens. ▪ Les chaines de caractères. ▪ Les dictionnaires.
  • 29. i. Entier ▪ Aucune taille le limite sauf celle de la mémoire. ▪ Par défaut, les entier sont exprimes en base 10. ▪ Possibilité de définir un entier dans une base comprise entre 2 et 16 (Base#value).
  • 30. i. Entier ▪ Exemple: ▪ Dec = 12345. ▪ Bin = 2#001101. ▪ Hex = 16#FFA68B.
  • 31. ii. Réel ▪ Présentation 64 bits. ▪ Un numérique est un réel s’il contient un point. ▪ Exemple: ▪ X = 1.2345. ▪ Bin = -2.67e+5.
  • 32. iii. Atome ▪ Ce n’est pas une constante numérique. ▪ Un atome est un littéral, une constante dont la valeur est le nom. ▪ Un atome commence par une lettre minuscules suivie par des lettre minuscules ou majuscules ou des chiffre ou ‘_’ ou ‘@’. ▪ Il peut aussi être une suite de caractères délimitée par des simple quotes.
  • 33. iii. Atome ▪ Exemple: ▪ A = ok. ▪ B = exemple@test.com. ▪ C = ‘salut tout le monde’.
  • 34. iv. Tuples ▪ Un ensemble de taille fixe d’éléments. ▪ Exemple: ▪ Tup = {1,2, ’’salut’’,nom}.
  • 35. v. Listes ▪ Un ensemble de taille variable d’éléments. ▪ Une liste chainer. ▪ Exemple: ▪ Arr = [1,2, ’’salut’’,nom].
  • 36. vi. Booléen ▪ Les booléens sont un cas particulier d’atomes ▪ Exemple: ▪ T = true. ▪ F = false.
  • 37. vii. Chaines de caractères ▪ Une chaine de caractères est une liste d’entiers compris entre 0 et 255 (code ASCII). ▪ Délimitée par double quotes. ▪ Possibilité de définition directement sous forme d’une liste. ▪ Support de l'Unicode. ▪ Exemple: ▪ Str = ‘’Salut’‘. ▪ Str2 = [83, 97, 108, 117, 116].
  • 38. viii. Dictionnaire ▪ Un dictionnaire est représenté par une liste de tuples a deux éléments. ▪ Exemple: ▪ Dict = [{a, 1}, {b, 2}].
  • 40. VII. Fonction ▪ Une fonction possède : ▪ une partie gauche (clause) qui sera unifiée alors de l'appel. ▪ une partie droite (corps). ▪ Une déclaration se termine par un . (point). ▪ une clause se termine par un ;(point-virgule) si d'autres clauses suivent.
  • 41. VII. Fonction ▪ Exemple: ▪ fact (0) -> 1; ▪ fact (N) -> N * fact (N-1).
  • 43. i. Guard ▪ Les gardes permettent de tester les paramètres. ▪ Une garde ne peut contenir que des opérations simples.
  • 44. I. Guard ▪ Exemple: ▪ -module(test). ▪ -export([display/1,start/0]). ▪ display(N) when N > 10 -> io:fwrite("greater then 10"); ▪ display(N) when N < 10 -> io:fwrite("Less than 10"). ▪ start() -> display(11).
  • 45. ii. If statement ▪ Les ‘if’ est une séquence des conditions. ▪ Des que une condition est vérifiée on applique le membre droit. ▪ La séquence termine souvent par true.
  • 46. ii. If statement ▪ Exemple: ▪ If ▪ X>Y -> ’’X est plus grand que Y’’; ▪ true -> ‘’Y est plus grand que X’’ ▪ end.
  • 48. IX. Modules ▪ Un module est déclaré par la construction -module (name). ▪ Déclare les fonctions exportées avec leur arité : -export([f/1,g/2]). ▪ Seules les fonctions exportées peuvent être appelées de l'extérieur du module.
  • 49. IX. Modules ▪ Exemple: ▪ -module (math). ▪ -export ([fact/1]). ▪ fact (0) -> 1; ▪ fact (N) -> N * fact (N-1).
  • 51. X. Conclusion • Erlang est utilisée pour construire des application temps réel massivement évolutifs avec des exigences de haute disponibilité. • Erlang est utiliser pour créer de nombreux technologie populaire notamment RabbitMQ et couchDB. • Erlang est un langage un peu trop "simple" qui entraine beaucoup de boiler plate et de répétition, ce qui peut le rendre frustrant par moment. • Elixir un langages basé sur erlang permet une meilleur organisation du code et offre une série de module afin de travailler plus simplement avec les outils fournis par erlang.
  • 52. Références • http://erlang.org/doc. • https://info.usherbrooke.ca/GabrielGirard/cours/ift-630- processus-concurrents-et-parallelisme/projet/exemples- danciens-projets/Hiver2009/erlang-un-langage-de- programmation-parallele. • Programmer en Erlang De Francesco Cesarini, Simon Thompson. • https://www.grafikart.fr/tutoriels/presentation-elixir-896. • https://erlangbyexample.org/