C++ 是最好的编程语言

Posted on November 4, 2017

好的语言是怎么来的? 有人说, 是设计出来的, 有人说, 是抄出来的. newbie 说, 是实践来的.

什么是实践呢? 实践, 就是摸石头过河, 吸收合适的, 抛弃不合适的. 这不就是进化吗?

正如好的物种是进化来的一样, 好的语言也是进化来的.

物种的进化, 首先是要适应已有的环境, 然后才是展望未来, 设法适应未来的环境. 即使某些功能器官已经不再需要, 仍然保留着进化的痕迹. 进化是不可逆的. 如果一开始因为环境因素, 进化出的生物特性在后来的环境变化中是非常有害的, 进化却不能推倒重来. 只能继续在这个不利的基础上改进.

认识到这一点, 再回过头来审视 C++ 语言. C++ 语言的许多缺陷, 来自对 C 的兼容, 或者确切的说, 是因为从 C 语言开始进化的, 对C的兼容, 就是进化的痕迹. 进化不能推倒重来, 只能在 C 这个不利的基础上改进.

但是, C 的不利, 是站在今天的角度看的. 在当时, C 是最成功的语言. 兼容 C, 是最有利于发展的. 从 C 开始进化, 在当时就是最好的选择. 而进化, 就是当年最优秀的物种才得以继续发展演化.

C 当年是最好最成功的语言, 那么进化就会发生在 C 的身上, 而不是其他语言的身上. 正如远古的猿类进化成了人, 同时也进化出了猴子一样, 远古的 C 语言进化出了 C++, 也会有顽固分子选择止步不前, 就有了现在的 C. 猴子当然不如人, 但是猴子也会存在. 所以 C 会继续存在. 但是真正的发展是看C++的.

C++ 的进化, 是采用”遗传学算法” 进行的. 遗传学算法, 需要一个是否更适用的判定函数, 和一个随机发展的过程函数. 每一个发展, 都是在原有的基础上进行迭代, 然后送入判定函数. 每一次迭代, 都会保留既有的成分.

C++的发展函数, 靠的是社区大量提交的提案.而判定, 则交给标准委员会的人投票表决. 提案首先要经过一个硬指标, 就是 C++ 之父设定的 零开销原则和兼容 原则. 而后才能进入是否更符合现代的软件工程实践的讨论中去.

因此, 社会的发展, 对语言的需求, 推动了C++的发展, C++ 一直在适应不断变化的市场, 而唯一不变的, 是 “零开销和兼容上一个版本”. 因此, 零开销和兼容 才是C++的根本, 其他的语法糖, 都是进化的痕迹.

C++ 是进化来的, 不可避免的会携带历史的包袱, 可正是因为他是进化来的, 他会携带的不仅仅是历史的包袱, 还有历史的财富. 丢弃包袱, 常常意味着放弃了财富, 我们的社会从来都不倾向于白手起家. 没有财富, 就要从头积累.

问题是: 谁能积累的有 C++ 多?

Comments