Wyvern (Programmiersprache)

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Wyvern
Paradigmen: objektorientiert, funktional, imperativ
Erscheinungsjahr: 2013
Entwickler: Jonathan Aldrich, Ligia Nistor, Darya Kurilova, Stephanie Balzer, Benjamin Chung, Alex Potanin (Carnegie Mellon University)
Typisierung: statisch typisiert
Beeinflusst von: Smalltalk, Self, Scala, Newspeak
Betriebssystem: plattformunabhängig
Lizenz: GPLv2
[1]

Wyvern ist eine funktionale und objektorientierte Programmiersprache.

Der Name leitet sich von einer zweibeinigen und zweiflügeligen mythischen Kreatur mit einem Drachenkopf und einem giftigen Biss ab. Als Wortherkunft gilt das lateinische vipera (Viper, → althochdeutsch wipera).

Der kompakte Sprachkern erlaubt es, oft verwendete Sprachelemente wie z. B. Operatoren oder zusätzliche Kontrollstrukturen in Benutzerklassen zu implementieren und dadurch den Sprachumfang zu erweitern und eigene domänenspezifische Sprachen (englisch domain-specific language, DSL) zu erstellen.

Konzepte[Bearbeiten | Quelltext bearbeiten]

Integration mit Java[Bearbeiten | Quelltext bearbeiten]

Wyvern-Programme können Java-JARs ansprechen und umgekehrt. Es können bestehende Java-Bibliotheken und -Frameworks in Wyvern-Projekte eingebunden und dort genutzt werden. Ähnliches gilt für die meisten Werkzeuge: Entwicklungsumgebungen wie Eclipse oder IntelliJ unterstützen Wyvern ebenfalls.

Objektorientierung[Bearbeiten | Quelltext bearbeiten]

Wyvern ist, anders als Java, eine rein objektorientierte Programmiersprache. Jeder Wert ist ein Objekt.

Funktionale Programmierung[Bearbeiten | Quelltext bearbeiten]

Funktionen sind First-Class-Objekte. Sie können an allen Stellen verwendet werden, an denen Werte erlaubt sind, z. B. Zuweisung an eine Variable (hier ist nicht das Ergebnis der Funktionsauswertung gemeint, sondern die Funktionen selbst) oder bei der Parameterübergabe. Methoden können jederzeit in Funktionen umgewandelt werden, sind selbst aber keine First-Class-Objekte.

Typsystem[Bearbeiten | Quelltext bearbeiten]

Wyvern ist statisch typisiert. Generische Klassen verwenden Typen, die zum Entwicklungszeitpunkt noch nicht festgelegt sind.

Sprache ohne Worte[Bearbeiten | Quelltext bearbeiten]

Die Sprache selbst enthält – anders als andere Sprachen – kein definiertes Schlüsselwort. Statt jedes Schlüsselwort mit dem Parser im Umfeld seines Codeblocks zu analysieren, enthält der Sprachkern einen „Klassen-Parser“. Dieser unterstützt Klassen-Deklarationen, die andere Deklarationen enthalten können – auch für Methoden und Variablen. Hierbei verbindet das Wyvern Frontend das Parsen mit Typprüfungsstufen, was in anderen Sprachen getrennt voneinander erfolgt. Auf diese Weise erkennt Wyvern Schlüsselworte völlig verschiedener Sprachen – beginnend mit Java UND JavaScript – und verarbeitet diese. Unabhängig davon verwendet Wyvern zur lexikalischen Quelltext-Analyse die von Python bekannte Strukturierung durch Einrückungen im Quelltext.

Entwurfsziel[Bearbeiten | Quelltext bearbeiten]

Wyvern entstand mit dem Ziel, die Leistungsfähigkeit der Sprache Scala mit einem einfacheren aber flexibleren Sprachkern zu erreichen.

Förderer[Bearbeiten | Quelltext bearbeiten]

Wyvern entsteht im NSA-Labor der Carnegie Mellon University unter der Leitung von Jonathan Aldrich. Darüber hinaus wird die Entwicklung der Sprache unter anderem finanziell gefördert von der U.S. National Science Foundation und dem Pentagon.

Systemvoraussetzungen[Bearbeiten | Quelltext bearbeiten]

Wyvern erfordert ein installiertes Java 8 JDK. Die Wyvern-Kompilierung sollte mit einer IDE erfolgen. Eclipse Kepler sowie IntelliJ 13 oder höher werden unterstützt. Mit tslwyvern existiert auch eine Implementierung in Scala.

Verwendung[Bearbeiten | Quelltext bearbeiten]

Wyvern wird entworfen, um aufgrund der Typsicherheit hohen Sicherheitsanforderungen zu genügen. Dabei soll die Entwicklung von Apps für mobile Geräte und Web-Applikation gegenüber bisherigen Vorgehensweisen vereinfacht werden. Eine Anwendung sei laut der Carnegie Mellon University, aus nur wenigen Informations-Splittern allgemeingültige Muster zu finden.

Weblinks[Bearbeiten | Quelltext bearbeiten]