JM° (sag "Jaymo") ist eine Skriptsprache von Michael Nitsche.

Die ersten Notizen dieser Sprache entstand spontan im Winter 2017/2018, Ostern 2018 erfolgte dann die erste Implementierung. Im September/Oktober 2019 konnte die Sprache stark weiter entwickelt werden und ist nun unter der GPLv3 OpenSource und auf GitLab gehostet.

Woher der Name?

J = Java
M = Michael / Maria
° = ist in JM° ein Alias von _THIS, bzw. eine Referenz auf das umgebende Objekt (wie "this" in Java)

Warum eine neue Sprache?

Ich programmiere mittlerweile seit über 30 jahren und habe schon viele Sprachen gesehen und verwendet. Auf der Suche nach einer für mich stimmigen Sprache wurde ich allerdings bis heute nicht fündig. Deshalb habe ich nun meine eigene Sprache für die täglichen kleinen Skriptwerkzeuge entwickelt.

Hallo Welt!

Wie sieht nun das kleinste Programm zur Ausgabe von "Hallo Welt!" aus?

"Hallo Welt!".print

Hier wird ein atomares String-Objekt erzeugt und die Objekt-Funktion "print" aufgerufen, welche den String mit einem Zeilenumbruch an die System-Ausgabe sendet.

Was ist das Konzept von JM°?

JM° arbeitet komplett nach dem Prinzip:
"Nimm ein Objekt ... mach etwas damit ..."

So gibt es in JM° nur Objekte (mit Funktionen, Events und Eigenschaften), Variablen und Konstanten. Fertig!
Dies ermöglicht ein Programmieren im Klemmbaustein-Prinzip.

Warum Positionen und nicht Index?

JM° orientiert sich mehr an der menschlichen Denkweise, als an den Gegebenheiten eines Computers.
Das 1. Element in einer Liste wird in anderen Sprachen meist mit Index 0 abgefragt. In JM° wird auf das 1.Element mit 1, auf das Zweite mit 2, ... usw. ... zugegriffen.

Toroidal bzw. torusförmig?

Genau genommen gibt es in JM° keine Schlüsselwörter wie z.B. "for" oder "while". Diese Funktionen werden von sogenannten Steuer-Objekten wie "For" und "While" übernommen. Ein Steuer-Objekt hat besondere Eigenschaften, kann die Parameter mehrfach auswerten und dabei auch einen Wert mitsenden. Ebenso kann die Ausführung eines angehängten Blocks oder Streams kontrolliert werden.
Zu den bereits definierten Steuer-Objekte können auch eigene Steuer-Objekte (mit der selben Funktionalität) in JM° erstellt werden.
Durch diese Eigenschaft erhält JM° (zumindest auf die Objekte bezogen) die Form eines endlosen Torus, ohne Anfang und Ende.

Wofür ist JM° geeignet?

Für allerlei kleine Skripte, teils als Ersatz von Bash oder Perl. Es lassen sich damit aber auch größere Programme inkl. GUI schreiben. Es existieren auch bereits Bibliotheken zu Datenbanken, PDF-Formulare, Sprachausgabe, neuronale Netze, ...
Zudem kann nahtlos mit JM° auf Java-Objekte zugegriffen werden und es lassen sich JM°-Objekte in Java schreiben.
So eröffnen sich sehr viele Möglichkeiten.

Warum Java?

Java ist nicht unbedingt die performanteste Sprache als Basis. Aber die ersten Experimente zu JM° fanden in Java statt, woraus sich alles weitere entwickelte. Und da Java eine der meistverwendetsten Sprachen ist, kann JM° damit sehr schnell auf verschiedenen Systemen verwendet werden.
Vielleicht gibt es ja auch irgendwann eine Portierung auf C oder Vala.

Lizenz

JM° ist unter der GPLv3 freigegeben.