Syntax für einfache Programmiersprache gesucht



  • Hi zusammen

    ich habe eine Software, bei der die Nutzer ständig ihre Wünsche ändern, weil sie viel rumprobieren. Da die Nutzer das in Zukunft auch weiterhin tun wollen, würde ich gern einen Compiler bauen, der eine intuitive Sprache in einen einfach zu verarbeitenden byteweisen Code umsetzt. Dadurch soll es den Nutzern möglich sein, ihre Wünsche selbst zu entwerfen, in der Software hochzuladen und es dieser Software ermöglichen, diesen Code abzuspielen. Der Compilerbau auf diesen Niveau ist für mich nicht das Problem.

    Die Anforderungen an die Syntax sind niedrig:

    - Prozeduren/Funktionen
    - Grundrechenarten/Klammern/Funktionsaufrufe
    - Verwendung externer Konstanten
    - Aufruf externer Funktionen
    - bisschen Logik, keine Schleifen, nur Wenn-Dann

    Nun suche ich eine Syntax(!) die für Nutzer geeignet ist, die mit Programmierung nicht viel am Hut haben, aber generell nicht auf den Kopf gefallen sind.

    Hat jemand auf Anhieb eine Idee?



  • Nun suche ich eine Syntax(!)

    warum nicht was fertiges verwenden?

    AngleScript
    ChaiScript
    Python integrieren
    Lua
    PascalScript
    usw.

    https://de.wikipedia.org/wiki/Skriptsprache

    wenn es schon mit der Syntax problematisch ist wirst du viel Spass bei
    der Umsetzung haben



  • Nee ich bin nur so richtig unkreativ und kenne nicht genug Scriptsprachen um schon taugliche Beispiele im Hinterkopf zu haben. Generell bin ich mit meinem Zielwunsch näher am Programmablaufplan als an einer konkreten Sprache.

    Ich suche ja etwas fertig definiertes, gerade weil ich mir keine Syntax aus den Rippen leiern will. Der eigentliche Compilerbau für sowas einfaches ist dann kein Problem mehr. Das ist dann nur noch ne Zeitfrage.



  • It0101 schrieb:

    Der eigentliche Compilerbau für sowas einfaches ist dann kein Problem mehr. Das ist dann nur noch ne Zeitfrage.

    Ich rate hier vom Selbstbau ab. Es ist niemals zielführend bei genügend bestehenden Lösungen eine weitere Fehlerquelle einzubauen - die bestehenden Lösungen werden in der Regel von weit mehr Personen getestet und gewartet, als eine Einzelfirma stemmen könnte. Ich würde dabei auf eine möglichst breit genutzte Sprache zugreifen (z.B. Phyton). Auch für die Anbindung dieser an andere Sprachen/Bibliotheken gibt es bereits fertige Lösungen.

    Selbst entwickeln sollte man dort wo es Sinn ergibt und nicht nur weil es machbar ist.



  • Mir stellt sich da die Frage, wie "perfekt" sich eine fertige Compilerbibliothek an mein restliches Projekt anbinden lässt. Performance ist dabei auch ein Thema, zudem braucht der "Gast-Quelltext" Zugriff auf einige Ressourcen aus der Software.

    Können externe Bibliotheken das leisten?

    Meine Erfahrungen beschränken sich darauf, einfache Kommandos in eine Art Maschinensprache umgesetzt zu haben und diese dann mit einem eigenen "Player" aus dieser Maschinensprache umgesetzt zu haben. Mir wärs schon recht, wenn eine fertige Bibliothek das leisten kann, aber wenn sie meine Anforderungen nicht erfüllt bringt mir das wenig.

    Und wie erwähnt sind die Kunden echt keine Cracks. Python könnte da schon wieder fast abschreckend wirken.



  • It0101 schrieb:

    Mir stellt sich da die Frage, wie "perfekt" sich eine fertige Compilerbibliothek an mein restliches Projekt anbinden lässt. Performance ist dabei auch ein Thema, zudem braucht der "Gast-Quelltext" Zugriff auf einige Ressourcen aus der Software.

    Du wirst mit Sprachen wie Phyton sicherlich nicht die Geschwindigkeit wie mit einer nativen Sprache erreichen, doch sollte man dennoch immer abwägen ob man nicht an der falschen Stelle optimiert. Zumal Skriptsprachen inzwischen durchaus eine vernümpftige Performance erreichen. Ist diese Schnittstelle wirklich der wesentliche Teil des Programms? Ist die Alternative wirklich soviel Schneller das es sich massiv auswirkt? Ist der Zusatzaufwand für die Umsetzung dies wirklich wert?

    Und ja, Phyton (nehme ich als Beispiel, weil es die einzige Skriptsprache ist mit der ich mich zumindest ein paar Monate beschäftigt habe) lässt sich an den Rest der Software anbinden, wenn du entsprechende Schnittstellen bereit stelltst. Wie die auszusehen haben müsste man aber nachlesen...

    Und wie erwähnt sind die Kunden echt keine Cracks. Python könnte da schon wieder fast abschreckend wirken.

    Ich habe (obwohl ich schon über 15 Jahre als Softwareentwickler tätig bin) vor kurzen meinen Bachelor nachgeholt. In dem Kurs waren einige, die kaum sinnvoll programmieren konnten, dennoch sind gefühlt alle mit Phyton recht schnell klar gekommen.

    Die einzige alternative die ich zu einer einfachen Skriptsprache wie Phyton sehe, wäre eine Sprache die sich sehr stark am gesprochenen orientiert (ähnlich Basic). Im Sinne von "addiere 4 zu x; multipliziere x mit 5...".



  • Unter Linux ist es relativ einfach Python einzubinden, siehe z.B. Embedding Python in Your C Programs. Sollte unter Windows nicht viel komplizierter sein denke ich.

    Python ist eine gute Wahl, da die Syntax ziemlich simpel ist (schlaue Leute werden das schnell verstehen). Du kannst ja auch ein paar Beispiele vorprogrammieren, dann sollte das schon inhauen.

    Andere Projekte (z.B. Frida) verwenden Javascript. Mit der V8 Engine musst du dir auch keine Sorgen bzgl. Performance machen.





  • asc: Meinst du wirklich "Python", weil du immer "Phyton" schreibst? 😃



  • Th69 schrieb:

    asc: Meinst du wirklich "Python", weil du immer "Phyton" schreibst? 😃

    Jaja... Irgendwie den Namen falsch in Erinnerung gehabt 😉



  • Bei uns wurde in einem Projekt, wo es darum ging dass der Benutzer Abläufe programmieren kann, Lua eingesetzt. Der Umfang der Sprache ist ungefähr das was du aufgezählt hast + Schleifen und Arrays: https://www.lua.org/manual/5.3/manual.html#9

    Man hat dann noch die Wahl, Teile der Standardbibliothek mit rein zu nehmen. Sowas wie Stringmanipulation oder mathematische Hilfsfunktionen (Runden, Sin/Cos etc.) sind manchmal schon sehr praktisch. Man kann da natürlich auch eigene Funktionen mit rein bringen.



  • Wenn ich es richtig verstanden habe, warum nicht ein BASIC-Dialekt?

    Hier ein Beispiel dafür aus einem anderen Forum (wenn das erlaubt ist):

    https://www.forum64.de/index.php?thread/72014-basic-v2-interpreter-compiler-in-für-java/
    BASIC V2 Interpreter/Compiler in/für Java



  • It0101 schrieb:

    Die Anforderungen an die Syntax sind niedrig:

    - Prozeduren/Funktionen
    - Grundrechenarten/Klammern/Funktionsaufrufe
    - Verwendung externer Konstanten
    - Aufruf externer Funktionen
    - bisschen Logik, keine Schleifen, nur Wenn-Dann

    Nun suche ich eine Syntax(!) die für Nutzer geeignet ist, die mit Programmierung nicht viel am Hut haben, aber generell nicht auf den Kopf gefallen sind.

    Hat jemand auf Anhieb eine Idee?

    Für mich schwer zu sagen, denn mit die wichtigsten Eigenschaften nennst du gar nicht:

    Typsystem? Erweiterbares Typsystem? Oder Feste Datentypen (welche?)

    Nur statische Variablen oder auch automatische?

    Variablen-Scoping? Namespaces?

    Pass by Reference oder auch by value?

    Externe Funktionen und Konstanten nur per Include? Oder aus anderen Objectfiles?

    Rekursive Funktionen?



  • Danke erstmal für eure zahlreichen guten Vorschläge. Ich muss das jetzt erstmal alles durcharbeiten und überlegen wie ich verfahre 🙂 Ihr habt mir ja ne Menge Stoff geliefert 😉


Anmelden zum Antworten