mardi 15 septembre 2009

Bienvenue chez Erlang


J'ai attrapé des migraines en essayant de comprendre les principes de la programmation fonctionnelle avec Haskell. Pour la première fois je n'ai pas réussi à écrire un petit programme de démonstration avec un nouveau langage.

Je me suis rabattu sur Erlang et là , la lumière à jaillie ! J'ai compris les grands principes d'Erlang grâce à mes lectures sur Haskell.

Erlang est un langage fonctionnel 'allégé' avec beaucoup moins de contrainte qu' Haskell mais aussi moins de richesse au niveau du traitement récursif (exemple: les opérations de map/fold par la gauche ou à droite).

Les grands principes d'Erlang

Erlang est orienté 'concurrent' . Il faut traduire le terme par processus 'partenaires'.

Quand on a faire à un traitement lourd , il y a plusieurs solutions :
  1. La plus couteuse: Utiliser une énorme machine avec un énorme CPU : cette solution est passée de mode.
  2. Lancer plusieurs petits programmes pour traiterle même problème:
Là on en encore 3 possibilités :

  • Technique du Fork.
On peut utiliser la technique du Fork présente sur les machines Unix. Le processus père est dupliqué en processus fils. Tout l'environnement du père est ainsi cloné dont les descripteurs de fichier. Il n'y a souvent qu'un seul programme qui doit faire le test suivant: je suis le père ou je suis un des fils. On trouvera ainsi dans le code des paragraphes de libération de ressources qui ne seront activés que dans l'environnement d'un processus fils. Il faudra aussi gérer la communication inter-processus par l'utilisation de sémaphore ou des tubes nommés.

  • Les Threads.
Les threads partagent un espace de mémoire commun et peuvent ainsi échanger des informations. Par contre , il faut utiliser des rtechniques de synchronisation et de verrouillage de memoire.

  • Par message
Erlang utilise des messages pour communiquer entre les processus , comme on peut le faire avec notre client de messagerie. On ne parle plus de thread mais de processus. Chaque processus à son propre espace d'adressage. Chaque processus possède une boite au lettre et est capable de recevoir ou d'envoyer des messages dans un protocole propre à Erlang. Cette gestion est facilitée par l'utilisation des principes de la programmation fonctionnelle .

Ainsi Erlang est capable de lancer et de superviser plusieurs precessus en local MAIS aussi en mode distant sur des machines distinctes.

Les principes de la programmation fonctionnelle dans Erlang.

  • Les variables.

Les variables sont immuables : Il est possible d'assigner une variables mais on ne peut pas la modififer (SANS qu'on puisse parler de constante.) Question : comment incrémenter une variable ?

  • Les fonctions
Un programme est une suite de fonction. Chaque fonction est protégée par un filtre (motif ou condition) qui permet ou non de rentrer dans certaines parties de la fonction .

  • La récursivité.

Un programmeur habitué à ses boucles FOR , WHILE ne trouvera pas directement les équivalences. C'est d'ailleurs peut etre une erreur de conception que d'avoir à faire une boucle de type classique.

Les livres

En francais Lien vers Eyrolles

En Anglais : La bible Erlang

Aucun commentaire: