Elm (Programmiersprache)
Vorlage:Infobox Programmiersprache
Elm ist eine funktionale Programmiersprache zur deklarativen Erstellung von browserbasierten Webanwendungen (Functional Reactive Programming, kurz: FRP).[1][2][3] Elm kompiliert zu JavaScript und versucht typische Aufgaben der Anwendungsentwicklung, welche in JavaScript oft mit komplexen Abhängigkeiten und Zusatzbibliotheken gelöst werden durch darauf abgestimmte Sprachkonstrukte zu vereinfachen.
Geschichte[edit | edit source]
Elm wurde 2012 von Evan Czaplicki als Teil seiner Masterarbeit entwickelt [4]. 2013 wurde Evan Czaplicki von Prezi als Open Source Engineer angestellt, um weiter an Elm zu arbeiten. 2016 wurde die Elm Software Foundation geschaffen, mit dem Ziel Elm weiterzuentwickeln[5]. Zur Promotion von Elm wurde 2016 die "Elm-Conf" als eigene Konferenz zum Thema geschaffen [6]. Die Programmiersprache wird weltweit von zahlreichen Usergroups in regelmässigen Veranstaltungen diskutiert [7][8][9][10][11] [12][13].
Eigenschaften[edit | edit source]
Elm bietet typische Sprachkonstrukte wie if-Anweisungen, let-Anweisungen und Listenoperationen.
Immutabilität[edit | edit source]
Alle Werte in Elm sind unveränderbar ("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[edit | edit source]
Alle Werte in Elm sind statisch typisiert. Jeder Wert kann mit einer Typdefinition annotiert werden. Es stehen unter anderem folgende Typen zur Verfügung: [14]
- Primitive Typen wie Boolean, Integer und String
- Einfache Datenstrukturen wie Listen und erweiterbare Records
Der Compiler von Elm kann zur Compile-Zeit feststellen ob eine Anwendung typsicher ist um Laufzeitfehler zu vermeiden. [15]
Subscriptions[edit | edit source]
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. [16]
Die Elm Architektur[edit | edit source]
Die Architektur von Elm leitet sich Teils aus dem Design und den Eigenschaften der Sprache selbst ab und soll bessere Wartbarkeit und einfachere Refakturierung 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 [17][18], welche eine populäre Lösung im React-Ökosystem darstellt.
Der Elm Compiler[edit | edit source]
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 [19].
Weblinks[edit | edit source]
- Elmweekly - Wöchentliche Neuigkeiten zum Thema Elm (englisch)
- Rethinking All Practices: Building Applications in Elm Vortrag der Konferenz React Conf 2016 (englisch)
- Hauptseminar "Programmiersprachen" WS 2015/2016 an der Universität Passau
- elm-lang.org elm A delightful language for reliable webapps. (englisch)
- 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 (englisch)
Referenzen[edit | edit source]
- ↑ Elm-Entwickler verbessern "alles" (heise.de vom 30. Mai 2013, abgerufen am 9. September 2016)
- ↑ Reactive Programming: Reaktionsfreudig (linux-magazin.de, Ausgabe 06/2014, abgerufen am 9. September 2016)
- ↑ Mehr Programmiersprachen für Webentwickler (dotnetpro.de vom 12. Juni 2014, abgerufen am 9. September 2016)
- ↑ Evan Czaplickis Masterarbeit über Elm
- ↑ New Adventures for Elm
- ↑ elm-conf 2016
- ↑ Elm Usergroup Sydney
- ↑ Elm Usergroup San Francisco
- ↑ Elm Usergroup San Francisco
- ↑ Elm Usergroup Zürich
- ↑ Elm London
- ↑ Elm Usergroup Dublin
- ↑ Elm Kopenhagen
- ↑ Vorlage:Cite web
- ↑ Vorlage:Cite web
- ↑ Vorlage:Cite web
- ↑ Vorlage:Cite web
- ↑ Smashing Magazine - Introduction to Redux
- ↑ Vorlage:Cite web