auf der Suche für wissenschaftliche Beweise für die Vorteile der Verwendung einer DSL

StackOverflow https://stackoverflow.com/questions/1625608

  •  06-07-2019
  •  | 
  •  

Frage

Greg Wilson ' s talk "bits of evidence" ( http://www.slideshare.net/gvwilson/bits-of-evidence-2338367 ) beschreibt das fehlen von beweisen, die hinter den folgenden Ansprüche, Martin Fowler hat erweiterte als Vorteile der Verwendung einer DSL:

"[mithilfe eines domain-sepcific Sprache] führt zu zwei wichtigsten Vorteile.Die erste und einfachste ist die verbesserte Produktivität der Programmierer.Die zweite ist ......die Kommunikation mit den domain-Experten." - Martin Fowler in IEEE Software, Juli/August 2009

Frage:Gibt es empirische Studien, welche belegen, entweder eine verbesserte Produktivität der Programmierer oder eine verbesserte Kommunikation mit den domain-Experten aus über eine DSL?

Viele Menschen bauen DSLs sind nicht in der Lage zu bieten eine mit Gründen versehene Antwort auf die Frage "warum bauen Sie einen DSL?" und "warum sollte ein DSL-helfen Sie mehr als eine gut ausgearbeitete object model?"

Ich höre eine Menge von "ich mache es, weil es cool ist und jeder andere wird es tun" - das ist keine rationale Antwort.

Ich glaube, dass DSLs sind hilfreich, zumindest einige Zeit, aber Sie sind wahrscheinlich nicht eine "silver bullet", die wahllos verwendet werden.Ich möchte sehen, wie einige wissenschaftliche arbeiten, die beschreibt, Wann DSLs sollten und sollten nicht verwendet werden - basierend auf empirischer Forschung.

Andere Tipps

Es hängt davon ab, was Sie für ein DSL sein.

Zum Beispiel ist CSS ein DSL? Ich würde denken, ja, dann offensichtlich kann es einfacher machen, eine Seite stylen, wie in HTML 3 wir Tabellen für Anordnungen verwendet, und habe nicht die Flexibilität, die wir jetzt tun.

Wenn Sie einen DSL haben, so können die Schüler Moleküle entwerfen nur die Atomsymbole (H20) verwenden, dann wäre es einfacher, als die Codierung selbst zu tun, wie Sie schnell auf der molekularen Konfiguration aussehen können, wenn Sie die Symbole und Typen geben von Bindung, zum Beispiel.

Ich weiß nicht, von einem Papier zeigt eine oder andere Weise, aber, wenn Ihre Zielgruppe nicht Programmierer, dann wird ein DSL Sinn macht, so können wir Wirtschaftsprüfer haben ihre Anwendung zu schreiben, indem sie ihre Terminologie, anstatt sie mit gibt Anforderungen an den Entwickler.

DSLs haben für eine lange Zeit um, sind aber jetzt immer beliebter, so wird die Zeit zeigen, wenn es mehr Beispiele für gute und schlechte Verwendungen sind, wann ist es am besten, es zu benutzen, und wenn es wirklich schädlich. Ich würde nicht medizinische Monitoring-Software schreibe mit jedem DSL, zum Beispiel.

Die ganze Prämisse der „wissenschaftliche“ in diesem Fall ist zweifelhaft. Es gibt einfach keine Möglichkeit, die Kriterien von „reproduzierbar“ zu gewährleisten, „Kontrolle (Gruppe)“ für eine empirische Studie erforderlich.

Im Großen und Ganzen im Geschäft Programmierung gibt es keine ernsthaften empirischen Studien über die Vorteile von etwas vor dessen verwendet werden. Ob das SQL, objektorientierte Sprachen, funktionale Sprachen, Müllabfuhr, etc.

neigen dazu, diese Dinge durch den Markt im Laufe der Zeit entschieden werden.

Warum dies der Fall ist, ist wahrscheinlich eine Kombination aus zwei Gründen. Eine davon ist, dass es sehr teuer ist, eine gute empirische Studie zu erhalten und es ist viel billiger aus ökonomischer Sicht zu probieren Sie es einfach. Die andere sind, dass jede Situation anders ist, so eine empirische Studie mit Begrenzung des Problems untersucht beginnen würde sehr eng um einen angemessenen Vergleich zu haben, zwischen einem DSL und nicht eines verwenden, und das Endergebnis der Studie wäre nicht sehr sein nützlich über die spezifische Art von Problem, das gewählt wurde.

ich denke, wir sicher aus eigener Erfahrung sagen können, dass nichts eine silberne Kugel ist, und für einen Ansatz auf einen guten Grunde beharren wird jede Lösung besser machen, denn selbst wenn ein DSL eine Situation helfen würde, wenn Sie nicht wissen, warum Sie tun es, Sie werden nicht wissen, wenn Sie es richtig machen und das ganze benifit am Ende fehlen können.

Dies ist eine vernünftige Frage, und ich denke, es gibt definitorischen Probleme, wie zum Beispiel: „Was ist ein DSL“? Wenn ein buzword wird „heiß“ wird es eine Gelegenheit, Marketing und wird von zugrunde liegenden Wissenschaft geschieden, wenn es irgendwelche gibt.

Vor einigen Jahren schrieb ich ein Buch (Better Anwendungen Erstellen, ISBN 0-442-01740-5, lange vergreifst), wo ich versuchte, in der Leistung zu suchen, nicht nur Programme, sondern von Programmierern. Ich habe versucht, es zu betrachten Informationstheorie verwendet wird.

kam ich mit einem rohen Maße an Wartbarkeit, wo ein Problem als Wissensstruktur Kopf in jemandem existiert (kein Problem für einen KI Kerl so zu sagen), und seine Lösung existiert als Textstruktur von einer Maschine verarbeitet. Was ich sehe ist die Beziehung zwischen diesen beiden Strukturen. Wenn beispielsweise eine Veränderung der psychischen Problembeschreibung auftritt, wie viele Änderungen am Quellcode erforderlich, dass an den Programmtext korrekt zu übertragen? Ein einfacher Weg, das zu messen ist, den Code zwischen vor und nach diff. Nun, im Durchschnitt, dass die Maßnahme über den Raum von Veränderungen, die wahrscheinlich sind, und desto geringer ist der Durchschnitt ist, desto mehr wartbar ist die Quellcode.

Meine These war, dass der mehr wartbaren Code ist, durch diese Maßnahme kommen, je mehr sie das mentale Modell der Domäne ähneln, so dass es sinnvoll ist, zu nennen es mehr „problemorientiert“ oder mehr „domänenspezifische“ . Ein Merkmal ich solcher Code aufgefallen ist, dass es dazu neigt, mehr eine zu Aussage des Problems, sondern als eine Lösung des Problems. Die Lösung liegt nicht in der Sprache, aber in der Umsetzung der Sprache, die Unterkonstruktion. Dies ist ein Echo, wenn auch nicht eine direkte Vereinbarung mit dem Konzept der „deklarative“ vs. „Imperativ“ Sprache.

Also bei dem Versuch, Ihre Frage zu beantworten, würde ich sagen, lassen Sie uns weg von dem, was die Leute wollen könnte „DSL“ bedeuten und zu einer Definition suchen, anstatt die mäßig eindeutig zumindest ist.

Im Rahmen diese Idee zu entwickeln, ich auf einer Reihe von Techniken gestolpert war, eine davon ist Differential Execution , die für die Codierung UIs gute Wartbarkeit zu geben scheint, und auch um etwa eine Größenordnung Quellcode Größe reduziert. Meine Theorie ist, dass das ist ein erfolgreiches Beispiel dafür, was ein DSL sein könnte.

Ich behaupte nicht, dass die Wartbarkeit kann, ohne den Betreuer erreicht werden, die eine Lernkurve zu klettern. Ich glaube, echte Wartbarkeit zu einem Preis von Programmierern kommt mit Dingen zu lernen, die nicht leicht sein könnten, zu begreifen, aber einmal begriffen hat, um den gewünschten Wert.

Von Linguisten Saphir und Worf, können wir lernen, dass grammatische Merkmale einer Sprache unser Denken beeinflussen = wenn Sie einen DSL erstellen, werden Sie mehr domänenspezifische und wahrscheinlich weniger für allgemeine Zwecke zu denken. Es geht um die Abstraktion, wie Allzweck-Programmiersprachen zu abstrahieren neigen dazu, aus der Maschine, so dass wir in der Lage, mehr auf Algorithmen, Strukturen und Design als auf Befehlssatz, Adressierungsarten zu konzentrieren, registrieren Größen etc.

Nicht so sicher, dass jemand irgendwelche Studien in dem Umfang durchgeführt, die Sie benötigen. Meine Erfahrung ist aber, dass ein DSL kann teuer werden an erster Stelle (möglicherweise 2X oder mehr Aufwand als ein einfaches Objektmodell, das Gleiche zu tun) zu erstellen. Allerdings erstellt, sobald die Entwickler durch die Möglichkeit, unmittelbaren Nutzen Dinge zu tun, schneller mit dem DSL als mit dem Modell bekommen würden.

Das Problem mit der Frage ist, es ist alles DSLs als gleich zu behandeln. Einige würden einfacher zu implementieren sein, andere härter -. Ob ein Fluent Interfaces / Interner DSLs oder externen DSLs tut zu unterschiedlichen Zeiten / Kosten führen würde zu implementieren

Die eine Hauptvorteil, der durch solche Studien möglicherweise nicht abgedeckt wird, ist die Leichtigkeit, die ein DSL zum Ausdruck zu bringen und Umsetzung von Code führen kann. Es kann auch anderen helfen, die Absicht des Codes verstehen möglicherweise einfacher - und da Wartungsphase von Software-Entwicklungszyklus ist so eine große Komponente des SDLC könnte dies zu weit größeren Nutzen führen (auf lange Sicht) als ursprünglich bei der Schaffung des DSL verloren .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top