我认为您基本上是正确的。语言运行时已经是一个完全灵活的数据驱动系统。它接收一条数据(程序),并使用它来确定它应如何作用于其他数据。它甚至可能有一个多用户方案来存储代码,以供其他程序重新使用(从包含路径到适当的安装管理)。
粗略地说,“脚本语言”是一种语言运行时,其中此代码输入是人类可读的。编译器在用户和运行时之间增加了一个额外的步骤。诸如Malbolge 和APL之类的“笑话”语言不需要任何形式的人类可读性。但这在一个层面上都是一样的,而且人类可读性并不意味着所有潜在的用户都有阅读或编写它的技能,或者可以期望开发它们。
有充分的理由说明为什么您通常不直接向最终用户公开语言运行时。主要的是消除灵活性会增加便利性。
如果我想输入SO帖子,我只想输入。我完全有能力编写一个C ++程序来输出它,但是我不会使用公开C ++程序编辑器而不是常规文本框的Web浏览器。不了解C ++的人不仅不会使用浏览器,而且不会使用。
如果我想配置某些业务参数,那么我并不一定要使用图灵完备的规范语言来做到这一点,即使我这样做,也可能与在其他任何编程中“硬编码”那些相同的业务参数没有区别。语言。您仍然需要考虑您所写的内容是否意味着您想要的意思。您仍然需要测试更改是否正确。也就是说,对于那些具有一定编程技能的人来说,他们仍然需要编程技能来完成这些琐碎的事情,这些人确实具有编程技能,他们为您配置(“使用”)准备了专门的子系统(“应用程序”)。
因此,如果您打算使用100%数据驱动的系统,只要提供正确的数据就可以执行任何操作,那么您有两个问题要问自己:
- 我们是在发明编程语言吗?
- (为了我们的目的)我们的新编程语言是否会比我们现有的更好,并且我们会根据需要支持和开发它吗?
有时答案是肯定的,并且您编写了某种特定于域的语言。如果您是Sun / Microsoft / Stroustrup / van Rossum /其他许多人,甚至是真正的通用编程语言。有时答案是否定的,而您却具有“内部平台”的作用-经过大量的努力和反复试验,您最终得到了一些回报。如果幸运的话,它只比您使用它编写的编程语言稍差,并且使用起来并不容易。
某些语言比其他语言更难或更容易使用,特别是如果它们专门用于R之类的目的,那么某些用户会发现它们更加容易。您可能不会做的是从根本上简化常规应用程序的编程。在任何时候,世界上可能有几个人/组织有这样做的潜力,但是您的老板/公司必须诚实地考虑是否包括他/您。
游戏中经常使用一种技巧,即将Lua绑定公开给游戏引擎。这使设计人员可以使用相对简单的语言进行编程,但在性能或访问引擎或平台的特定功能所需的地方,仍可以聘请“真正的”程序员。就引擎而言,最终的Lua脚本是“数据”。与配置数据相反,它们并不需要全部包含您称为“逻辑”的内容,并且通常它们几乎可以定义所有情节和环境,而不是整个游戏过程。这不是100%的数据驱动,当然也不是100%的无错误,但这是一个有趣的实际折衷方案。