ML (langage)


ML (langage)

ML (contraction de Meta Language) est un langage de programmation généraliste fonctionnel.

Sommaire

Histoire

ML fut initialement développé par Robin Milner et d'autres personnes dans les années 1980 à l'Université d'Édimbourg, pour le système de preuves formelles LCF. R. Milner rencontrait des difficultés avec le système de typage de LISP qui permettait de « prouver » des assertions fausses.

ML est un langage fonctionnel impur : il est possible de programmer en impératif, et par conséquent, les fonctions peuvent être sujettes à des effets de bord, contrairement à des langages purement fonctionnels comme Haskell.

ML a été standardisé en 1983, puis révisé en 1997 ; le langage résultant s'appelle Standard ML (SML), et a été notamment implémenté dans Standard ML of New Jersey (SML/NJ). En parallèle, des équipes françaises ont développé Objective Caml, dont la popularité dans la communauté ML internationale est maintenant très grande.

Le typage de ML a été étendu avec du polymorphisme de première classe présent dans le système F de Jean-Yves Girard grâce à la thèse de Didier Le Botlan et à Didier Rémy au début des années 2000[1]. On parle alors de MLF. Cette extension du typage était un problème posé depuis 1980. Aujourd'hui, ce langage est de plus en plus simplifié.

Fonctionnalités

Les fonctionnalités de ML incluent :

  • une gestion de mémoire automatique, généralement par un ramasse-miettes ;
  • un typage statique fort et polymorphe : le transtypage (cast en C) implicite est strictement interdit, ce qui supprime un grand nombre de bogues possibles. Le système de types évolué offert par le langage permet de définir précisément les types et les opérations autorisées sur les types et les structures de données. Il est possible de définir des fonctions génériques et d'écrire des fonctions qui prennent d'autres fonctions en paramètres (fonctions dites d'ordre supérieur). Ce système peut être vu comme une variante (plus expressive) de la généricité dans les langages impératifs (C++, Java) ;
  • l'inférence de types : il n'est nullement nécessaire de déclarer le type des variables. Le compilateur est capable de le détecter de façon non ambiguë grâce au contexte d'utilisation. Cela rend le code plus succinct et améliore la lisibilité ;
  • des types de données algébriques : on peut définir de nouvelles structures de données et les combiner de façon hiérarchique ;
  • le filtrage en anglais : pattern matching : c'est la possibilité de décomposer un type de donnée algébrique en ses différentes formes et de proposer un branchement pour chacune d'elles. Ce processus est plus ou moins comparable à l'identification de type à l'exécution dans d'autres langages mais est résolu statiquement en ML – et ne pénalise donc pas les performances à l'exécution ;
  • un système puissant de modules (appelés : structures) et d'interfaces (appelées : signatures). Les structures peuvent être paramétrées (on parle alors de foncteurs) et avoir plusieurs signatures, et vice-versa. Le paramétrage évoque les « templates » de C++ ou les « generic » d'Ada ou de Modula-3, à la différence près que le typage est complètement vérifié à la compilation ;
  • un système de gestion d'exceptions.

D'autres avantages du ML sont :

  • une grande sûreté (well-typed programs can't go wrong : un programme dont la compilation aboutit ne peut pas « planter », sur une erreur de type bien sûr) ;
  • une syntaxe compacte qui s'inspire de la notation mathématique, tout en restant lisible ;
  • une rapidité d'exécution souvent comparable à C++, surtout dans la version Objective Caml.

Les points forts de ML le rendent particulièrement apte à l'écriture de langages, de compilateurs et de systèmes de preuve formelle.

Implémentations

Les principales implémentations sont le Standard ML et Objective Caml.

Standard ML :

  • SML of New Jersey (Bell Laboratories, Princeton University, Yale University, AT&T Research)
  • Moscow ML
  • MLton (NEC Research Labs) : un compilateur optimisant extrêmement robuste et efficace

OCaml (INRIA) ne suit pas le standard SML mais est plutôt une évolution orientée objet de ML. Ce langage se caractérise par un compilateur produisant des programmes disposant d'une très grande rapidité d'exécution ainsi qu'une bibliothèque importante. Les développeurs et les utilisateurs forment une communauté très active pour un langage issu de la recherche. OCaml a servi de base pour le développement du langage F# sur la plate-forme .NET de Microsoft.

Voir aussi

Sur les autres projets Wikimedia :

Notes et références


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article ML (langage) de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • langage — [ lɑ̃gaʒ ] n. m. • v. 1160; lengatge v. 980; de langue I ♦ 1 ♦ Fonction d expression de la pensée et de communication entre les hommes, mise en œuvre au moyen d un système de signes vocaux (parole) et éventuellement de signes graphiques… …   Encyclopédie Universelle

  • LANGAGE (PHILOSOPHIES DU) — L’intérêt pour la langue est un trait dominant de la philosophie contemporaine. Non que nos contemporains soient les premiers à découvrir le langage. Celui ci a toujours été à la place d’honneur dans la philosophie, tant il est vrai que la… …   Encyclopédie Universelle

  • Langage De Programmation — Un langage de programmation est un langage informatique, permettant à un être humain d écrire un code source qui sera analysé par une machine, généralement un ordinateur. Le code source subit ensuite une transformation ou une évaluation dans une… …   Wikipédia en Français

  • Langage Humain — Le langage est la faculté de mettre en œuvre un système de signes linguistiques (qui constituent la langue) permettant la communication et l expression de la pensée, ce qui est privatif des humains, et des sentiments, ce qui est commun aux… …   Wikipédia en Français

  • Langage oral — Langage humain Le langage est la faculté de mettre en œuvre un système de signes linguistiques (qui constituent la langue) permettant la communication et l expression de la pensée, ce qui est privatif des humains, et des sentiments, ce qui est… …   Wikipédia en Français

  • Langage quotidien — Langage humain Le langage est la faculté de mettre en œuvre un système de signes linguistiques (qui constituent la langue) permettant la communication et l expression de la pensée, ce qui est privatif des humains, et des sentiments, ce qui est… …   Wikipédia en Français

  • Langage traditionnel — Langage humain Le langage est la faculté de mettre en œuvre un système de signes linguistiques (qui constituent la langue) permettant la communication et l expression de la pensée, ce qui est privatif des humains, et des sentiments, ce qui est… …   Wikipédia en Français

  • Langage Formel — Dans de nombreux contextes (scientifique, légal, etc.), on désigne par langage formel un mode d expression plus formalisé et plus précis (les deux n allant pas nécessairement de pair) que le langage de tous les jours (voir langage naturel). En… …   Wikipédia en Français

  • Langage sms — « Bonjour, ça va ? » écrit en langage SMS. Manifeste contre le langage SMS …   Wikipédia en Français

  • Langage texto — Langage SMS « Bonjour, ça va ? » écrit en langage SMS. Manifeste contre le langage SMS …   Wikipédia en Français

  • Langage Des Fleurs — Un bouquet savamment composé porte un message. Le don de fleurs existe dans la plupart des civilisations, qu il constitue un cadeau ou un acte religieux. Dans certaines cultures, on accorde aux fleurs une symbolique particulière, en donnant à… …   Wikipédia en Français


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.