从编程门外汉成为C++程序员

这篇向导简述了学习C++的全过程,对想成为C++程序员的朋友有所帮助,特别是为非科班的朋友展示了一条学习路线.




入门:
入门就是要初步对编程的思想有个了解,并且能编程解决一些小问题。入门一定要选好 书,难度如果太低了会造成对读者的误导,以为编程就是这么回事;也不能太高深,免的打击读者的信心。既然编程的入门要求是编一些小程序解决小问题,那么就 没必要直接学习C++,我觉得循环、判断、跳转、指针才是最基本的编程思想,学通了这些对以后学习C++很有帮助。
我建议应该先把C扎实地学好, 不光要掌握C的语法,因为学习编程的最终目的是解决实际问题,所以还要适当掌握把实际问题与编程联系在一起的能力,我推荐《 C程序设计语言(第2版) 》,这本书是C语言之父写的,不仅详尽介绍了C的语法,还提供了很多实际的小问题作为实例,可以说看了这本书之后能为以后的编程学习打下一个扎实的基础!

提高:
学了《 C程序设计语言(第2版) 》后可以开始学习C++,一开始没必要钻很深的大部头书,《 Essential C++中文版 》非常适合初学,一个礼拜就可以看完,看了它可以快速对C++的全貌有个了解,虽然不会马上熟练掌握C++。
我们不能满足于解决“百钱买百鸡”,真正实现程序还有很多非功能上的问题,比如怎样做才能使用更少的内存?怎样做才能更快?在熟悉一门语言后,一定要认真 学习的就是数据结构!数据结构保证了我们的程序能以高效的方式运行。《 数据结构算法与应用C++语言描述 》是本好书,它提供了很多实际的例子,比如火车站调度、走迷宫,相比于“百钱买百鸡”这种问题又提高了一个层次。
接下来专心提高C++的水平,可以选择《 C++编程思想 》,然后再看《 Effective C++中文版 》和《 More Effective C++中文版 》,这两本书介绍了高效使用C++的宝贵经验,语言很幽默。至此,你已经可以自称是C++程序员了,恭喜!
下面介绍几本书,有兴趣的朋友可以选读。如果想高效地使用C++开发软件,STL一定要学!《 C++标准程序库—自修教程与参考手册 》可以帮你学会STL的使用,而且开发时可以拿它做手册,有了前面数据结构的基础,学习STL的使用不会遇到什么困难。如果你还想知道STL的设计思想及 原理,不妨看看《 泛型编程与STL 》。有些朋友可能会问,C++的面向对象机制是怎么实现的?《 深度探索C++对象模型 》给了你答案,它剖析了C++底层的实现。最后,如果想有一本C++大百科全书,那非《< C++程序设计语言(特别版) 》莫属!这本书是C++之父Bjarne Stroustrup的大作,算是书中权威。

再提高:
到现在为止,你已经熟练掌握C++语言了,现在需要提高的就是设计思想,面向对象(OO)的最大特点是把我们的注意力从系统的执行体系结构转移到概念体系 结构,因此利用OO开发大型系统会更轻松。但是经常可以看到人们拿着C++用面向过程的思想解决问题,缺乏的就是面向对象的设计思想,也难怪,在这里之前 看的书都没有教你怎样用面向对象的方法开发系统,顶多介绍了面向对象是什么,看了这么多书难免会先入为主,《C语言程序设计》(或者你看的第一本编程书) 中的思路潜在的影响着我们。这条鸿沟就由《 设计模式--可复用面向对象软件的基础 》来补救吧!所谓模式就是前人总结出来的、经过千锤百炼的一种系统结构,设计模式展示了23个经典的模式,通过学习、理解,你可以看到什么是真正的面向对 象。
看了《 设计模式--可复用面向对象软件的基础 》后,有时间不妨看看《 重构——改善既有代码的设计(中文版) 》,学了面向对象的设计思想后看它,可以站在一定高度重新审视一下自己的C++编程水平。

结束语:
在学习编程的过程中一定要注意多实践!学习时到CSDN论坛同大家讨论是个不错的办法,那里的高手如过江之鲫,你会找到许多热心的朋友与您一起学习,能通过学习编程交些朋友不是更好吗?最后,希望您能成为优秀的程序设计师,为中国软件的发展贡献一份力量!


附录:

Essential C++(Addison Wesley Pub Co.,1999年10月第一版)的作者Stanley B.Lippman更是C++领域一流的大师级人物,他从1984年开始就与C++结下了不解之缘:参与了第一个C++编译器C Front的开发,曾经和C++之父Bjarne Stroustrup(详见下)一起在贝尔实验室的项目组工作、负责研究C++程序开发环境中的对象模型,后来又担任著名的C++Report杂志编辑, 此后他到迪斯尼旗下的梦工厂出任软件技术总监(Software Technology Director),主要著述有Essential C++、C++Primer、C++Gems、Inside the C++ Object Model、C#Primer等,关于作者的更详细信息可以到其个人网站(http://www.objectwrite.com, 该网址笔者已验证无误)查询。Lippman当前在业界的影响力可以从最近发生的一件事情看出:不久前微软已经邀请了C++编程语言的先驱Stanley B.Lippman加盟它的Visual C++.Net开发小组,以打消广大的C++编程人员的疑虑。Essential C++是Lippman在C++ Primer之后的著作,可以说是厚积薄发的精髓之作。不要想当然地觉得这本书只有276页就是烹小鲜的入门向导——其实,我到觉得如果想通过一本书入 门,1237页的C++ Primer或1109页的The C++ Programming Language更加适合。Essential C++分为7个章节,分别是C++基础、面向过程的编程风格、泛型编程风格、基于对象的编程风格、面向对象的编程风格、运用模板编程和异常处理。从结构的 安排上我们可以看出作者的深意所在:并不是要手把手地教你键入和编译调试一个类似“Hello World”的程序,而是要一步一步地教会读者通过函数、指针、模板、类等构件形成一套完整的编程思想,在不同的需求情况下能够自如地使用面向过程或面向 对象的方法进行程序设计,正如Bjarne Stroustrup在The C++ Programming Language一书中引用Kristen Nygaard(Simula语言的两位创造者之一)所说的“Programming is understanding”。如果你是一个新手,在阅读本书的时候不要忘了找一本更详细一些的参考教材——作者只用了30页的篇幅讲C++变成的基础知 识,这里面还包括了数组、向量和指针等内容,《Essential C++中文版》(华中科技大学出版社,2001年8月第一版)已经出版,是侯捷的译著——恐怕业内很少有人不知道这位台湾大名鼎鼎电脑教育作家,建立在深 刻理解基础上的翻译质量几乎可以说是无可挑剔了,但对于一些词汇的翻译方法和大陆翻译习惯的差异还有待磨合和改进(虽然译者坚持保留其繁体版译法)。


Effective C++(Addison Wesley Pub Co.,1997年9月第二版)没有教你C++语法或函数、对象、模板之类的东西,这是一本风格独到的经典技巧集,曾经获得过1992年度Jolt Award and Productivity Awards,作者教给你的是50个“改善程序技术与设计思维”的特别途径。Scott Meyers是C++业界公认的权威,主要从事软件开发咨询工作,活跃在全球各技术研讨会上,同时是C++ Report的重要专栏作家,知名著述出了Effective C++之外还有More Effective C++和Effective STL等,关于作者的更详细信息可以到其个人网站(http://www.aristeia.com) 查询。《Effective C++中文版》(华中科技大学出版社,2001年9月第一版)也已经在国内翻译出版,译者还是侯捷。当你初步了解C++的全貌之后,Effective C++能够在短时间内大幅度地提高你C++编程的水平,此书的独特之处在于每一个你遇到的C++问题,Meyers都好像未卜先知地放在了书里,所有让你 困惑的问题你几乎都可以在这本书中找到精辟的论述——如果能加Meyers的另一本巨著More Effective C++(Addison Wesley Pub Co.,1995年12月第一版)将更会锦上添花。本书在结构上分为改变旧有的C习惯、内存管理、构造析构函数与作业运算符、类与函数的设计和声明、类与 函数的实现、继承关系与面向对象设计以及杂项讨论7个部分。很多人都认为你越熟悉C语言或其他面向过程的语言,在学习面向对象的语言的时候就会面临更大的 困难,的确,如果你已经习惯了面向过程,在面向对象的时候你还是无法忘记过程,为此,Meyers在第一部分就提出了改变旧有的C习惯,通过几个小技巧让 你能够尽量不受原有知识对新知识学习的干扰。在接下来的3个部分中,作者又针对让人头疼的内存管理问题(Java就宣称采用自动内存管理减少了编程复杂程 度和出错几率是比C++的一大进步),随后,作者针对函数与类的构造析构、设计、实现等问题进行了详实的讨论,没有枯燥的长篇大论,都是结合实例的分析讲 解——如果你刚学C++不久但已经可以独立编写一些简单的程序,你会发现所有被批判的问题程序中都可以找到自己的影子,这真是一件奇妙的事情!在“继承关 系与面向对象设计”部分里作者没有喋喋不休地去讨论尚有争议的问题,而是把精力放在最基础的理念上,澄清了C++中类的继承体系设计与实现,并结合继承问 题阐释了OOP。“杂项讨论”中作者主要讨论了编译、标准库等问题。打一个粗俗些的比方:Effec tiv e C++和M o re Effec tiv e C++就像是C++学习者的手挠,每一下都抓在你的痒处。

作者:anonymous   更新日期:2005-01-09
来源:internet   浏览次数:

相关文章

相关评论   发表评论