WikiDer > Ocaml
Ziel Camli | ||||
| Paradigma | Funktional, objektorientierten | |||
| erschien | 1996 | |||
| Entworfen von | Xavier Leroy und andere | |||
| Entwickelt von | inria (Frankreich) | |||
| Aktuelle Version | 3.10.2 | |||
| Typensystem | streng, statisch | |||
| Dialekte | F#, JoCaml, MetaOCaml, OcamlP3l | |||
| Beeinflusst von | Kamllicht, ML | |||
| Einfluss auf | Reichweite | |||
| Lizenz | Compiler: QPL, Bibliotheken: LGPL | |||
| Webseite | http://caml.inria.fr/ | |||
| ||||
Ocamli (Ziel-CAML) ist die Hauptimplementierung der Programmiersprache Camli (Kategorische abstrakte Maschinensprache), ein Dialekt von ML, entwickelt auf dem inria[1] und der Ecole Normal Superieure.[2]
Geschichte
Caml ist statisch typisiert, streng bewertet, und verwendet automatisch Speicherverwaltung durch Müllabfuhr.
Die erste Caml-Implementierung in den 1980er Jahren wurde in . geschrieben lispeln und erhielt wegen seiner hohen Speicher- und CPU-Auslastung den Spitznamen Schweres Camli. Sein Nachfolger, Caml-Licht, wurde implementiert in C von Xavier Leroy und Damien Doligez. Sie haben auch ein leistungsstarkes Modulsystem hinzugefügt.
OCaml
OCaml ist die Hauptimplementierung von Caml. OCaml bietet eine Reihe zusätzlicher Funktionen, wie z Objekt orientierte Programmierung.
OCaml besteht aus einem interaktiven Dolmetscher, ein Byte-CodeCompiler und ein sogenanntes nativer Compiler das optimiert ausführbare Dateien produziert. OCaml verfügt über eine umfangreiche Sammlung von StandardBibliotheken die die Sprache für die gleichen Aufgaben geeignet machen wie zum Beispiel Python oder perl.
Eigenschaften
Wie alle ML abgeleitete Sprachen, die OCaml verwendet Typ-Inferenz. Dies bedeutet, dass der Compiler automatisch den Typ aller Ausdrücke herleitet. In Kombination mit statisches Tippen (Englisch: statisches Tippen) stellt die Typinferenz sicher, dass bestimmte Fehlerarten, die normalerweise erst während der Programmausführung auftauchen, zur Kompilierzeit entdeckt werden Datentypen explizit angeben (im Gegensatz zum Beispiel Java).
im Gegensatz zu anderen funktionale Programmiersprachen OCaml ist sehr effizient. Dies liegt zum Teil daran, dass die Kombination von Typrückschluss und statischer Typisierung die Typprüfung zur Laufzeit weitgehend überflüssig macht. Auch der OCaml-Compiler nutzt die Codeanalyse für weitreichende Optimierungen und die Standardbibliotheken werden sehr effizient implementiert.
Neben der traditionellen funktionalen Art der Programmierung unterstützt OCaml auch zwingende Programmierung (OCaml ist nicht streng funktional: es ist möglich Nebenwirkungen erstellen) und Objekt orientierte Programmierung.
Weitere Funktionen:
- Algebraische Datentypen
- parametrisiert Polymorphismus
- Funktionen (parametrierte Module)
- Ausnahmebehandlung (Behandlung von Laufzeitfehlern)
- EIN Lexer-Generator und ein Parser Generator. Diese haben eine starke Ähnlichkeit mit den jeweiligen Lex und Yacc
- EIN Makrosprache (camlp4)
Beispiele
Hallo Welt
Ein Programm mit folgendem Inhalt, gespeichert als hallo.ml:
print_endline"Hallo Welt!";;Diese lässt sich wie folgt zusammenstellen:
$ ocamlc hello.ml -o hallo
Der Befehl zum Ausführen lautet:
$ ./halloHallo Welt!$
Schnelle Sorte
Dies ist eine Implementierung von schnelle Sorte:
Passt aufrecschnelle Sorte=Funktion|[]->[]|Drehpunkt::sich ausruhen->Passt aufist kleinerX=X<DrehpunktimPasst auflinks,Recht=aufführen.Partitionist kleinersich ausruhenimschnelle Sortelinks@[Drehpunkt]@schnelle SorteRechtSiehe auch
Externe Links
| Programmiersprachen |
|---|
ABAP ·ABC ·ActionScript ·ada ·algol ·APL ·Assemblersprachen ·AWK ·B ·BASIC ·BCPL ·C ·C ·C♯ ·sauber ·Schermaschine ·COBOL ·COMAL ·Curry ·d ·Eiffel ·Erlang ·F♯ ·her ·fortran ·gehen ·Haskell ·Symbol ·J ·Java ·Kotlin ·lispeln ·Logo ·lua ·m4 ·ML ·Modula-2 ·Oberon ·Objekt Pascal ·Ziel c ·Ocamli ·Unze ·Pascal ·perl ·PHP ·PL/I ·PL/SQL ·Prolog ·Prova ·Python ·Rexx ·Rollenspiel ·Rubin ·Frieden ·SAS ·Reichweite ·planen ·Selbst ·Simula ·Smalltalk ·Schnell ·TCL ·Typoskript ·vala ·Visual Basic |
| Quellen, Anmerkungen und/oder Verweise |