格式何时演变为特定于域的语言?或者,我如何决定是否需要人类可读格式或域特定语言。我想到了PostScript引发的这一切。
PS:请原谅; mod-down / close如果已经问过这个问题。 PPS:当我说语言时,我的意思是指具有条件,循环等的编程语言。
答案 0 :(得分:2)
真的取决于人类为什么要阅读它。
机器生成时,很多可能的可读格式(例如HTML)可能非常难以阅读。
无论如何,真正的程序员在早餐时阅读核心转储: - )
关于语言问题,这将取决于定义(并且“DSL”没有明确定义)。我会说需要一个执行元素(如何模糊),如果它只是数据的二进制序列化,那么我就不会称之为语言(例如许多栅格格式)。
进一步考虑这一点,这里似乎存在两个相互关联的问题:
虽然第一个问题在其他地方有所涉及,但它不能与后者完全分开。毕竟有以二进制格式(例如Word宏)保存的DSL,以及可以编译的DSL(例如.NET SDK包含将XSLT转换为程序集的工具)。
这让我认为提出的真正问题是:什么使得格式成为DSL。这里的问题是“DSL-ness”非常依赖于旁观者和上下文。
HTML是DSL吗? HTML是否具有事件处理程序属性,而JavaScript是DSL?第一个是有争议的,后者很难说不,因为程序代码是明确使用的。
我对此问题的初步反应是考虑成为DSL需要某种形式的定向执行。即在处理DSL时,应用程序修改其操作。经过进一步思考,这个定义过于宽泛。考虑使用无宏的Word处理应用程序。加载的文档显然主导了应用程序的状态并推动其性能。
这导致基于人类创作的第二个潜在定义,以直接在语言中指定指令以指导(或类别)应用程序。然而,这很模糊。但至少要避免WP文档成为DSL。
因此,我目前的答案:这有关系吗? DSL或格式是让计算机做事的工具,学术定义并没有真正推动这种活动。
答案 1 :(得分:1)
格式何时演变为特定于域的语言?或者,我如何决定是否需要> HRF或DSL。我想到了PostScript引发的这一切。
每种格式都可以看作是一种语言。因为它需要规则来理解消息。计算机可读语言需要完全指定,没有错误的解释空间。
所以你可以说他们不需要进化,因为他们已经是语言。
我使用了以下定义:
如果将语言定义限制为仅包含包含循环和分支的编程语言。故事发生了变化。简单的INI文件不需要这些结构。但宏语言确实如此。所以你可以说只有描述行为的语言(序列,基于数据的分解)才有可能发展成一种语言。