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

时间:2008-12-14 21:16:02

标签: language-agnostic

Javascript:好的部分是一本很棒的书。我常常从语言设计师的角度来阅读以下段落:

  

undefinedNaN不是常量。它们是全局变量,您可以更改它们的值。这应该是不可能的,但事实确实如此。不要这样做。

外卖:

  1. 请勿在我的Javascript代码中更改undefined的值。
  2. 在设计语言时,请将其等效于undefined不可变。
  3. 另一个更微妙的例子是“for in不应该枚举原型属性”。

    我想要一本关于特定语言背景下的语言设计问题的书。

    如果您尝试设计“完美”的OO语言,您会阅读哪些书籍作为指导?

5 个答案:

答案 0 :(得分:8)

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

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

http://lambda-the-ultimate.org/papers

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

答案 1 :(得分:6)

您可以从与Java,Ruby,Objective C等相同的位置获取页面,然后查看Design Priciples Behind Smalltalk。其中大部分是关于对象之间通信的基础材料,而不是特别关于Smalltalk的任何内容。

至于关于语言设计的真正有思想的书籍,我认为The Design and Evolution of C++绝对值得一提。我犹豫,因为你说你想要“完美”的OO语言,而C ++远非完美。不过,你可能还是可以从中学到很多东西。

你提出的观点似乎与Principle of Least AstonishmentRule of Least Surprise有关,而不是与语言内部设计有关。

答案 2 :(得分:4)

The Design and Evolution of C++很好。

Object-Oriented Software Construction也是。

它们特定于语言(C ++,Eiffel),但有很多与语言无关的课程。

答案 3 :(得分:1)

您可以查看Perl6

的设计文档

Perl6 Synopsis

如果您阅读Synopsis 6,您会发现添加运算符的名称为:

  • infix:<+>
  • infix:«+»
  • infix:<<+>>
  • infix:{'+'}
  • infix:{"+"}

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

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

答案 4 :(得分:0)

有很多书籍解释了广泛使用的语言中应用的设计原则,但如果你真的想要“理解”设计原则,你应该深入挖掘。我肯定会推荐franklyn turbak "Design concepts in programming languages"。本书试图系统地探索基于它的数学基础的编程语言概念。