《C++ Primer Plus》读后感1000字
《C++ Primer Plus》是一本由Stephen Prata著作,Addison Wesley出版的Paperback图书,本书定价:GBP 39.99,页数:1200,特精心收集的读后感,希望对大家能有帮助。
《C++ Primer Plus》读后感(一):可读性很强的C++入门书籍
之前的C语言启蒙就是读prrata的C primer plus,对他的书印象很好,通俗易懂。但是我学C语言的目的纯属是为了给学C++做铺垫。于是我看了他的这一本C++ primer plus,虽然没有C Primer plus完美,但是也是描述详尽,语言通俗易懂。
prrata的书有几个特点:
1.描述详尽以至于有时候甚至感觉啰嗦。比如他说“指针指向内存地址”,这句话在全书重复百遍。(但也有好处,他照顾了全部不同属性的读者,而且还可以加深对知识的印象)
2.语言描述得不是很官方,有点幽默。
现在在看C++ Primer,没有CPP-P-P我很可能看不懂。
《C++ Primer Plus》读后感(二):学C++的最好入门书
Amazon 上第五版有位教授C++的建议阅读顺序是:
C++ Primer Plus
C++ Primer
Thinking in C++ (great book, free on the internet)
The C++ Programming Language (by Stroustrup)
第一本我现在看完了7章,在这之前看了大版本C++ How to Program 5/e
相比之下,这本写的要清楚的多,尤其是对一些概念的解释,看的出作者相当用心。举个例子,在第六版里,第七章的新增内容主要是关于指向函数的指针的, 新增的一节叫“Variations on the Theme of Function Pointer”。结合新的C++11 规范,作者介绍如何定义指向一组类似函数的指针数组,以及指向该指针数组的指针。应该说这里的概念相当绕人。我大概这一节看了三四遍,结合作者提供的一个联系程序大致理清了。同样的内容C++ How to program 里也有涉及,相形之下,作者对复杂概念解释的功力逊色太多。
至于有人提出的typo问题,的确,书里有一些小错误,但就我读到7章后的阅读体验而言,问题并不大。另外就此类程序语言学习的书而言,都有源程序可以下载运行,任何对书内内容的怀疑都可以自己上机跑一下示范程序验证。
《C++ Primer Plus》读后感(三):不推荐这本书
很久之前,在网上看到有人推荐C++书籍的时候,有一位说,推荐C++ Primer,注意不是C++ Primer Plus,完全是两本不同的书。后来也零零星星地听到过一些关于这本C++ Primer Plus的评价,大致都是说这本书不行,请去看C++ Primer或者Accelerate C++之类的。
前些日子偶然看到,这本书在豆瓣上评分很高,在Amazon.com上面评分也很高,书评也几乎都是一边倒的,只是偶有一两个负面的评价。总体而言我还是比较看重豆瓣读书的评分的,于是就在闲暇时间看了这本书的前四章。
由于豆瓣将所有版本的书评一同显示,可能需要强调一下,我看的是第六版英文版。
结论是这本书完全不行,无论读者是什么基础什么背景,从这本书里能获得的东西都很少。我知道大家都是不愿意放弃自己的阅读体验的,或许有人真的能通过这本书入门C++,那就请不必太过于在意下面对于这本书的负面评论。这篇书评是为了那些和我一样喜欢看豆瓣书评的人提个醒,从我个人的角度来看,读这本书的收益抵不上你将在1200页的正文上花费的时间。
首先,来看看这本书的定位。前言中说,这本书可以当做一本textbook,也可以用来自学。没有假设读者有C的经验,但是有编程经验是desiable的。书名里也说了,这是primer,初级读本。
书的编排上,如果之前有C的经验,那么前些章节可以略读过去。这一点有些疑问,作者自己也说了,C++不是简单地在C的语法上增加些东西而已。不过这这个问题让我们先放一放,先看下去。
先是历史课,然后作者讨论了可移植性,简而言之作者说C++是可移植的,但是事实上没那么简单,不过在初级读本里面,也没必要深入讨论。第一次让我有疑问的是20页,作者说你甚至可以用一个word processor来写源代码,只要你将文件保存为标准的ASCII文本就行。
这种说法对新人非常不好。首先用word processor来写源代码是不好的,启动慢,而且没有语法高亮和方便的缩进控制,或许还有些其他奇奇怪怪的问题。一种比较好的方法是用专门给程序员设计的文本编辑器,作者完全没有提到。如果只是要表达什么样的都可以,那么至少要多说两句,例如在win或者OS X的富文本编辑器下应该怎么做。
然后作者讨论了各种C++实现所用的源代码文件的扩展名,在一般的书籍上只是简单地说一句,扩展名一般是可以哪些,具体的请查阅手册,作者不厌其烦地列了一个表格,1200页地篇幅很多就是在浪费在这种东西上的?
而且这个表格让我开始怀疑这本书的严谨性了。Unix是一种C++实现?退一步说,Unix有标准化的C++实现?再退一步说,Unix只规定接口,怎么可能是实现?
接下来作者又不厌其烦地介绍了各种平台上的C++环境,其中还参杂着历史课……读者这时候真的关心将近20年前的事情吗?作者在下文还特地说,可以用mv将a.out重命名,就是不愿意介绍-o参数可以在编译的时候指定文件名……而且,这里说的unix还不包括linux和OS X,一个用BSD Minix之类的读者真的需要介绍这些吗?
之后是g++,作者还特地提到了某个古董版本的g++不会自动链接C++的库。到了win上面的IDE,却只是简简单单说了两句,明明IDE是最复杂的东西,作者宁愿在前面讲很多历史,也不愿意多花点笔墨介绍一点IDE。
我之前读过的一些英文书籍,都会选择具体的一两种环境来介绍。对于C++,最流行的肯定是MS的IDE和GNU的g++。Windows上面介绍VS express 2010 C++,其他平台上介绍g++,不是能减少很多麻烦,省去很多无谓的笔墨吗?
这是本书的严重问题之一,很多地方沉溺于介绍一些对读者没什么帮助的东西,或者是历史课,或者是和C做没什么用的对比,或者是初学者根本用不上的东西,一些非标准的C++编译器的问题,中间还有些许错误。作者不明白该如何选择材料,而是将他能想到的东西一股脑地塞给读者,其中还带着些令人不快的霉味。
或许有人会觉得历史课,或者和C做对比,有助于增进理解。这或许是因人而异的事情,但是这本书中这些内容实在是太多了,C++本身的特性已经非常复杂,读者真的有精力去关注过去的C++编译器是什么样子的,或者C的写法是什么样子的吗?请问C中一个identifier的长度限制,对于学习C++有什么帮助呢?在这本书出版的2011年,你不幸地随便下载到了一个十来年前的C++编译器(居然还能运行,不容易!),然后发现有些标准化的特性它不支持,那么重新去下载一个就行了,g++和MSVC++ express都不要钱的!
第四章的大部分篇幅,是在教读者写C代码。有些地方作者自己也说了,如果我们用C++的数据类型,事情就会变得很简单。但是后文的例子中继续用C字符串,不明白这是为什么。在实际情况中,用C字符串的情况很少。C字符串的字符串处理相当麻烦,之前看到过一个项目从C迁移到C++的理由之一就是,C的字符串处理实在是太枯燥了。写代码是一个积累经验的过程,如果写习惯了C风格的代码,迁移到C++的风格又要有一个适应的过程。用C风格的代码,作者也只是在写一写非常不自然的例子,比如List 4.22。
C的基础对于学习C++有帮助,特别是在一些语义分析上面,但这不代表学习C++还要用C风格的字符串,在存储空间大小都无法确定的时候,还要优先考虑array而不是vector。
虽然后面的章节我没看,但是如果坚持用C风格的代码来学习,读者最终也写不出真正的C++来。
最后,这本书的技术性错误很多。注意是技术性错误,而不是typo之类的小问题,如果你没有相关经验,根本就看不出作者说错了。而且这些错误,很多是作者写的不必要的部分中出现的。
对于这些错误,以及个人觉得表达上欠妥的地方,在豆瓣做了读书笔记,觉得“技术性错误多”缺乏论据的,可以去翻阅一下。
(还要补充说明一下,有些人或许觉得,有错误没关系,反正编译试验一下就行了。但很可惜,一些未定义行为的代码可以通过编译,甚至可能给你一个看上去比较正常的结果。还有些人或许觉得,在网上一搜不就有答案了,但是,一个C++的问题,在网上能搜到很多错误的回答,如果真的要搜,去stackoverflow.com比较好。)
所以说,这本书的材料组织混乱而且过时的内容多(一个指针变量通常是2字节或4字节?2011年还有那么多的16位环境?),很多内容是C风格而且错误较多,如果你需要一个参考意见,我建议你不要用这本书来学习C++。
这种回答缺乏建设性,初学C++看什么书比较好呢?C++ Primer是个常见的回答,但是对于这种巨细无遗讲语法的风格,一部分人会非常不适用。虽然我觉得第五版还是很不错的……Accelerated C++也是个常见的回答,但是一般认为这本书学习曲线很陡峭,而且个人觉得这本书的例子非常无趣。Bjarne新写的programming或许是个不错的选择,但我没有看过,不知道是不是应该推荐。
用前四章来评价一本书或者不够准确,或许今后有空的时候继续看吧。
《C++ Primer Plus》读后感(四):关注 C++ Primer Plus(第 6 版)的同学,请留步
鉴于最近关注《C++ Primer Plus》第 6 版的广大编程爱好者日益增多,看来有必要在这里客观地评价一下这本书。
《C++ Primer Plus》第 6 版在美国刚上市不久,我就购买了原版书学习,可以说是第一批看这本书最新版的人。经过半年认真地学习,对这本书有自己客观的看法。本人不推荐初学者以这本书作为教材。现在如果你对这本书感兴趣,请耐心阅读以下文字,这是作为一个过来人的劝告。
不知道之前在网上推荐《C++ Primer Plus》的人是否真正认真阅读过本书?抑或是几年前读过?
刚开始我对这本书抱有极大地热诚,非常认真地学习本书,书中的每句话几乎都反复阅读推敲,亲手从键盘上把书中的所有例题敲进电脑运行,所有的课后习题都认真地写过。我相信自己的评价是非常客观的。客观地说,这是一本 C 语言与 C++ 杂糅的书,并非真正从 C++ 的角度教你学 C++。学完本书后,你不会掌握 C++ 的编程思想,存于你脑中的只有无数乱七八糟零散的知识点。甚至,当你回忆起貌似在这本书学到的某个知识点,想再次翻阅本书进行查找时,你会有想把书撕掉的感觉。这既不是一本很好的 C++ 入门教材,也不是一本方便查阅的参考书。因为这本书的知识体系极其混乱,除了徒增你的查找时间和挑起你的脾气外,别无它用。
1. 首先谈谈本书的错误
这本书的错误极多!第 5 版是这样,第 6 版竟然没有丝毫修正,错误仍然大模大样地摆在那里。文字,例题,课后习题…到处都可发现各类错误。当你运行书中例题得到的输出和书上的输出不一样时,别奇怪,你的输出是对的,书上的输出是该例题还未修改时的输出。作者修改了例题,但未修改输出。参见英文原版第 6 版 P533 Listing 10.6 usestock1.cpp ,输出的Share Price: $后的数字应为小数点后三位有效数字,而不是书上印的两位。
我不得不一边阅读一边修改。小错误还可以理解,糟糕地是经常出现不知所云的状况,查阅第五版的英文版才发现,原来的例题删除了或者修改了,但是相应的变量名却没有修改。参见英文原版第 6 版 P551 中,Len 是什么?根本没有 Len,应替换成 Moths,数字 30 也应该替换成 12。
还有直接分析错知识点的。参见英文原版第 6 版 P322 ,标题为 The Implications of Using Arrays as Arguments 的这一段。该段开头在分析 Listing 7.5,把主调函数和被调函数之间调用与被调用的关系分析错。导致读者不知道怎样理解主调函数和被调函数中的 argument(实参)和 parameter(形参)。为此,当时想联系作者,奇怪的是书中和网上根本找不到作者的联系方式,书中只有出版商的邮箱,而出版商明确表示不会答复有关书中的技术问题。作者不留下联系方式,读者发现错误时如何与之联系?这也许是错误遗留书中的一个原因,抑或作者就没想去更正?
有错误不要紧,只要提供完整的勘误表,还是可以理解的。这本书总共 1420 页,可是官方网站的勘误表只更新到P478。官方刊物表
我很负责任地告诉大家,错误绝不止这些!即使在提供的这些勘误中还有诸多错误遗漏,P478 以后的错误更多。难道他们知道错误太多不好意思再更新?实在没有必要把你宝贵的时间浪费在找错误上。这些足以说明作者和出版商的态度,自己出书都不负责更新勘误表,错误从第五版保留到第六版。既然作者都不操心,我们又何必煞费苦心呢?
2. 再聊聊本书的 C++11
《C++ Primer Plus》第 6 版是打着 “涵盖 C++11 新内容” 的旗号出版的。当你仔细阅读本书后会有深刻体会,作者只是把 C++11 的新内容强加入书中,哪个知识点 C++11 有更新,就在介绍完这个知识点后附带说一下 C++11 有什么变化,然后依旧我行我素,仍然使用未更改之前的版本。读者最想知道的是如何应用这些 C++11 的新内容,新变化与之前的有什么不同,为什么要做修改更新?这些问题在本书中找不到回答。作者只是简单介绍新标准的知识点,先强硬塞入部分文章中,然后在书末尾增加18章介绍C++11新标准。可以说 C++11 的内容并没有真正融入书中,读者学到的只是以前 C++。
举个例子,书中介绍了 C++11 的 nullptr 空指针代替原来的 NULL,但是在例题中到处都是 NULL,并未做更新。特别是第 16,17 章,书中的例子几乎完全没有改动,还是第五版的例子。要知道第5版是 2004 出版,第6版 2011年出版,跨度七年,却没有重新编排,介绍了 C++11 却不在例题中体现新特新。抓准读者想了解 C++11 新特性的心理,仓促出版,这完全是圈钱行为。
3. 这本书是从C语言的角度教学
随着深入学习本书才慢慢意识到,这本书是从 C 语言的角度来教你学 C++。除非你想这样,否则这绝不是个很好的学习方法。这将导致你学完整本书对 C++ 的编程思想毫无头绪,完全迷失在无数细节中。这些细节很多还是 C 语言遗留的并非C++特有的(例如:在你脑中只有 C 语言的类型转换 (int) x,而不是 C++ 的类型转换 static_cast
4. 总 结
也许《C++ Primer Plus》在前几版(第 4 版)的时候是本不错的书,但书中的错误不及时更正,一版又一版地累计错误,不与时俱进全面修订,为了圈钱而仓促出版,使得这本书完全丧失了经典教材的风范。如果你真的想学好 C++,请不要以这本书为教材。
如果你是位 C++ 小白,对 C++ 毫无了解,这本书绝对不适合你。如果你只想了解并学习 C++11 新特性,这本书绝对不适合你。八月份要出版的《C++ Primer》第 5 版应该是不错的选择,只是这本书实在不适合连变量和循环都不了解的新手。
相比《C++ Primer Plus》第 6 版,《C++ How to Program》算是一本 C++ 入门的好书,该书是国外很多大学的教材,知识点讲解准确详细,归纳总结颇具条理,习题的数量多,难度较大。我手上有原版,这本书完全按照C++的编程思想编排,例题的注释和讲解都非常详尽,很适合初学者。只是第八版还没有中文版。第七版的中文版我看过了,翻译得不太好,语句不通顺,英文式中文,译错都存在。所以,我在这里推荐的是《C++ How to Program》第八版英文版。
鉴于大陆的计算机翻译质量不敢恭维,侯捷先生又不翻译入门书籍,适合真正新手学习的 C++ 书籍很少。能看国外教材绝不看国内教材,能看英文原版绝不看译版(侯捷先生的译版除外)。国内很多译者对所译书籍并未深入理解,以为略知一二即可翻译,加上急功近利的态度,很多译文都未经推敲。相信看过中文译版的同学们都会有所体会。若真想学到最新的知识,只有直接阅读英文一条路可走。
-
《C++ Primer Plus 第6版中文版(202《C++ Primer Plus 第6版中文版(2020年)》是一本由[美] 史蒂芬·普拉达(Stephen Prata)著作,人民邮电出版社出版的平装2022-10-28阅读全文
-
《C++ Primer Plus》读后感精选《C++ Primer Plus》是一本由Stephen Prata著作,人民邮电出版社出版的平装图书,本书定价:99.00元,页数:936,特精心收2023-05-16阅读全文
-
一本书读懂投资理财学(升级版)《一本书读懂投资理财学(升级版)》是一本由于烨著作,北京时代华文书局出版的平装图书,本书定价:35,页数:2023-03-05阅读全文
-
以一本书为话题的作文600(精选1作文是通过文字来表达一个主题意义的记叙方法。那么你有了解过作文吗?以下是关于以一本书为话题的作文600(精选2022-11-20阅读全文
-
关于写一本书的作文500字提升写作能力,做到手到擒来,希望这篇文章对您的作文能力提升有帮助,特地精心编写的关于写一本书的作文500字2022-12-08阅读全文
-
关于写一本书的作文700500字提升写作能力,做到手到擒来,希望这篇文章对您的作文能力提升有帮助,特地精心编写的关于写一本书的作文70052023-02-13阅读全文
-
人生当中的第一本书经典作文作文是通过文字来表达一个主题意义的记叙方法。那么你有了解过作文吗?人生当中的第一本书经典作文,欢迎阅读2023-01-02阅读全文
-
推荐一本书经典作文提升写作能力,做到手到擒来,希望这篇文章对您的作文能力提升有帮助,希望以下这些推荐一本书经典作文,能对2022-08-26阅读全文
-
《本书书名无法描述本书内容(精《本书书名无法描述本书内容(精装珍藏版)》是一本由[美]埃里克·卡普兰著作,北京联合出版公司·未读出版的精2022-12-23阅读全文
-
我最喜爱的一本书作文大全作文是通过文字来表达一个主题意义的记叙方法。那么你有了解过作文吗?我最喜爱的一本书作文大全,欢迎阅读与2022-09-16阅读全文