代码之家  ›  专栏  ›  技术社区  ›  dirkgently

格式与语言

  •  1
  • dirkgently  · 技术社区  · 16 年前

    Elsewhere 在这样的宇宙中,一场风暴已经肆虐了一段时间。关于人类是否应该喜欢他们能看懂的东西,而不是他们不能看懂的东西。这让我在长时间的休息之后,拿出我的思考帽,向开明者提出一个问题:

    格式何时演变成特定于域的语言?或者,我如何决定我是想要一种人类可读的格式还是一种特定于领域的语言。后记是引起这一切的原因。

    PS: 请原谅序言;如果已经有人问过这个问题,请关闭/关闭mod。 PPS: 当我说语言时,我真正的意思是一种带有条件、循环等的编程语言。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Richard    16 年前

    这真的取决于一个人为什么要读它。

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

    不管怎样,真正的程序员在早餐时会阅读核心转储文件——)

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


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

    • 文本(可能是人类可读的)或二进制(对人类读者来说很难)更好(其中包含整个不可操作性方面)。
    • 什么时候格式变成DSL?

    虽然第一个问题在别处被讨论,但它不能与后者完全分离。毕竟,有以二进制格式(如Word宏)保存的DSL,以及可以编译的DSL(如.NET SDK包含将XSLT转换为程序集的工具)。

    这让我想到真正的问题是:是什么让一种格式成为DSL。这里的问题是,“DSLness”在旁观者的眼中非常重要,并且依赖于上下文。

    HTML是DSL吗?带有事件处理程序属性和JavaScript的HTML是DSL吗?第一种是有争议的,而后一种是很难拒绝的,因为程序代码是绝对使用的。

    我对这个问题的最初反应是认为DSL需要某种形式的定向执行。即,在处理DSL时,应用程序修改其操作。进一步考虑,这是一个过于宽泛的定义。考虑一个没有宏的字处理应用程序。加载的文档明显地控制应用程序的状态并驱动其性能。

    这将导致基于人工创作的第二个潜在定义,以直接在语言中指定指令来指导(或类)应用程序。然而,这是相当模糊的。但至少可以避免wp文档是DSL。

    因此,我现在的回答是:这重要吗?DSL或格式是让计算机做事情的工具,学术定义并不能真正推动这种活动。

        2
  •  1
  •   Toon Krijthe    16 年前

    格式何时演变成特定于域的语言?或者,我如何决定是需要一个>HRF还是DSL。后记是引起这一切的原因。

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

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

    我使用了以下定义:

    • hrf(人类可读格式),几乎是任何书面形式。
    • DSL(特定于域的语言),用于单一目的的语言。

    如果您将语言的定义限制为只包含包含循环和分支的编程语言。故事变了。简单的ini文件不需要这些构造。但是宏语言是这样的。所以你可以说,只有描述行为(序列、基于数据的决策)的语言才有可能演变成一种语言。