有很多关于好的网页设计、UI设计等的书籍。随着Xtext的出现,编写自己的语言变得非常简单。关于语言设计的好书和资源是什么?
我不是在找一本关于编译器构建(比如龙书)的书,而是一些能回答以下问题的书:
发布于 2012-03-20 16:58:28
在设计语言语法时,你有各种各样的选择,这实际上是一个品味问题,而不是工程问题。如果您想要一种经过尝试的、经过测试的和熟悉的语法,可以选择一种或三种语言。如果你想探索和发明一些新的东西,潜在的陷阱的范围也是如此之广,以至于现有的例子可能没有帮助。
比较语言设计书有着悠久的传统,它提供了一些当代语言的选择--附有评论,但一般不会有太多的结论。尽管如此,你可能会做更糟的事情,而不是找到一个大学工程图书馆,并通过其中的几个。
此外,请记住语法可以说是语言中最不重要的方面。更重要的方面包括:类型系统、模块系统、大型系统的支持、名称范围、抽象、语义、资源管理、并发等问题。
另外:语言设计与进化的原则是埃菲尔设计师Bertrand的一篇关于编程语言设计的网站文章(约1999年版)。
它注重简单性和一致性,但具有实用优势。有趣的是,Meyer对语法的看法是,它实际上非常重要。除了支持实际用户的实际方面外,他还指出,不能令人满意的语法常常是指向更深层次的语义问题的指针。
发布于 2012-03-20 16:56:40
我不知道有一本规范的书。这可能是因为设计最佳实践可能是特定领域的。数学家的语言应该看上去很像数学,化学家的语言应该看上去很像化学,等等。在一个领域里没有意义的东西在另一个领域是必不可少的。
例如,我为网络设备编写软件,它有自己的配置语言。足够直观地,关闭端口的命令是shutdown。但是,启用端口的命令是no shutdown。对我来说,这是有史以来最愚蠢的设计,但从历史的角度来看,这对我们的用户来说是非常自然的。
记住,除非你是目标人群中的人,否则你可能是设计语言最糟糕的人。你会倾向于想要一个高效的语法,或者简单的实现,或者与你所知道的编程语言的一致性,但是用户并不关心这些事情。从阅读最终用户所写的东西开始,并根据可解析性、一致性和消除歧义等标准,认为您的工作是精益求精的。
例如,我目前正在开发一种语言,用于跟踪与钢笔和纸角色扮演游戏相关的所有数字。我不是从语法开始,也不是看我可以适应的其他编程语言,而是从现有出版的规则书中如何描述这些数字开始。他们有很多短语,比如“畏缩时对盔甲类的惩罚”,所以我的语法就是这样的,比如penalty、to和when是关键词。显然,要使它被计算机读取,必须有一些限制,但大多数情况下,用户只需稍作修改就可以直接从规则簿中复制。
https://softwareengineering.stackexchange.com/questions/140611
复制相似问题