Je pense que vous avez fondamentalement raison. Un environnement linguistique est déjà un système entièrement flexible piloté par les données. Il prend une donnée (le programme) et l'utilise pour déterminer comment il doit agir sur les autres données. Il peut même avoir un système multi-utilisateurs pour stocker du code pour une utilisation ultérieure par d’autres programmes (allant d’un chemin d’inclusion à une gestion d’installation appropriée).
En gros, un "langage de script" est un langage d'exécution dans lequel cette entrée de code est lisible par l'homme. Un compilateur place une étape supplémentaire entre l'utilisateur et le moteur d'exécution. Les langages "Joke" comme Malbolge et APL ne doivent pas nécessairement être lisibles par l'homme. Mais c’est la même chose à un niveau, et de toute façon, lisible par l’homme ne signifie pas que tous les utilisateurs potentiels ont les compétences nécessaires pour le lire ou l’écrire, ou qu’on peut s’attendre à le développer.
Il y a de bonnes raisons pour lesquelles vous n'exposez pas normalement un environnement d'exécution directement aux utilisateurs finaux. Le principal étant que supprimer la flexibilité augmente la commodité.
Si je veux taper un message SO, je veux juste le taper. Je suis parfaitement capable d'écrire un programme C ++ pour le sortir, mais je n'utiliserais pas un navigateur Web qui exposerait un éditeur de programme C ++ au lieu d'une zone de texte normale. Les personnes qui ne connaissent pas le C ++ non seulement n'utilisent pas le navigateur, mais ne le peuvent pas.
Si je veux configurer certains paramètres métier, je ne veux pas nécessairement le faire en utilisant un langage de spécification complet de Turing, et même si je le faisais, cela ne serait probablement pas différent de la "codification en dur" de ces mêmes paramètres commerciaux dans une autre programmation. la langue. Vous devez toujours vous demander si ce que vous écrivez signifie ce que vous voulez dire. Vous devez toujours vérifier que les modifications sont correctes. C'est pour toutes les tâches qui ne sont pas négligeables et non anticipée par quelqu'un qui, vous avez encore besoin de compétences en programmation n'ont des compétences en programmation qui ont préparé pour vous un sous-système spécialisé ( « application ») pour configurer ( « utilisation »).
Donc, si vous êtes sur le point de vous lancer dans un système 100% basé sur les données, qui peut tout faire avec les bonnes données, vous avez deux questions à vous poser:
- Sommes-nous en train d’inventer des langages de programmation, ou devrions-nous être?
- Notre nouveau langage de programmation sera-t-il meilleur (pour nos besoins) que ceux que nous avons déjà et allons-nous le soutenir et le développer selon ses besoins?
Parfois, les réponses sont oui et vous écrivez un langage spécifique à un domaine. Ou même un vrai langage de programmation généraliste si vous êtes Sun / Microsoft / Stroustrup / van Rossum / beaucoup d'autres. Parfois, les réponses sont non et vous avez l'effet "plate-forme intérieure" - après beaucoup d'effort et de tâtonnements, vous vous retrouvez avec quelque chose. Si vous êtes chanceux, il n’est que légèrement inférieur au langage de programmation dans lequel vous l’avez écrit et n’est pas plus facile à utiliser.
Certaines langues sont plus difficiles ou plus faciles à utiliser que d'autres, en particulier si elles sont spécialisées dans un objectif tel que R, alors certains utilisateurs les trouveront beaucoup plus facilement. Ce que vous ne ferez probablement pas, c’est de simplifier fondamentalement la programmation d’applications générales. À tout moment, il y a probablement plusieurs personnes / organisations dans le monde susceptibles de le faire, mais votre patron / votre entreprise doit honnêtement déterminer si cela le concerne ou non.
Il existe une astuce souvent utilisée pour les jeux, qui consiste à exposer les liaisons Lua au moteur de jeu. Cela permet aux concepteurs de programmer dans un langage relativement simple, tout en faisant appel à un "vrai" programmeur, le cas échéant, pour obtenir des performances ou pour accéder à des fonctionnalités particulières du moteur ou de la plate-forme. Les scripts Lua résultants sont des "données" en ce qui concerne le moteur. Ils n'ont pas tous besoin d'inclure une grande partie de ce que vous appelleriez la "logique" par opposition aux données de configuration, et ils définissent souvent à peu près toute l'intrigue et l'environnement, mais pas le gameplay complet. Ce n'est pas à 100% basé sur les données et ce n'est certainement pas à 100% sans erreur, mais c'est un compromis pratique intéressant.