闲扯C++ ——观宇宙飞船帖有感
时间:2005-07-10 00:07:00
手机看文章
扫描二维码
随时随地手机看文章
[导读]我11年前开始用C++。但最早打工的公司(就是做CAXA电子图板的那个)当时用的是C。后来干单片机了,也用不上
我11年前开始用C++。但最早打工的公司(就是做CAXA电子图板的那个)当时用的是C。后来干单片机了,也用不上。有PC端程序,也用的是Delphi(开发速度快)。所以到今天也没真正用C++写过大程序。但在设计思想上,我还是一直尽量“OOD”的,所以也在C++的问题上,自觉有一点发言权。
先让我们看看C++的两个重要特点:
1. 适度的面向对象。与一些比较“纯粹”的OOP语言(不论是早期的Smalltalk还是新潮的Java)相比,C++中的面向对象显得很不完全,因为它没有虚拟构造函数、没有类属(用模板代替)、没有动态数据类型、没有自动内存管理,保留了指针、全局对象和全局函数,等等。这些还是从效率和实用出发的,这也是我最欣赏C++的地方:直面现实,不沉迷于理想主义。
2. 基于文本替换的实例化机制。C++中的模板,本质和C语言中的宏一样,都是文本替换,都是为了在代码重用的同时保证效率。
所以,尽管总有人说要把C++看作全新语言,不要看作C语言的“改良”,但C++在骨子里仍然是C语言的继承者——它继承的是C的灵魂:实用主义,注重效率,行文简洁优美(教科书上总说Pascal语法优美严谨云云)。
看来Microsoft也领会到了这个,也不枉它们使用C语言一场。从早期Windows的那些.h,到后来的MFC,都能反映这一点。这恐怕也是Microsoft早期的成功法宝之一。要知道,早在那个号称“划时代”的Windows95“横空出世”之前很久,这地球上就已经诞生了可以与后来的WindowsXP,至少是98相媲美的交互图形用户界面了。但是Microsoft却能在PC机上照猫画虎,所以它大获成功(当年也有人对PC很不屑,所以他们相对失败了)。由此也可见,Microsoft成功的关键,并不在于技术本身,而在于市场头脑,在于技术服从市场。当然,更深层次的原因是PC行业崛起这个时代大背景。
总之,作为编程技巧和奇思妙想的范例(我统称这类东西为《九阴真经》下半部),Microsoft的代码的确不错。但是,如果你想成为真正的高手,而不仅仅停留在黑风双煞的级别,就必须从《九阴真经》上半部,从真正的C++语言,从设计思想和体系结构开始。
上半部的基本组成:
1. B.S.(C++的发明者)著《The C++ Programming Language》。(多霸气的书名!)
2. 面向对象的真正基础。推荐Bertrand Meyer的《Object-Oriented Software Construction:2nd Edtion》。看完这个,你就知道OOP/OOD/OOS之类到底是什么。
3. Erich Gamma等,设计模式:可复用面向对象软件的基础,机械工业出版社,2000。想知道软件到底应该怎么设计?看这本书就可以了。
即使只做嵌入式(特指低端嵌入式)开发,上述精神财富也绝对是大有裨益的。





