几个月前,我在CSDN上发表了一篇短文,叫《风格的选择》。在那篇文章里,我提出一个观点:面对不同应用领域和环境,C++的开发者应该主动剪裁语言,选择最合适自己领域的C++子集进行具体开发。这是从我的实际工作中总结出来的想法,始终只是一种经验主义的东西。我觉得这是正确的选择,但是如果有人问我为什么,我自己也深感困惑,无法回答。最近一段时间,因为工作方向的调整,我逐渐偏向低层技术,对于计算机体系结构、操作系统等以前不太注意的领域投入了相当大的精力学习,逐渐对上面那个曾经令我困惑的问题有了一些想法,并且对我之前的观点有了进一步的扩展。我想在这里再次拿出来,与大家探讨。
首先要说明的一点是,语言绝对不是一个无关紧要的问题。很多人喜欢引述的一句话是:编程语言只是工具,关键是背后的算法和思想。这种说法起源于某些讲授算法的资料。应该说,对于算法描述来说,语言之间的差异是无关紧要的,但是现代的编程语言并不仅仅是用来表述算法的工具,更重要的是作为构件单元来构造系统。语言的能力、表达风格、思维方式、特性以及习惯用法将在很大程度上决定系统的架构、功能和基本特点,决定人们设计和生产软件的方式。因此,我们才有必要始终对编程语言的发展报以巨大的关注。按照我一个朋友的说法,编程语言始终是计算机领域中最本质的东西之一,特别是在计算机工程(而不是科学)领域中,“用什么形式来控制机器”始终是一个核心问题。
说实在的,这个话题很大,我也想到了很多东西。但是我没有足够的时间来详细解释,更没有时间精心组织这些观点。所以,在这篇文章里,我只是简单地罗列和阐述我的基本观点。我相信真正对这个话题感兴趣的朋友不会介意这样的形式。李泽厚曾经说&