JayMo
Paradigmen: multiparadigmatisch, stark objektorientiert, funktional, nebenläufig, erweiterbar
Erscheinungsjahr: 2019
Designer: Michael Nitsche
Entwickler: Michael Nitsche
Aktuelle Version: 0.20.0  (28. Juli 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.

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

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.

Bearbeiten

[[Kategorie:Skriptsprache]] [[Kategorie:Objektorientierte Programmiersprache]] [[Kategorie:Programmiersprache für die Java Virtual Machine]] [[Kategorie:Java-Programm]]