绿林网

《C++ Primer Plus》读后感1000字

《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 x)。悲剧吗?学完了《C++ Primer Plus》你还需要另外找本专门讲 C++ 的入门书来看,查缺补漏哪些 C++ 基础知识没学到。郁闷不?既然你决定要学习 C++,为什么不一开始就学习并练习 C++ 的知识点,而要花掉半年的时间学习一些残留在 C++ 中的 C?!要学 C 何不去直接看 Brian W. Kernighan 和 Dennis M. Richie 写的超级经典《C Programming Language》,而要在这学 C 和 C++ 的“杂糅体”?如果你真的想学正宗的 C++,想学 C++11 新特性,就不要看《C++ Primer Plus》第 6 版。

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++ 书籍很少。能看国外教材绝不看国内教材,能看英文原版绝不看译版(侯捷先生的译版除外)。国内很多译者对所译书籍并未深入理解,以为略知一二即可翻译,加上急功近利的态度,很多译文都未经推敲。相信看过中文译版的同学们都会有所体会。若真想学到最新的知识,只有直接阅读英文一条路可走。

本文由作者上传并发布(或网友转载),绿林网仅提供信息发布平台。文章仅代表作者个人观点,未经作者许可,不可转载。
点击查看全文
相关推荐
热门推荐