格式与语言

时间:2009-02-20 11:33:01

标签: programming-languages binary

关于SO宇宙的Elsewhere风暴已经持续了一段时间。关于人类是否应该喜欢某些东西,他们可以阅读与他们无法做到的事情。这让我在经过长时间的中断之后把我的思维帽拿出来,为开明的人提出了一个问题:

  

格式何时演变为特定于域的语言?或者,我如何决定是否需要人类可读格式或域特定语言。我想到了PostScript引发的这一切。

PS:请原谅; mod-down / close如果已经问过这个问题。 PPS:当我说语言时,我的意思是指具有条件,循环等的编程语言。

2 个答案:

答案 0 :(得分:2)

真的取决于人类为什么要阅读它。

机器生成时,很多可能的可读格式(例如HTML)可能非常难以阅读。

无论如何,真正的程序员在早餐时阅读核心转储: - )

关于语言问题,这将取决于定义(并且“DSL”没有明确定义)。我会说需要一个执行元素(如何模糊),如果它只是数据的二进制序列化,那么我就不会称之为语言(例如许多栅格格式)。


进一步考虑这一点,这里似乎存在两个相互关联的问题:

  • 文本(可能是人类可读)或二进制(对于人类读者来说非常难)更好(在那里有完整的不可操作性方面)。
  • 格式何时成为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引发的这一切。

每种格式都可以看作是一种语言。因为它需要规则来理解消息。计算机可读语言需要完全指定,没有错误的解释空间。

所以你可以说他们不需要进化,因为他们已经是语言。

我使用了以下定义:

  • HRF(人类可读格式),几乎所有书面格式。
  • DSL(域专用语言),用于单一用途的语言。

如果将语言定义限制为仅包含包含循环和分支的编程语言。故事发生了变化。简单的INI文件不需要这些结构。但宏语言确实如此。所以你可以说只有描述行为的语言(序列,基于数据的分解)才有可能发展成一种语言。