初识C++
好吧,我这个半吊子的没写过程序的程序员也来学习C++了。
C语言是我仅会的一点东西,在数据库里泡过半年,在CCNA上耗了半年,在C语言里断断续续摸爬滚打了一年(刚好一年了哈,也是去年六月份开始学的C)。先看的《C语言教程:模块化程序设计》(DavidM.Collopy著),不是很厚的一本书,我也算仔细的看了一遍,书上代码都敲了一遍。但是这本书讲的内容真的很少,指针之类的完全没有涉及。大部分代码都是关于财务管理或者账目统计的,很简单的键盘、文件输入,屏幕、文件输出。看此书最大的收获就是懂了模块化。接的着《C语言程序设计》(楼永坚著)。这本书详细讲了C语言的语法,但也仅仅是语法而已。C语言的一般语法应该是过关了。接着看K&R的《C语言程序设计》(其实是先拿到了这本书,但是看不懂,只好找了本讲基本语法的书看看先),这本书把C语言的特性很简洁的表达出来,作为一个老程序会收获颇丰,对于新手可能就会看得痛苦万分,不甚了了了。后来又拿到它的英文影印版通读一遍,再接着是看《C专家编程》。但是我依然不会编写C程序,书上的题能写,实用程序不会,实际程序看不懂。下了不少开源程序的C源代码,但是面对着几十几百个源码文件,感觉很无从下手。作为一个想做程序员混饭吃的我来说,焦急万分。
于是乎,开始学C++了。六月九日拿到《C++程序设计语言特别版》(C++语言发明者BjarneStroustrup著),很悲剧的看不懂。之前从来没有看过任何关于C++的书,也没看过C++,记得第一天照搬书上的Hello, world C++代码,对iostream,namespace, cout 完全不了解,用gcc编译的时候一直报错,google之后才知道要用g++命令,或者加参数lstdc++。然后书上内容马上进入构造函数、析构函数、虚函数、运算符重载、类、对象、模板、容器,并且只用不解释。看了一会儿就晕掉,无语吟噎,十天下来看了不到一百页,而且完全不懂。于是找基本的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++了,祝我好运。
手头有的C++的书:
《C++程序设计》(谭浩强编著)
《C++程序设计语言特别版》(BjarneStroustrup 著,裘宗燕 译)
《C++Primer》第四版影印英文版 (SL,JL, BM)
《C++编程思想:第一卷》第二版(BruceEckel 著,刘宗田 等译)
Edited by DC Morgan on 2010-06-20
带着崇敬与赞美,献给活在计算机里的神灵