Meta language

Meta language

ML (langage)

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

Histoire

ML fut initialement développé par Robin Milner et d'autres personnes dans les années 1980 à l'Université d'Edimbourg, 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 SML (Standard ML), 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.

Fonctionnalités

Les fonctionnalités de ML incluent :

  • une gestion de mémoire automatique 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


Objective Caml (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.

  • Portail de la programmation informatique Portail de la programmation informatique
Ce document provient de « ML (langage) ».

Wikimedia Foundation. 2010.

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

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Meta' language — Meta’ Spoken in Cameroon Native speakers 87,000  (1982) Language family Niger–Congo Atlantic–Congo Benue–Congo …   Wikipedia

  • meta-language — see metalanguage …   English dictionary

  • Website META Language — Desarrollador Ralf S. Engelschall thewml.org Información general Última versión estable 2.0.10 9 de agosto de …   Wikipedia Español

  • Website Meta Language — is a free and extensible web designer s off line HTML generation toolkit for Unix, distributed under the GNU General Public License (GPL v2). It is written in ANSI C and Perl 5, built via a GNU Autoconf based source tree and runs out of the box… …   Wikipedia

  • Website Meta Language — Die Website Meta Language (auch WML) ist eine freie und erweiterbare Werkzeugsammlung zur Generierung von HTML für Unix, die unter der Version 2 der GNU General Public License (GPL) vertrieben wird. Es ist in ISO C und Perl 5 geschrieben und… …   Deutsch Wikipedia

  • Information Economy Meta Language — (IEML, fr.:métalangage de l économie de l information) est un langage informatique. L’initiative IEML (Information Economy Meta Language) a été lancée en 2006 par Pierre Lévy à partir de la Chaire de Recherche du Canada en Intelligence Collective …   Wikipédia en Français

  • Extensible Binary Meta Language — Infobox file format name = Extensible Binary Meta Language icon = extension = mime = magic = 1a 45 df a3 type code = uniform type = owner = genre = container for = contained by = extended from = extended to = Matroska standard = Extensible Binary …   Wikipedia

  • Website Meta Language — es un software libre que contiene un juego de herramientas extensibles de generación de páginas HTML fuera de línea para Unix, distribuido bajo la licencia GNU General Public License (GPL v2). Está escrito en ANSI C y Perl 5, construido mediante… …   Wikipedia Español

  • Cache Meta Language — is a computer programming language used to configure high speed caching functionality in web server software such as lighttpd, which couples the functionality with that of memcache, a memory based caching system. The lighttpd module that… …   Wikipedia

  • Extensible Binary Meta Language — (EBML) est un format de données général pour (théoriquement) tout type de données dont le but est d être un équivalent binaire des fichiers au format XML. À la différence de XML néanmoins, le support d un DTD dans un fichier EBML n est pas encore …   Wikipédia en Français

Share the article and excerpts

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