在设计编程语言时,选择复杂还是简化?

大多数现代编程语言的设计更加偏向于极繁主义,快速添加新功能有助于提高竞争优势。有人认为,添加更多特性是展示进步的一种手段。然而,这种思想过于简单,忽略了编程语言要想取得成功和进步所必需的许多其他关键方面,比如容易学习、稳定性、工具支持以及性能等。

一门编程语言要想取得成功,必须拥有良好的工具支持。如果语言及其功能不断变化,那么相关的工具就需要不断更新。比如C++有很多问题,其中之一便是语法很难解析。

Rust的核心特性让人很满意,较之C/C++,Rust在很多方面都有很大的改进。然而,它也有缺点,那就是过于复杂。有人说,语法冗长,需要掌握的知识很多,有很多规则和微妙之处,并且Rust学习曲线陡峭,认知负荷较高。

有人说,编程语言应该保持简约,概念越少越好,只选择可以很好地结合在一起的原语,这样才更容易学习。

还有人说,将编程语言的复杂性和功能数量降到最低,是一种更好地尊重程序员的方式。将复杂性降到最低也是减少认知负担和尊重人类局限性的一种方式。

对此,也有人建议:
1.编程语言的创始设计不宜过大。编程语言是用户接口,是人们用来与机器交互的API。API的范围越小,引入意外复杂性和细微设计错误的风险就越小。
2.编程语言应尽可能保持简约。功能越少,出现重复的可能性就越小,同时也意味着你可以挑选能够为程序员提供最具表现力和最大价值的功能。
3.语言设计是一门艺术,体现了许多不同约束之间的微妙平衡,就像用户接口设计一样。