JayMo
JayMo | |
---|---|
Paradigmen: | multiparadigmatisch, stark objektorientiert, funktional, nebenläufig, erweiterbar |
Erscheinungsjahr: | 2019 |
Designer: | Michael Nitsche |
Entwickler: | Michael Nitsche |
Aktuelle Version: | 0.20.0 (28. July 2022) |
Typisierung: | stark, dynamisch |
Dialekte: | Classic, Flow |
Beeinflusst von: | Java, PHP, Python, Ruby, Groovy, Lua, Julia |
Betriebssystem: | plattformunabhängig |
Lizenz: | LGPL 3.0 |
https://www.jaymo-lang.org/ |
JayMo ist eine höhere Programmiersprache und Skriptsprache, die 2017 von Michael Nitsche entworfen wurde. Die Multiparadigmensprache erlaubt starke und dynamische Typisierung, ist stark objektorientiert und funktional.
Ziel war es, eine schlanke, einfache und flexible Sprache mit möglichst wenig Overhead zu entwerfen. Zudem orientiert sich JayMo mehr an der menschlichen Denkweise, als an technischen Gegebenheiten.
Inspiriert wurde die Sprache durch Klemmbausteine und dem Baukastenprinzip. So bilden Objekte die Ausgangsbasis, welche über verschiedene Funktionen, Eigenschaften und Ereignisse mit anderen Objekten flexibel interagieren.
Der rein in Java geschriebene Interpreter übersetzt ein Programm in einen Abstract Syntax Tree (AST) und führt es anschließend aus. So zählt JayMo zu den Sprachen die auf der Java Virtual Machine ausgeführt werden, was eine Verfügbarkeit für viele Plattformen wie insbesondere Linux, MacOS und Windows ermöglicht. Mit einigen Anpassungen lässt sich auch Java-Code ausführen und es können sämtliche Java-Bibliotheken genutzt werden.
Dialekte[Bearbeiten]
Die Sprache JayMo bietet zwei aufeinander aufbauende Dialekte.
Classic[Bearbeiten]
Dieser Dialekt eignet sich vor allem für JayMo- und Programmier-Einsteiger.
Print "Hallo Welt!"
Hier als Beispiel eine Schleife, die von 1 bis 10 zählt, wobei nur Zahlen größer 5 ausgegeben werden sollen:
Count( 10 ) \\ a
If( a > 5 )
Print a
Flow[Bearbeiten]
JayMo-Flow eröffnet, aufbauend auf JayMo-Classic, den vollen Umfang von JayMo.
Eine Stärke von JayMo sind Befehlsketten, die klar von links nach rechts aufgebaut werden:
"Hallo Welt!".print
Das Beispiel aus Classic lässt sich auch in einer Zeile schreiben:
10.times.passIf( cur > 5 ).print
Iteration über eine Liste und Ausgabe der einzelnen Elemente:
["Eins", "Zwei", "Drei"].each.print
Weitere Beispiele[Bearbeiten]
Definition eines Objekt-Typs mit zwei Funktionen, jeweils eingeleitet durch zwei Doppelpunkte:
::Auto
::beschleunigen
"brumm brumm".print
::bremsen
"quietsch".print
auto1 = Auto
auto1.beschleunigen # => "brumm brumm"
auto1.bremsen # => "quietsch"
Ein einfaches Programm mit grafischer Oberfläche:
b1 = Swing_Button("Klick mich")
b1::@select
"Klick".print
Swing_Main.add( b1 ).size( 400, 300 ).run
Geschichte[Bearbeiten]
Die ersten Notizen für JayMo entstanden gegen Ende 2017. Die erste Implementierung erfolgte dann 2018 unter dem Arbeitsnamen JM° (gesprochen "Jay Mo"). Im Jahre 2019 wurde JM° unter der GPL als freie Software veröffentlicht und 2021 erfolgte die Umbenennung von JM° in JayMo.
Lizenzbestimmungen[Bearbeiten]
Seit Version 0.17 ist JayMo als freie Software unter der LGPL-Lizenz 3.0 veröffentlicht.
Der zugehörige Befehlszeileninterpreter (JayMo-CLI) sowie der grafische Editor (JayMo-Edit) sind unter der GPL 3.0 verfügbar.
Weblinks[Bearbeiten]
Diese artikel "JayMo" ist von Wikipedia The list of its authors can be seen in its historical and/or the page Edithistory:JayMo.