Was haltet ihr von Domain-Specific-Languages



  • c.rackwitz schrieb:

    r0nny, das beispiel hinkt gewaltig. zumindest die syntax, was ja ne DSL ausmacht.

    wiso hinkt es ? normalerweise gibt es TEST_GROUP(foo) sowie TEST(bar) nicht



  • sieht nach reduzierten funktionen oder macros aus. fuer testcode wuerde ich zumindest irgendeine andere syntax nehmen, falls das geht... mir ist klar, dass das mit c/c++/cpp machbar sein soll.

    meinetwegen sowas (nicht mehr c/c++/cpp):

    group foo
        test bar
            sum(1, 2, 3, 4) == 10
            product(1, 2, 3, 4) == 24
    


  • DSLs sind sehr wichtig, um sich beim Programmieren nicht mit der Programmiersprache ein Bein zu stellen. Aber im Grunde können die wenigsten Programmiersprachen vernünftig DSLs. Daher greift man auf Code-Generatoren zurück, was ich aber für keine gute Idee halte, da Code-Generatoren am Ende in der Regel unwartbaren und ineffizienten Code generieren. Lieber eine Programmiersprache, die DSLs gut beherrscht, so wie Scheme oder Common Lisp.



  • Oder eine, die sie überhaupt beherrscht, so wie C++.



  • Mr. N schrieb:

    Oder eine, die sie überhaupt beherrscht, so wie C++.

    was soll denn das heissen? zu was soll denn c++ eine alternative darstellen?



  • Mr. N schrieb:

    Oder eine, die sie überhaupt beherrscht, so wie C++.

    DSLs sind C++ sind ja eher undurchsichtige Hacks mit Template- oder gar Präprozessor-Metaprogrammierung.



  • DSLs find ich schon gut, wenn sie eindeutig unterschiedlich sind.

    Ich mache immer wieder schlechte Erfahrungen wenn ich bitte keinen Flamewar! Java programmieren muss, weil das halt fast wie C++ funktioniert an einigen Stellen, dann aber unerwartet Unterschiede auftreten.

    => DSLs gerne aber bitte nicht mit annäherndder C(++), Pascal, ... Syntax und bitte nicht untereinander die gleiche Syntax.

    Ganz schlecht finde ich auch die C++ Makro / Template DSLs, das Programm frisst weiter C++-Code, sobald einem mal eine funktion der DSL nicht bekannt ist baut man sich selber was mit C++ und das ist ja nicht der Sinn der Sache



  • ich finde dsl's die auf der sprachsyntax basieren toll - bei dynamischen sprachen ist das ein sehr mächtiges werkzeug



  • ok war von mir vll etwas unklar formuliert.

    so sachen wie das for(;;) und die {} zu übernehmen ist kein Problem, weil nicht sehr umfangreich. Das ganze wird zum Problem wenn die std-Biblioteken ähnlich sind in der Verwendung



  • Habe etwas, was ein wenig Ontopic ist.

    In der Boost-Sandbox liegt eine Library ähnlich Boost.Spirit, mit der sich jedoch eigene DSLs erzeugen lassen. Boost.Proto schimpft sich das ganze.

    Das ganze ist wie gesagt in der Sandbox, also nicht mal zu einem Review frei gegeben. Aber trotzdem vielleicht interessant, für die DSL-Fans die C++ programmieren? (ich kann pers. mit DSL nichts anfangen)

    Docu:
    http://boost-sandbox.sourceforge.net/libs/proto/doc/html/index.html

    Ein Beispiel:
    http://boost-sandbox.sourceforge.net/libs/proto/doc/html/boost_proto/user_s_guide/calculator.html


Anmelden zum Antworten