Domain Specific Languages



  • Für eine Arbeit soll ich eine DSL entwerfen. Problem an der Sache:
    Ich habe keinerlei Ahnung von domainspezifischen Sprachen, sondern kenne mich nur mit der Domain aus.

    Also bräuchte ich ein paar Tipps, wie ich an die Sache herangehen könnte. Ich habe noch etwa einen Monat Zeit, bis das Projekt überhaupt anfängt, so dass ich mich noch vorbereiten kann.


  • Mod

    Welche Erfahrungen hast du denn? Programmieren gehört hoffentlich dazu. Hast du viel mit anderen Sprachen für dein Gebiet programmiert? Da sind doch sicherlich irgendwelche Muster öfters aufgetreten. Das sind dann die Dinge, die die Sprache bieten sollte. Kennst du deine Zielgruppe? Davon kann abhängen, wie schwierig deine Sprache zu lernen sein darf.

    Dein Beitrag ist leider so allgemein, dass man dir kaum irgendwie konkret helfen kann. Du hättest in einem Handwerkerforum wortwörtlich fragen können "Ich soll einen Gegenstand herstellen. Mit dem Gegenstand kenne ich mich aus, aber mit Herstellung nicht. Hat jemand ein paar Tipps?" und die Leute dort wären dann genau so schlau wie wir zu deiner DSL.



  • Es geht um partielle und gewöhnliche Differentialgleichungen und Quellcode-Transformationen.

    Wir möchten neue Testsets aus einem mathematischeren Eingabeformat (eben der DSL) einlesen, daraus C++-Quellcode erstellen und diesen mit Hilfe von Schleifentransformationen und Autotunigtools architekturspezifisch optimieren.

    Es gibt schon einige Ansätze zu dem Thema, aber jetzt keinen "Standard".
    Wir möchten vor allem unseren Mathematikern eine einfache Sprache bieten, in der sie ihre Simulationen einfach beschreiben können. Diese Sprache soll dann als Grundlage für Quellcode-Erzeugung dienen, an denen vor allem wir Programmierer arbeiten.



  • Dann wäre es doch besser, wenn dir die Mathematiker sagen, wie die Sprache aussehen soll (technische Details dazu kann man ja später noch verfeinern).



  • Th69 schrieb:

    Dann wäre es doch besser, wenn dir die Mathematiker sagen, wie die Sprache aussehen soll (technische Details dazu kann man ja später noch verfeinern).

    Ja, ich bekomme demnächst ein Testset. Aus diesem kann ich mir hoffentlich ableiten, wie die Sprache aussehen sollte.
    Ich weiß nur nicht, wie und womit ich daraus dann eine Sprache bastle. Ich bin eigentlich eher Numeriker als Software-Ingenieur.

    Ich habe von Xtext , MPS und ähnlichem gehört, es aber noch nie verwendet.

    ALso ist meine Frage vielleicht:

    Mit welchem Werkzeug sollte ich versuchen, eine DSL für die Differentialgleichungen zu erzeugen, wenn ich weiß, wie Eingabedateien in etwa aussehen können.

    Das das nicht von ANfang an perfekt sein wird, ist klar. Von daher sollte etwas gewählt werden, mit dem sich die Sprache auch nachträglich noch in kompatibler Art und Weise anpassen lässt.

    Um mal ein ganz einfaches Beispiel zu bringen, das ich mir gerade aus den Fingern gesaugt habe:

    dy/dt = 2*y + t
    

    So könnte eine minimale Beschreibung für eine ODE aussehen. Kann ich mit sowas schon was anfangen?

    Fpür PDEs erwarte ich, dass die Diskretisierung schon in der Eingabe vorgenommen wurde.



  • DSL schrieb:

    Ich habe von Xtext , MPS und ähnlichem gehört, es aber noch nie verwendet.

    Hast du auch schon etwas von Depot4 gehört? -> http://www.tools.vlampe.de/depot4/index.html

    Depot wurde in den 70er Jahren von Akademikern (Mathe) an der TU Dresden für Akademiker entwickelt, im Laufe der Zeit auch für algemeinere Zwecke verwendet. Mit Depot4 kann man nicht nur den Quelltext beschreiben, sondern auch den Zieltext. Es ist also nicht nur ein Parsergenerator, sondern ein Generator für eine Tranformation:

    Quelltext (in Sprache A) -> Zieltext (in Sprache 😎


Anmelden zum Antworten