免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6901 | 回复: 3
打印 上一主题 下一主题

孟岩谈《C++程序设计原理与实践》 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-06 14:28 |只看该作者 |倒序浏览
孟岩谈《C++程序设计原理与实践》

十年以来,Bjarne Stroustrup在不同的场合多次表示过,C++最大的弱点就是它的教学,因此,他许诺要亲自写一本教授C++的书——不同于The C++ Programming Language那样的、真正面向学习者的教程,来正本清源,以一种他认为正确的方式来教C++。《C++程序设计原理与实践》这本书就是他实现诺言的作 品。



这本书并非零起点,对于完全没有编程基础的人来说,恐怕并不适合。从技术点的组织来看,也是一如Bjarne Stroustrup一直以来的风格,以一种娓娓道来的方式分布在书中各个地方。光看目录,你很难知道他会在哪里讲到什么技术点。但如果读者有一定基础, 知道编程是怎么回事,然后愿意以从头到尾细细品读的方式来学习C++,那么这本书应该是不错的选择。但知识点的分散也有很大问题,也不是所有人都有那个耐 心从头到尾精读,所以这本书也不能取代其他一些经典的C++书,比如可以当字典查的C++ Primer和The C++ Standard Library,比如可以当博客读的Effective C++。但是有了这本书以后,学习C++的时候确实可以拿它当主干,其他的作参考和补充。

为什么这么说呢?因为C++这个语言有个大陷阱,就是存在很多诱惑和可能性,很容易让学习者早早就走到那些有趣的底层细节和奇技淫巧上,只见树木 不见森林。比如你在一个类的设计阶段就在考虑是否要让它的某个成员函数内联,或者本来要设计一个类,然后动手时成了一个模板类,重构时变成了一个多参数模 板类,这都是疑似坠井的信号。实际上以今天C++语言的成熟程度来讲,绝大多数情况下,程序员可以依赖高级的基础设施完成工作,只在非常罕见的地方需要用 到高度技巧化和底层化的技术。因此,按理来说,一个C++学习者也应该是先掌握这个语言的主体部分,然后才在必要的情况下进入细节的学习。这个应该是正 途,也是这本书采取的思路。这本书讲授C++的最大特色,就是把C++当做一个真正高级的语言去讲,从头至尾充分调动了C++标准库以及其他高级的基础设 施。全书处理的非常平和,看不到技巧的炫耀和故作高深的叫卖,一切看上去都挺自然的。从C++自身的发展来讲,这本书的出版,标志着C++教学度过了长达 20年的青春期,进入了成熟期。

然而,就现实而言,这本书恐怕是来得太晚了。且不说C++的应用领域较之十年前已经大幅度萎缩了,即使是仍然在使用 C++的领域里,也早就充斥了大量的传统遗留代码。这些传统的存在,强迫你必须按照奇技淫巧的方式来撰写你自己的代码,无论你多么不情愿。所以我不认为这 本书,以及C++0X的标准能够总体上改变C++应用的现状。悲观点的说法是,C++到死,也就是这个样了,难以有大的改观。但是如果有人还是以很认真很 严肃的态度来学习C++,也能够有机会在一些领域来做一些全新的工作,这本书应该是可以好好读一下的。

很多人可能觉得C++不行了,我相信在未来一段时间里,C++还有一定的用武之地。云计算兴起之后,服务端的竞争可能还会使得C++在某些领域复 兴,所以C++还是可以学一学的。C++这个语言最好也是最差的地方,就是它万金油,怎么写都能工作,好多种风格都支持,你用着用着总会有个好恶。比如对 我来说,C++这个语言最强的地方在于它的模板技术提供了足够复杂的程序库开发机制,可以把复杂性高度集中在程序库里。做得好的话,在应用代码部分我连一 个for循环都不用写,犯错误的机会就少,效率还不打折扣,关键是看着代码心里爽。那么它最烂的地方是面向对象基础设施,简直不入流,根本不配称为面向对 象语言。从高的层面来讲,C++可以写组件,但是想做周全了挺麻烦的,算不上好的组件语言。从底层来说,C++跟C差不多是完全兼容,狗急跳墙了,我可以 回去写C代码。别人可能有不同的看法,不过有一点经验的人,对于C++的长长短短多少都会有个感觉、有个偏爱。但是我现在觉得,用C++,最重要的一条, 就是心态平和,别较劲,别非要让程序统一到某个你最信仰的风格下,更不用为此花一大堆精力去攒包装(wrapper),什么直接就用什么。你写程序时第一 个想到的路子,也就是你读程序时最容易理解的路子。用始皇帝张艺谋的话说,就是手中无剑,心中也无剑,就是不杀,就是和平。以前的C++程序员们,多少都 有些杀气,有嗔念,要走过很久才回得来。也许这本书能够帮助后来者比较快地获得一颗平常心?没准儿。至少我希望是这样。

论坛徽章:
0
2 [报告]
发表于 2010-08-06 14:40 |只看该作者
貌似是应付的书评,前几天在groups上看到过了

论坛徽章:
0
3 [报告]
发表于 2010-08-06 23:20 |只看该作者
尽是没话找话说.

论坛徽章:
0
4 [报告]
发表于 2010-08-09 10:10 |只看该作者
【摘自豆瓣】http://book.douban.com/review/3507453/ 

一本以C++为载体讲述如何学习程序设计的书

概括来说,这是一本以C++为载体讲述如何学习程序设计的书。书的起始(第0章),作者在表明了对一些常见学习程序设计思路的不认同后,表达了在方法论层面上自己对如何学习程序设计的观点:在程序设计的实践中学习程序设计。随后,作者以学习C++程序设计为例演示了这样的一个学习过程。前言中作者表示,这是本写给初学者的书,确实,他在第1章就聊了点计算机的事儿给完全的新人看,然后(第2-5章)介绍了些面向过程编程的基本概念(表达式、语句、程序和常见错误等)让读者很快上手,并在第6-7章通过演示实现一个计算器的过程巩固了前面的知识点、展示了程序设计的一些被实践证明的传统思路。再接下去的第8-9章中,作者补充了前面处于方便读者上手而忽略的关于函数和类的细节,至此,作者讲完了他所要介绍的基本知识。作者在第二-三部分提供了关于 C++语言的更多细节,在第四部分提供了些拓展阅读内容(其它程序设计的书很少涉及这些内容,根据我这方面比较匮乏的阅读量)。关于第二-四部分的内容,大家翻翻目录就能有个大致了解。
  
  封底用了“C++初学者的权威指南”的标签,我觉得并不夸张。学一项新东西,最关键的是在入门阶段能掌握正统正确的基本概念,并且在学习过程中不走弯路。(想想那些勤奋而且iq也很不错的民间科学家,我想他们的主要不足是在入门阶段没有得到受过正规学科训练、懂得什么是对什么是错的行家的指点,这挺让人心痛的。)出于这样的考虑,我推荐初学程序设计的朋友买一本,因为这本书最大的卖点(在我看来)在于它内容正统;并且明确强调了一条有效的学习途径:掌握语言的基本要素后,在大量实践中学习程序设计。而且,即使以后不做C++程序员,这本书第一部分的基础知识是通用的,对学习绝大多数语言都会有帮助。此外,我非常喜欢的一点是:作者在介绍C++的一些语言机制的同时,展示了自己在设计这些语言机制时的考虑(为了更好的表达思路或避免某些编程中易犯的错误等)。这种把读者引到C++背后的表述方式,会更有说服力也更能引发读者的思考。我推荐这本书给初学程序设计的在校学生以及对C++理解还不是那么到位的C++程序员。
  
  对于已经通过入门阶段并且有较丰富经验的朋友,我觉得这本书就不是那么重要了:可能是因为作者太懂C++了,这本书写得有点行云流水的感觉,与那些中规中矩的书相比,不是很适合做参考手册。当然,作者粉丝可能会必备一本。总得来说,这本书翻译得还可以,有点字面上的问题也就不挑剔了,毕竟校对这么厚一本书是挺容易疲劳疏忽的,好在这样的问题不多,不影响阅读。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP