编程语言设计的格言

2020-12-19 02:57:55

说什么不做比做需要的事情容易。因此,不要被这份清单所阻止。 您也有一些贡献。 每一个重要的决定都是一个权衡,从来没有,而且永远不会是一种完美的语言,因为人类有很多目的,所以编程语言也必须如此。 语言的衡量标准不是它所能提供的,而是它使之变得简单的方法。 因此,一种语言最强大的特性就是使它自动运行:使用该语言时,您不必考虑什么? 有约束力。 一门语言做得越少,可以做的越多。 类型是思想的工具,它们首先存在于思想中,其次存在于机器中。 因此,静态类型的语言将指导您的思考。 这很有用。 动态类型的语言使您可以自由思考。 这也很有用。

最好代码透明易读而不是方便编写。对于一键式脚本而言,这并不重要,而对于许多人倾向于使用的大型代码库而言,这则更为重要。

简短既有利又损害可读性。一次只能容纳这么多东西。简洁的表示法更适合;它有助于阅读和识别模式。但这也会使学习曲线变陡,并增加内存负荷。

当然,这是一个相对条件:与什么无关?与谁无关?我们经常认为语言是比其他语言低或高的语言。实际上,它们低于或高于某些问题。

当将可读性优先于可写性时,显式性很好。当需要注意无关紧要的内容时,显式性很差。

并非所有事物都是对象。也不都是函数,字符串,进程,actor,值,thunk,消息,列表,文件或表达式。不是所有的东西都是数据,也不是所有的代码。注意,一切都是惰性的,不变的,纯净的,可复制的,可序列化的,可排序的或可通过网络传输的。 goto不是唯一的控制运算符,call / cc也不是。

媒介很重要。考虑程序员如何与您的语言或系统进行交互。他们会使用文本文件吗?一个REPL?如地狱?一个IDE? GUI?电子表格?结构编辑器?浏览器?语言设计应与可用的交互方法保持一致。例如,压痕敏感度非常适合于面向行的交互式外壳。

适用于语言的适用于图书馆。例如,考虑可预测性如何击败便利性可能适用于数字图书馆的设计。

性能很重要。 语法很重要。 文档很重要。 图书馆很重要。 文化很重要。 先发优势很重要。 兼容性很重要。 企业支持很重要。 错误消息很重要。 但是最后,关于语言流行度只有两件事可以肯定: 语言教授解决问题的方法。 一旦知道了方法,您就不再需要这种语言。