Elm (Programmiersprache)
Elm ist eine funktionale Programmiersprache für die deklarative Programmierung grafischer Oberflächen (GUIs) für Webanwendungen. Elm kompiliert zu JavaScript und folgt dem Anspruch, die typischen Aufgaben der Programmierung grafischer Oberflächen zu vereinfachen.
Elm | |
---|---|
Basisdaten | |
Paradigmen: | funktional |
Erscheinungsjahr: | 2012 |
Designer: | Evan Czaplicki |
Aktuelle Version: | 0.19.1 (21. Oktober 2019) |
Typisierung: | stark, statisch |
Beeinflusst von: | Haskell, Standard ML, OCaml, F# |
Lizenz: | Revised BSD[1] |
elm-lang.org- |
Geschichte
Elm wurde 2012 von Evan Czaplicki als Teil seiner Masterarbeit entwickelt.[2] 2013 wurde Evan Czaplicki von Prezi als Open-Source-Engineer angestellt, um weiter an Elm zu arbeiten. 2016 wurde die Elm Software Foundation gegründet mit dem Ziel, die Weiterentwicklung von Elm voranzutreiben.[3] Zur Unterstützung der Verbreitung von Elm wurde 2016 die "Elm-Conf" ins Leben gerufen.[4] Die Programmiersprache wird weltweit von zahlreichen Usergroups in regelmäßigen Veranstaltungen diskutiert.[5]
Eigenschaften
Elm bietet typische Sprachkonstrukte wie if-Ausdrücke, let-Ausdrücke und Listenoperationen.
Immutability
Alle Werte in Elm sind unveränderbar (englisch immutable). Dies bedeutet, dass einmal initialisierte Werte nicht mehr modifiziert werden können. Es werden persistente Datenstrukturen zur Abbildung von Konstrukten wie Array
und Dict
verwendet.
Statische Typisierung
Alle Werte in Elm sind statisch typisiert. Jeder Wert kann mit einer Typdefinition annotiert werden. Es stehen unter anderem folgende Typen zur Verfügung:[6]
- Primitive Typen wie Boolean, Integer und String
- Einfache Datenstrukturen wie Listen und erweiterbare Records
Der Compiler von Elm kann zur Compilezeit feststellen, ob eine Anwendung typsicher ist, um Laufzeitfehler zu vermeiden.[7]
Subscriptions
Als Ersatz für das bisherige Konzept der "Signals" wurde in Elm 0.17 der Begriff der "Subscription" eingeführt. Dieses Konzept dient als Schnittstelle zu Konstrukten in JavaScript und ermöglicht so die Nutzung von JavaScript-APIs und darauf aufbauender Bibliotheken.[8]
Architektur
Die Architektur von Elm leitet sich teilweise aus dem Design und den Eigenschaften der Sprache selbst ab und soll bessere Wartbarkeit und einfacheres Refaktorisieren von Anwendungsteilen ermöglichen. Auch spezifische Aufgaben wie State Management oder der Umgang mit asynchronen Ereignissen sollen elegant abgebildet sein. So erlangte Elm als eine Inspirationsquelle für die populäre State-Management-Bibliothek Redux einige Bekanntheit[9][10] welche eine populäre Lösung im React-Ökosystem darstellt.
Compiler
Ein leistungsfähiger Compiler mit aussagekräftigen Fehlermeldungen soll einen einfachen Einstieg in die Entwicklung mit Elm bieten. Die von JavaScript gewohnten häufigen Laufzeitfehler sollen bereits im Kompilierungsschritt aufgezeigt und somit vermieden werden können. Einstiegshürden wie etwa das Erlernen komplexer Build-Tools sollen in Elm nicht nötig sein. Die Fehlermeldungen des Elm-Compilers wurden vielfach als Best-Practice und Inspirationsquelle genutzt. So verwenden heute beispielsweise auch Reason und Rust solche Fehlermeldungen.[11][12]
Andere Implementierungen
Weblinks
- Offizielle Website
- Thesis von Evan Czapliki an der Universität Harvard über seine Sprache Elm
- Elmweekly – Wöchentliche Neuigkeiten zum Thema Elm (englisch)
- Rethinking All Practices: Building Applications in Elm, Vortrag der Konferenz React Conf 2016 auf YouTube (englisch)
- Hauptseminar "Programmiersprachen" WS 2015/2016 an der Universität Passau
- Programming languages Elm auf Platz 16 der auf GitHub entwickelten Programmiersprachen nach Stars / Likes. (github.com, abgerufen am 9. September 2016) (englisch)
- Adventures in Elm, Vortrag der Konferenz Goto Chicago 2016 auf YouTube (englisch)
Einzelnachweise
- Elm Lizenz. Abgerufen am 13. Mai 2020.
- Evan Czaplickis Masterarbeit über Elm. (PDF) 30. März 2012, abgerufen am 13. Dezember 2018.
- New Adventures for Elm
- elm-conf 2016
- Elm User Group Köln, Elm Usergroup Sydney, Elm Usergroup San Francisco, Elm Usergroup San Francisco, Elm Usergroup Zürich, Elm London, Elm Usergroup Dublin, Elm Kopenhagen
- Core Language. In: Elm Dokumentation. Abgerufen am 13. Mai 2020.
- Types. In: Elm Dokumentation. Abgerufen am 13. Mai 2020.
- A Farewell to FRP. In: elm-lang.org. Abgerufen am 13. Mai 2020.
- Prior Art. In: Redux Documentation. Abgerufen am 13. Mai 2020.
- Smashing Magazine – Introduction to Redux
- Shape of errors to come. In: The Rust Programming Language Blog. Abgerufen am 7. September 2016.
- Way way waaaay nicer error messages. In: The Rust Programming Language Blog. Abgerufen am 7. September 2017.