Ich denke, dass Sie im Grunde richtig sind. Eine Sprachlaufzeit ist bereits ein vollständig flexibles datengesteuertes System. Es nimmt ein Datenelement (das Programm) und verwendet es, um zu bestimmen, wie es auf andere Daten reagieren soll. Es kann sogar ein Mehrbenutzerschema zum Speichern von Code für die Wiederverwendung durch andere Programme geben (von einem Include-Pfad bis zur ordnungsgemäßen Installationsverwaltung).
Eine "Skriptsprache" ist grob gesagt eine Sprachlaufzeit, in der diese Codeeingabe für Menschen lesbar ist. Ein Compiler platziert einen zusätzlichen Schritt zwischen dem Benutzer und der Laufzeit. "Scherz" -Sprachen wie Malbolge und APL müssen in keiner Form für Menschen lesbar sein. Auf einer Ebene ist es jedoch alles dasselbe, und für Menschen lesbar bedeutet dies nicht, dass alle potenziellen Benutzer über die Fähigkeiten verfügen, es zu lesen oder zu schreiben, oder dass von ihnen erwartet wird, dass sie es entwickeln.
Es gibt gute Gründe, warum Sie eine Sprachlaufzeit normalerweise nicht direkt Endbenutzern zur Verfügung stellen. Das Wichtigste ist, dass das Entfernen der Flexibilität den Komfort erhöht.
Wenn ich einen SO-Beitrag eingeben möchte, möchte ich ihn nur eingeben. Ich bin durchaus in der Lage, ein C ++ - Programm für die Ausgabe zu schreiben, aber ich würde keinen Webbrowser verwenden, der einen C ++ - Programmeditor anstelle eines normalen Textfelds verfügbar macht. Leute, die C ++ nicht kennen, würden den Browser nicht nur nicht benutzen, sondern auch nicht.
Wenn ich bestimmte Geschäftsparameter konfigurieren möchte, möchte ich dies nicht unbedingt mit einer Turing-vollständigen Spezifikationssprache tun, und selbst wenn ich dies getan habe, ist dies wahrscheinlich nicht von der "Hardcodierung" derselben Geschäftsparameter in irgendeiner anderen Programmierung zu unterscheiden Sprache. Sie müssen sich noch überlegen, ob das, was Sie schreiben, das bedeutet, was Sie möchten. Sie müssen noch testen, ob die Änderungen korrekt sind. Das heißt, Sie müssen noch Fähigkeiten für alle Aufgaben der Programmierung , die nicht trivial sind und nicht von jemandem erwartet , die nicht Programmierkenntnisse haben , die ein spezielles Untersystem vorbereitet ( „Anwendung“) für Sie zu konfigurieren ( „use“).
Wenn Sie sich also auf ein zu 100% datengesteuertes System einlassen möchten, das mit den richtigen Daten alles kann, müssen Sie sich zwei Fragen stellen:
- Sind wir im Geschäft, Programmiersprachen zu erfinden, oder sollten wir es sein?
- Wird unsere neue Programmiersprache (für unsere Zwecke) besser sein als die, die wir bereits haben, und werden wir sie nach Bedarf unterstützen und entwickeln?
Manchmal lautet die Antwort ja und Sie schreiben eine domänenspezifische Sprache. Oder sogar eine echte Allzweck-Programmiersprache, wenn Sie Sun / Microsoft / Stroustrup / van Rossum / viele andere sind. Manchmal sind die Antworten nein und Sie haben den "inneren Plattform" -Effekt - nach viel Mühe und Versuch und Irrtum haben Sie etwas. Wenn Sie Glück haben, ist es der Programmiersprache, in der Sie es geschrieben haben, nur wenig unterlegen und nicht einfacher zu bedienen.
Einige Sprachen sind schwieriger oder einfacher zu verwenden als andere, insbesondere wenn sie auf einen Zweck wie R spezialisiert sind, werden sie einige Benutzer viel einfacher finden. Was Sie wahrscheinlich nicht tun werden, ist die grundlegende Erleichterung der Programmierung allgemeiner Anwendungen. Zu jeder Zeit gibt es wahrscheinlich mehrere Personen / Organisationen auf der Welt, die das Potenzial dazu haben, aber Ihr Chef / Ihre Firma muss ehrlich überlegen, ob dies ihn / Sie einschließt oder nicht.
Es gibt einen Trick, der oft für Spiele verwendet wird, nämlich Lua-Bindungen für die Spiel-Engine freizulegen. Dies ermöglicht Entwicklern, in einer relativ einfachen Sprache zu programmieren, bei Bedarf jedoch einen "echten" Programmierer für die Leistung zu engagieren oder auf bestimmte Funktionen der Engine oder der Plattform zuzugreifen. Die resultierenden Lua-Skripte sind "Daten" für die Engine. Sie alle müssen nicht viel von dem beinhalten, was Sie als "Logik" bezeichnen, im Gegensatz zu Konfigurationsdaten, und oft definieren sie so ziemlich den gesamten Plot und die Umgebung, aber nicht das gesamte Gameplay. Dies ist nicht zu 100% datengetrieben und sicherlich nicht zu 100% fehlerfrei, aber es ist ein interessanter praktischer Kompromiss.