问题
为什么使用C++?
在你皱眉准备关掉这个网页之前,试着回答这样一个简单的问题。
答案是效率,是吗?每个人都知道答案。但是,我们应该以更专业的角度来讨论一种编程语言或是与之相关的事情。那么,让我再问你一个问题:效率是否是人们选择使用C++的唯一理由,为什么他们不用C呢?C的效率公认比C++高(当然,我知道,现已证明在某种程度上说,C并不比C++高效,但请不要在此挑错,因为即使他们是等效的,问题仍然存在)。
神话
我知道你可能会说,这是一种“择优选择”,因为毕竟C++就是设计成了C的优化,是C的扩充,可能它没有想象中的那么高效,但同时它却有很多梦幻的高水平的特征。那么问题就归结为“开发者真的需要这些梦幻特征吗?”我的意思是,毕竟我们都听说过KISS(Keep It Simple,Stupid!保持简单)和stuff(材料),我们也都听过这种说法——与C++相比,C更KISS,所以我们应该选择C.这样无休止的争论使得C和C++之间的比较变成了一个神话(或者是一片混乱)。令人惊讶的是,似乎很多人倾向于C,而理由是C++太难正确使用了。甚至是Linus也这么想。
这种现象产生的真正严重的影响是,驱使更多的人在C与C++之间权衡利弊的时候,他们选择了C;一旦他们开始使用C,他们很快就会感到满足和舒服,就是所说的“令人满意”的体验。这样,当争论产生的时候,他们就会站出来说与C++相比,C是更好的选择。而实际上,他们都没有真正试着使用过C++,或者他们根本不是足够好的C++程序员。而真实的答案,往往开始与“它取决于”。
那么,我说过“它取决于”,取决于什么?显然,在一些领域选择C比C++更好。例如,设备驱动程序的开发通常就不需要OOP/GP(面向对象程序设计/概念编程)技术。它只需要简单的数据操作;最重要的是,程序员能正确的知道系统如何工作,以及他们该做什么工作。再考虑OS(操作系统)的开发,我自己从来没有参与过任何OS的开发,但是读过大量OS代码(大部分是Unix),我感觉很多OS重要部分的开发也都不需要OOP/GP技术。
但是,这就意味着,在所有强调效率的领域,C都比C++好吗?实际上不是。