这几天随着linus这位老兄再次发出讨伐C++的声音,又勾起了网络上的大讨论。
比起各位高手大牛,我没什么发言权,这里仅说一下我使用C和C++的体会。
由于工作经历,我有4年左右的时间都是在使用纯C进行开发(当时在做图象处理模式识别的算法性工作)。感觉C其实就是一个高级的汇编,他的函数,各种类型的变量(主要指的是global, static, local),指针,编译单元等,只要你理解了计算机如何工作就可以很好的使用了,每次在指针,指向指针的指针,static变量等范二胡的时候,想想他在内存的布局,计算机执行的顺序,总可以很快的搞清楚。这就是C,贴近计算机高级语言(相对于汇编而言)。而关键的是你所写的函数或者你调用的函数,总可以很容易的搞清楚它到底干了什么,更能够很好的控制不可预测性。
总之对C地总结就是一切仅在掌握。
虽然以前主要使用C也并不是只使用C,在做外围应用封装时也会用到C++,随着这些年开始搞游戏使用C++的时间也更多了起来。我不感说我很精通C++,只能说我能够用C++写出我所需要的程序,甚至到目前为止C++的模板我也不常写(使用STL等除外)。以我的经验来看,如果你所构建的C++应用都是自己写出来的,那么也许你可以较好的控制其规模和复杂度,但如果你使用第三方的C++库,这个就不好说了,也许他的一个“=”号后面有超乎你想象的操作在里面,貌似几句简单的函数调用你也很难轻松的搞清楚其真正的消耗,这里主要指的就是运算符重载。很多C++新手,或者设计思想有问题的开发者往往想什么都封装一把,貌似使用的时候简单了,但实则隐藏了麻烦,这些地方很可能成为未来性能平静所在或者Bug所在。
总之对C++的总结就是老老实实的用,别搞那么花哨,更不要为了炫技写一些“高级”的代码,给自己和他人造成麻烦。
我还记得上次关于C,C++的讨论,虽然linus这个老愤青说得有些极端,但是不可否认他说对了一件事,那就是“设计”。用C还是C++并不重要,重要的是设计,无处不在的设计,从软件架构,到函数的声明实现等等。