编程语言设计的良好资源?

Good resources on programming language design?

javascript:好的部分是一本好书。我经常发现自己从一个语言设计师的角度阅读以下段落:

undefined and NaN are not constants. They are global variables, and you can change their values. This should not be possible, and yet it is. Don't do it.

外卖:

  • 不要在我的javascript代码中更改undefined的值。
  • 在设计语言时,使其等价于undefined不变。
  • 另一个更微妙的例子是"EDCOX1×2"不应该枚举原型属性。

    我想要一本书,在一种特定语言的语境之外,讨论语言设计的这些问题。

    如果你试图设计出"完美的"OO语言,你会读什么书作为指导?


    网站"lambda the ultimate"非常关注编程语言,它们偶尔也有一些很好的资源,尽管它们对学术类的东西更感兴趣。例如,函数编程在那里很重要。

    http://lambda-the-ultimate.org/node/3

    http://lambda-the-ultimate.org/论文

    http://lambda-the-ultimate.org/node/492


    您可以从Java、露比、Objject C等其他地方获取页面,并查看SimultSalk后面的设计原则。其中大部分内容是关于对象之间通信的基础材料,而不是关于Smalltalk的专门内容。

    就有关LangouGe设计的真正周到的书籍而言,我认为C++的设计和演化绝对值得一提。我犹豫了,因为你说你想要"完美"的OO语言,C++远远不够完美。不过,你还是可以从中学到很多东西。

    然而,你提出的观点似乎更多的是与最小惊讶的原则或最小惊讶的规则有关,而不是语言内部的设计。


    C++的设计与实现是很好的。

    面向对象的软件构造也是如此。

    它们是语言特定的(C++,Eiffel),但是有很多语言不可知的课程。


    您可以查看Perl6的设计文件。

    Perl6概要

    如果您阅读摘要6,您会发现加法运算符的名称为:

    • infix:<+>
    • infix:?+?
    • infix:<<+>>
    • infix:{'+'}
    • infix:{"+"}

    这意味着您可以创建自己的运算符:

    1
    sub postfix:<!> ($n) { [*] 1..$n }

    有很多书解释了广泛使用的语言中应用的设计原则,但是如果你真的想"理解"设计原则,你应该更深入地挖掘。我当然会推荐FranklynTurbak的"编程语言中的设计概念"。这本书试图系统地探索基于它的数学基础的编程语言概念。