Logo
  Erlang-fr.org  

Présentation du site
Cours Erlang
Articles
Projets
Autour d'Erlang-fr
Liens
 
English Area
Miroir: Documentation Erlang
Miroir: Archives Erlang/OTP
 
Recherche

Logo Process-one
Erlang

Livre blanc: Le langage Erlang

Ce texte constitue une brève introduction au langage Erlang en direction des développeurs.


Les caractéristiques du langage Erlang

Erlang est un langage informatique disposant de nombreuses caractéristiques plus souvent associées à un système d'exploitation qu'à un langage de développement: concurrence des processus, arbitrage entre les processus et planification, gestion de la mémoire, distribution, gestion transparente du réseau, etc.

Avec la mise en Open-Source de l'environnement de développement Erlang, Ericsson fournit une implémentation du langage Erlang mais aussi un logiciel médian permettant la construction de systèmes distribuées à haute disponibilité.

Erlang propose les caractéristiques suivantes:

Concurrence - Erlang gère des processus extrêmement légers, dont l'occupation mémoire évolue dynamiquement. Les processus ne partagent pas de mémoire et communique de manière asynchrone par passage de messages. Erlang permet de développer des applications utilisant un très grand nombre de processus concurrents. La concurrence du système et la gestion des processus n'est pas liée aux caractéristiques du système d'exploitation.

Distribution - Erlang est conçu pour fonctionner en environnement distribué. Une machine virtuelle Erlang constitue en fait ce que l'on nomme un «noeud» Erlang. Un système distribué Erlang est un réseau de «noeud» - en général un par processeur. Un «noeud» Erlang peut créer des processus sur d'autres «noeuds», dont certains peuvent même tourner sur des systèmes d'exploitation différents. Les processus s'éxécutant sur différents «noeuds» communique exactement de la même manière que des processus qui s'éxécute sur un même «noeud».

Robustesse - Erlang dispose de fonctions standard de détection d'erreurs qui peuvent être utilisées pour bâtir un système «tolérant aux pannes». Par exemple, des processus peuvent surveiller le statut et l'activité d'autres processus, même si ces derniers s'exécutent sur d'autres «noeuds». Dans un système distribué, les processus peuvent être configurée pour s'éxécuter sur d'autres «noeuds» en cas de problème and automatiquement revenir sur les «noeuds» une fois le problème résolu.

Temps réel logiciel - Erlang permet de développer des systèmes temps-réel logiciel. Ces systèmes nécessite des temps de réponse de quelques millisecondes. Il n'est pas possible, dans ces systèmes de tolérer de longues phases de récupération de la mémoire (garbage collection). Erlang utilise donc des techniques de récupération mémoire incrémentales.

Mise à jour du code «à chaud» (Sans interruption) - Certains systèmes ne peuvent pas être arrêté, même pour mettre à jour les programmes. Erlang permet de mettre à jour ces programmes sans arrêter le système. L'ancien code peut-être neutralisé et renplacer par le nouveau code. Pendant la transition, l'ancien et le nouveau code peuvent cohabiter. Il est ainsi possible de corriger des bugs et d'installer de nouvelles versions sur un système sans perturber son fonctionnement.

Chargement incrémental du code - Les utilisateurs peuvent contrôler très précisément la manière dont le code est chargé. Pour un système embarqué, le code peut être chargé au démarrage du système. Pour un système de développement, le code peut être chargé au fur et à mesure des besoins, même lorsque le système fonctionne. Si l'on découvre des bugs durant les tests, seul le code buggué à besoin d'être remplacé.

Interfaces: Ouverture vers l'extérieur - Les processus Erlang peuvent communiquer avec d'autres programmes grâce au même mécanisme de passage de messages qui est utilisé entre les processus eux-mêmes. Ce mécanisme est utilisé pour les communications avec le système d'exploitation et pour les intéractions avec des programmes écrits dans d'autres langages. Si les performances pures sont recherchées une extension de ce concept permet par exemple à des programmes C d'être directement liés dans le système d'exécution Erlang.

Les composants principaux

L'environnement de développement Open Source Erlang est fourni avec plusieurs composants indépendants, qui peuvent être utilisés comme des briques logiciels pour le développement d'applications complexes. Ces composants sont compatibles avec les messages systèmes Erlang: chargement, déchargement du code (load/unload), démarrage, arrêt du service (start/stop/restart), mise à jour du code à chaud (change code).

Inets - Server Web, supportant le protocole HTTP 1.0; Client FTP.

Mnesia - Base de donnée temps réel distribuée pour Erlang. Mnesia supporte la réplication en mémoire vive (RAM) aussi bien que le stockage sur disque, permet la modification dynamique des schémas et permet de stocker des structures de données d'une complexité arbitraire. Mnesia est très rapide car fonctionne dans le même espace d'adressage que les applications qui l'utilise: cette caractéristique est possible, car Mnesia et les programmes qui l'utilise sont écrits en Erlang. Mnesia est un bon exemple de la puissance d'Erlang: Dans combien de langage pourriez-vous écrire un SGBD distribué, complet et de qualité industrielle en moins de 20 000 lignes de code.

Orber - ORB (Object Request Broker) CORBA conforme à la version 2.0 de la norme.

SNMP - Agent SNMP extensible (v1/v2) et compilateur MIB.

Outils et bibliothèques

L'environnement de développement Erlang est fournit avec une bibliothèque d'outils extrêmement utiles:

Appmon - Outil graphique de surveillance des applications du système et des processus. Utilisable en local ou sur un noeud distant.

ASN.1 - Bibliothèque supportant la notation ASN.1 basique et les règles de codification BER et PER, aussi bien au moment de la compilation qu'à l'exécution

Compilateur - Compilateur Erlang.

Debugger - Débogueur Erlang graphique.

ERTS - Systéme complet d'éxécution, incluant la machine virtuel, le «ramasse-miette» et le démon réseau.

GS - Bibliothèque d'écriture d'interface utilisateur.

IC - Compilateur IDL (Norme de l'OMG d'interopérabilité: Interface Definition Language) pour le code Erlang et le code C.

Jive - Outil permettant à des applications ou des «applets» Java d'interagir avec du code Erlang.

Kernel - Code C nécessaire pour faire fonctionner le système Erlang: Fonctions élémentaires Erlang (BIF: Built-in functions); serveurs de code, de démarrage (boot) et de log; Interface vers le système d'exploitation et le système de fichiers.-->

MESH - Système de gestion des mesures, incluant un MIB SNMP.

Mnemosyne - Langage de requète optionnel pour la base de données Mnesia.

Mnesia Session - Définition d'interface vers Mnesia pour d'autres langages. Ce module offre un accès à Mnesia via les protocoles IIOP et erl_interface.

Supervision du système d'exploitation (OS_MON) - Supervision de la CPU, de l'utilisation du disque et de la mémoire vive, incluant des MIBs SNMP (v1/v2). Des interfaces avec le syslogd de Solaris et l'enregistreur d'événement de Windows NT sont fournis.

Outils de parsing - Générateur de parseur LALR-1 pour Erlang (yecc), ressemblant à yacc. Yecc prend une définition de grammaire BNF en entrée et produit le code Erlang pour le parser en sortie. Yecc est utilisé pour générer le parseur Erlang.

PMan - Outils pour visualiser l'état des processus tournant sur une machine virtuelle Erlang, locale ou distante.

SASL - Gestionnaire de rapport d'avancement de processus, d'erreurs ou de crash, navigateur de rapport, aide au déploiement de nouvelles versions, Régulation de la surcharge machine.

Stdlib - Bibliothèques pour: Entrées/Sorties; Stockage de tables en mémoire vive ou sur disque (ETS et DETS); graphes, dictionnaires, lists, chaines de caractères, [sets] et [queues]; expressions régulière; fonctions mathématiques. Interpréteur Erlang, [tokenizer], parseur, [lint] and formatteur de code. Frameworks génériques pour le développement de serveurs tolérants aux pannes, serveurs de gestion d'événement, de machines à états finis, de superviseurs de processus, etc, etc.

Table visualizer - Outil pour visualiser le contenu de tables ETS ou des tables de la base de données Mnesia.

Barre d'outils - Facilite l'accès aux outils standards Erlang.

Divers autres outils - Outil d'analyse de couverture, outil de profiling de code, outil de «trace» en mode texte, mode Emacs, générateur de fichier TAGS pour Emacs, outil de type «make», utilitaire de visualisation du graphe de appels de fonctions.
 

Erlang en 14 exemples

Les sections suivantes décrivent les fonctionnalités de base du langage Erlang au travers d'un ensemble de petits exemples. Cet aperçu n'est évidemment pas suffisant pour apprendre le langage. Nous recommandons donc de vous réferez aux pointeurs donnés en fin de document pour aller plus loin dans votre apprentissage.

Cette partie n'a pas encore été traduite.
This part has not yet been translated.

Historique de ce document

Version 1.0 (Joe Armstrong, Bjarne Däcker, Thomas Lindgren, Håkan Millroth): Première version publique.
Version 2.0 (Mise à jour par l'«équipe produit» Erlang d'Ericsson.
Version 2.0 française: Traduction par Mickaël Rémond.

Site de la version Open Source d'Erlang: http://www.erlang.org

 

Ce document a été traduit avec l'autorisation expresse d'Ericsson.
This document has been translated with the express authorization of Ericsson.

Pour tout commentaire: erlang@erlang-fr.org

Dernière modification: 2005-11-11 18:47:43