首页 C++沉思录_读后感

C++沉思录_读后感

举报
开通vip

C++沉思录_读后感 硕 士 研 究 生 读 书 报 告 题目 读《C++沉思录》有感 作者姓名 汪 浩 作者学号 Z114325083 指导教师 赵晨 学科专业 软件工程 所在学院 软件学院 提交日期 二○一一年九月 Ruminations on C++: A Decade of Programming Insight and Experience ...

C++沉思录_读后感
硕 士 研 究 生 读 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 报 告 题目 读《C++沉思录》有感 作者姓名 汪 浩 作者学号 Z114325083 指导教师 赵晨 学科专业 软件 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 所在学院 软件学院 提交日期 二○一一年九月 Ruminations on C++: A Decade of Programming Insight and Experience A Dissertation Submitted to Zhejiang University in partial fulfillment of the requirements for the degree of Master of Engineering Major Subject: Software Engineering Advisor: Zhaochen By Wanghao Zhejiang University, P.R. China 2011 摘要:本文重点探讨了一本名叫《C++沉思录》的书,该书介绍了目前软件开发中主流的开发工具C++的一些 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 思想和技术细节思想以及《C++沉思录》原作者10多年C++程序生涯的真知灼见。该书的作者Andrew Boeing和Barbar Moo在C++发展史上有不可质疑的权威地位。该书的最大特点是在于它不仅仅告诉你什么是答案,更重要的是告诉你思考的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,解决问题的步骤和方向。该书很适合我们刚掌握C++这些人,它可以让我们真正理解C++的设计思想,提供给我们很多宝贵的经验,让我们少走很多弯路。 关键词:C++, 设计思想,设计方法 Abstract:This article focus on a book called Ruminations on C++: A Decade of Programming Insight and Experience. The book describes some of the design concepts, technical details of the mainstream software development t tools : C++ and insight of author’s career which is more than 10 years. The book's author Andrew Boeing and Barber Moo have very important position which cannot be questioned in the history of C++ .It’s greatest feature is that it not only tell you what the answer is , more importantly, tell you the methods of thinking, steps and directions of solving problem. It is suitable for us which just learn C++. It will let us really understand the design of C++,provide us with valuable experience which let us avoid detours. Keywords:C++,Design ideas, Design method 1 引言 C++从被发明到现在一直充满着争议。一般认为,使用Java或C#的开发成本比C++低,其复杂度也没Java等面向对象的高。[1]但是,随着代码量和复杂度的增加,C++的优势将会越来越明显,特别是它的形式可以变化多端,以解决不同类型的问题。。C++实际上已经悄悄地将软件工程性提升到一个前所未有的高度,特别是现在工业开发上很多大公司都在采用C++。 开发语言的学习不仅仅是要知道如何去使用,更多的是要了解其构造,特别是其开发的思想体系,所有纷繁复杂的技术细节背后都一套其特有的核心观念,只有真正掌握其核心才能随心所欲,在实践中有“主心骨”。 我们介绍的这本书正是解决这个问题:C++最基本核心观念就是“用类来表示概念”C++解决复杂性的基本原则是抽象,面向对象思想是C++的手段之一,而不是全部。 2 C++介绍 首先我们要先了解一下C++的一些基本内容。 C++是美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了的一种编程语言。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。[2]C++在学术界和工业界都在稳定的发展,C++经过多年的积淀,已经开始越来越稳健,思路越来越清晰,越来越演化成为一种强大而又实用的编程语言。[3] 3 C++的发展 C++语言发展大概可以分为三个阶段:    第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;    第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言,C++受到了一定的冲击;    第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言之一。[4] 4 C++设计思想 C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。 C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。 C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。 C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。 C++避免平台限定或没有普遍用途的特性。 C++不使用会带来额外开销的特性。 C++设计成无需复杂的程序设计环境。[5] 5 C++的组成 C子语言:C++支持C语言的几乎全部功能。 面向对象的C++语言:随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本.    泛型编程语言:C++强大模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。    STL:随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。[6] 6 《C++沉思录》介绍 该书是基于科目教学式的。它不对那些晦涩生僻的细节进行长篇大论,这是一本关于思想和技术的书。通过对该书中一些案例代码的分析,并加以改进,会很好地巩固你对C++的理解。本书想告诉你用C++编程时怎么进行思考,以及如何思考问题并用C++表述解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 本书划分为6篇: 第一篇是对主题的扩展介绍,这些主题将会遍布全书。并会展现有关抽象和务实的基本思想。这些思想会贯穿全书,并渗透了C++设计原则和应用策略。 第二篇是着眼于继承和面向对象编程。在这一部分本书会探讨关于继承的重要思想。它让你了解继承的重要性以及它的作用,还告诉你何时需要避免继承,继承对那些人有益。C++填补了面向对象编程语言的空白,能为动态绑定的函数调用快速生成代码。 第三篇探索模板技术,这些模板技术提供了一个特别强大的抽象机制,可以构造很多新的容器,可以建立泛型抽象。 第四篇将会讨论库的设计和使用。通过类库就能扩展C++,而不用去开发新的语言和编译器。 第五篇本为会介绍学习一些特殊编程技术。你可以学会游刃有余的组合和分开类,掌握类的使用。 第六篇将会返回头对本书所涉及的内容做一回顾,让你对C++的认识更深。 7 《C++沉思录》内容 了解了书的基本内容,那我们现在就要深入了解它,看它能带给我们什么新的内容和体会。 我们了解编程语言之前,必须要了解一个概念:抽象。何为抽象?抽象就是有选择的忽略。编程也依赖于一种选择,选择忽略什么和何时忽略,也就是说通过建立抽象来忽略我们此刻并不重视的因素。 C++允许我们进行广阔的抽象,并且隐藏了用户无需关心的抽象工作细节,它还考虑了特殊用户群的需求。C++还保留了不少C的优点,比如偏重执行速度快、可移植性强、与硬件和其他软件系统的接口简单。 这些C++的特点我们必须要首先明白。 第一章里,作者用一个ASD开发为例说明他为什么会去选用C++而不是其他编程语言。 当他在编写ASD软件时,发现其可靠性和通用性这两个需求相互冲突,实现起来很困难。ASD需要灵活得动态分配内存,而C没有内建的可变数组,这很难满足需求,如果要满足需求,只能导致大量的动态内存分配,导致复杂性增加,随而可靠性降低。 作者在用很多其他编程软件发现很难比较好得解决这个问题,最终他决定使用C++来解决这个问题。作者发现如果用C来修改,则必须要使所有其他的字符串函数都返回一个指向刚分配的内存的指针,那作者就不必决定要不要释放内存,使用完就释放,但是这样的话程代码就会十分巨大。而用C++ 却不会这样。这得归功于C++的两个优势:一是其抽象数据类型的观念。二是其组件包,用于处理字符串和链表,该组件包还支持可容纳用户对象的可变长链表。 通过实际的案例,作者让我们感受到了C++的抽象的优点。 第二章中,作者用过去10年的工作经验来解答为什么用C++工作,理解怎样使用它们,以及C++的魅力何在。 作者告诉我们在实际的编程中,我们一定要有抽象的感念,这样才能在处理大问题时,把它分解成独立的子问题,并确保它们相互独立,这样才便于我们解决问题。就像在编程中最重要的有一点是内存的管理,有些语言通过垃圾收集来解决这个问题,这是一种当内存不再需要时自动回收内存的技术。但垃圾收集要求系统在运行速度、编译和运行时系统复杂度方面付出一定的代价,而且它只回收内存,不管理其他资源。 而C++却采用了另一种方式:如果某种数据结构需要动态分配资源,数据结构的设计者可以在构造函数和析构函数中精确定义如何释放该结构所对应的资源。该机制虽没垃圾收集灵活,但它对环境要求低,内存一旦不用就释放。还有在C++中,缓冲输出文件类的定义必须包括一个释放该缓冲区的析构函数。 第三章,作者有了两个自己身边的故事告诉我们一个道理:一种语言写出的程序不能在系统中运行起来再优秀又有什么用,这就是C++的可移植性。一台机器只要能支持C就能支持C++,C++能在任何已经存在的环境中运行。 第四章开始就进入了第二篇,重点介绍类和继承。在这一章中,作者通过一些提问让我们明白我们在使用C++时要让编译器指出什么时候类应该有一个虚析构函数、什么时候要自动提供析构函数。 第五章中讨论了一种方法,通过定义代理的对象来解决一个问题,这个问题是如何让设计一个C++容器,使它有能力包含类型不同而彼此相关的对象。通过作者的分析我们明白代理运行起来和它所代表的对象基本相同,但是允许将整个派生层压缩在一个对象类型中。 第六章中作者将会重点讨论句柄的类,它允许在保持代理的多态行为的同时,还可以避免进行不必要的复制。 第七章中继续讨论句柄的类,因为在第六章中第一的句柄类有个缺点:为了把句柄绑到类T的对象上,必须定义一个具有类型为T的成员的新类。所以在新的一章中定义了一种新的方法:将引用计数从数据中分离出来,把引用计数放入它自己的对象中。 第八章作者用一个程序展示了面对对象的三个要素:数据抽象、继承以及动态绑定,让我们对这三个要素有了进一步的认识。 第九章和第十章都是在解决一个问题。作者通过对这个问题的思考和解决,让我们明白,在解决问题时,不仅要考虑眼前问题还要看到长远变化。 第十一章作者想告诉我们在什么时候不应当使用虚函数。他说尽管虚函数有很吸引人的特点,但是仍存在着些问题:虚函数代价并不高昂,但在使用前也要认真考虑其开销;有些情况下非虚函数能够运行,而虚函数却不行;不是所有类都是为继承而设计的。 第十二章开始作者就要开始介绍模板。模板最重要的一个特点就是实用性。 第十二章和第十三章介绍了容器并告诉你如何提取容器中的元素。我们明白在C++中提供给用户写自己容器的方法,通过这方法我们就可以建立我们想要的容器。 第十四章作者就介绍了迭代器。什么叫迭代器。通常情况下,每个容器类都有一个或者多个相关的迭代器类型。迭代器能使我们在不暴露容器内部结构的情况下访问容器的元素。作者通过对迭代器构建的讨论,让我们明白一点:要定义一个抽象数据类型,你就必须确定它的具体行为。 第十五章介绍了一种称之为Seq的精简指令集容器类。 第十六章作者将告诉我们如何使用模板来提供抽象接口。凭借这些抽象接口,我们可以写出独立于任何一种实际类型的函数。作者举了一个sum函数的例子,来说明怎么才能把C++的类定义用作接口,以减少系统各部分对彼此的耦合度。 第十七章讨论了标准模板库(STL)。作者想在本章集中讨论STL的基本思想。 第十八章介绍了泛型算法。所谓泛型算法,就是指:对于所操作的数据结构的细节信息,只加入了最低限度的了解。STL根据数据结构能够支持的有效操作,将这些数据结构进行分类,然后,对于每个算法,它会指出该算法所需的数据结构类型。被分类的用来访问数据结构的类型,这些类型的对象叫做迭代器。迭代器共分5种。概念继承将这些种类关联起来;之所以称之为“概念的”,是应为这种类本身都是概念。 这一套结构使得我们很容易判断出何种算法应该在何种数据结构上工作。另外它还提供了一种框架,其他人也可以根据这个框架来补充程序库之外的新算法。 第十九章到第二十一章,本书除了介绍迭代器和配接器外,还介绍了函数对象的概念。简单的说函数对象提供了一种方法,将要调用的函数与准备传递给这个函数的隐式参数捆绑起来。由于函数对象十分灵活,能是很复杂的事情成为可能。 第二十三章开始就要讨论C++的库。库的使用使得C++变得可扩展。 8 小结 通过对这本书的学习使我对C++的认识有了一步飞跃,作者使用的不是很羞涩的语言来解释C++中一些结构,而是对一些实际问题,实际的程序的修改,功能补充等形象的方法来使我们明白C++的真谛。看了这本书,作者不像是简单的教授灌输一种C++的思想,而是通过一种相互的讨论,让你真正明白C++的设计核心思想,以及它为什么会这样设计。这本书能让你明白C++中很多函数结构如何组成以及如何游刃有余得使用它们。 参考文献 [1] 郭永宁.Java与C++的比较[J].福建师范大学福清分校学报.2002(02):31-33 [2] 彭铮.编程语言简史[J].CSDM开发高手.2004(06):44-47 [3] 孟岩.C++平淡是真[J].程序员.2008(06):90 [4] 陈建国.C++语言从入门到精通[M].机械工业出版社.2011:67-73 [5] 叶劲峰.C++强大的背后[J].程序员.2010(08):59-61 [6] 王海鹏.闳约深美C++[J].计算机教育.2006(02):77-80 � EMBED Word.Picture.8 ��� _992176821.doc
本文档为【C++沉思录_读后感】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_293879
暂无简介~
格式:doc
大小:132KB
软件:Word
页数:10
分类:互联网
上传时间:2013-04-02
浏览量:38