Wikipedia · einfach zusammengefasst · Stand
ML (Programmiersprache)
Meta Language (ML) beschreibt eine Familie funktionaler Programmiersprachen mit statischer Typisierung, Polymorphie, automatischer Speicherbereinigung und …
Inhalt4 Abschnitte
Grundidee und Eigenschaften
Meta Language (ML) ist eine Familie funktionaler Programmiersprachen. Funktional bedeutet, dass Programme stark mit Funktionen arbeiten; ML ist aber nicht rein funktional wie Haskell, weil es auch imperative Konstrukte und Wirkungen erlaubt, zum Beispiel Dateizugriffe.
Wichtige Eigenschaften von ML sind statische Typisierung, Polymorphie, automatische Speicherbereinigung und im Allgemeinen strenge Auswertung. Statische Typisierung bedeutet, dass Typen vor der Ausführung geprüft werden. Polymorphie bedeutet, dass Funktionen oder Datenstrukturen für verschiedene Typen verwendbar sein können. Automatische Speicherbereinigung heißt, dass nicht mehr benötigter Speicher automatisch freigegeben wird. Strenge Auswertung bedeutet, dass Ausdrücke normalerweise sofort ausgewertet werden.
Entstehung und Verwendung
ML wurde 1973 von Robin Milner an der Universität Edinburgh entwickelt. Es entstand als Teil des Theorem-Beweis-Programms LCF, ausgeschrieben Logic of Computable Functions. Dieses Programm sollte automatisiert die Korrektheit von Programmen beweisen.
Seitdem entwickelte sich ML zu einer vollständigen und eigenständigen Programmiersprache. Besonders im wissenschaftlichen Umfeld wird ML verwendet. An einigen Universitäten wird die Sprache als primäre Programmiersprache gelehrt.
Wichtige Varianten
Zu ML gibt es rund ein Dutzend Varianten. Die bekanntesten Vertreter sind Standard ML, kurz SML, Lazy ML und Caml.
Caml steht für „Categorical Abstract Machine + ML“. Es wurde am INRIA, dem Institut National de Recherche Informatique et en Automatique in Frankreich, von Gérard Huet in den Jahren 1984–85 entwickelt. 1990 wurde Caml unter Xavier Leroy zu Objective CAML, kurz OCaml, erweitert. OCaml verbindet funktionale, imperative und objektorientierte Sprachkonzepte.
Lazy ML ist ein ML-Dialekt, der vom Grundsatz der strengen Auswertung abweicht und Bedarfsauswertung einführt. Bedarfsauswertung bedeutet, dass Ausdrücke erst dann ausgewertet werden, wenn ihr Ergebnis tatsächlich benötigt wird.
Standard ML
Standard ML war Robin Milners Versuch von 1984, die verschiedenen Sprachdialekte von ML zu vereinigen. Neben dem ML-Kern flossen auch andere Ideen ein, zum Beispiel die Funktionsdeklaration durch Muster aus der Programmiersprache Hope.
Eine überarbeitete Version von SML erschien 1997. In der Literatur wird sie meist „Standard ML’97“ genannt, um sie von der Ursprungsversion zu unterscheiden. Die Referenzimplementierung von SML ist Standard ML of New Jersey, kurz SML/NJ.