Applied C++中文版——构建更佳软件的实用技术
[特价中]
基本信息
- 作者: [美]Philip Romanik,Amy Muntz [作译者介绍]
- 译者: 陈学峰 杨健康 林琪
- 丛书名: 深入C++系列
- 出版社:中国电力出版社
- ISBN:7508321855
- 上架时间:2004-5-10
- 出版日期:2004 年5月
- 开本:16开
- 页码:284
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > C++ > C++
合作专区 > 微软技术图书 > 微软程序设计 > 微软C/C++/VC++
编辑推荐
本书是开发高质量、可维护软件的实用而简明的指导书籍。它体现了C++、模板以及标准模板库(STL)对于工业级程序设计的强大作用。不论你是独立的开发人员,还是在大的团队中进行软件开发,本书提供的技术和技巧都将有助于提高你的编程语言和设计方面的技能,并告诉你如何更有效地解决实际问题。
内容简介回到顶部↑
本书是开发高质量、可维护软件的实用而简明的指导书籍。它体现了c++、模板以及标准模板库(stl)对于工业级程序设计的强大作用。不论你是独立的开发人员,还是在大的团队中进行软件开发,本书提供的技术和技巧都将有助于提高你的编程语言和设计方面的技能,并告诉你如何更有效地解决实际问题。
此书是作者丰富专业经验的结晶,并且主要通过例子进行讲授。为了介绍对所有应用程序都有用的软件技术,他们开发了一个工具包来解决复杂的数字图像处理问题—作者采用了具体而真实的问题,并对特性、性能以及可扩展性需求提供了准确的描述,以此展示了如何有效地应用现有的软件组件和c++固有的工具,加速软件开发,促进软件重用以及发布成功的软件产品。
随附的光盘中包括书中示例项目的所有源代码,其中包括图像框架、单元测试框架和makefile文件 光盘中还包括一些有用的第三方软件,例如sysinternal的debugview,用来优化代码的intel集成性能原语(intel ipp)评估版和intel c++ compiler评估版。
philip romanik是一名独立顾问,在过去的20年里,他一直从事软件开发,设计和实现真实世界的软件应用 他是为性能要求较高的应用领域开发实时、嵌入式软件的专家、他已经为其客户发明了多项专利技术,同时还为诸如柯达公司和微软公司等业界巨头提供过服务。
amy muntz也是一名独立顾问,她不仅拥有高深的技术经验,在商业领域也有着很高的水平 她在编写这两个领域的书籍方面有着丰富的经验。她专门致力于富有竞争力的软件产品的开发和管理,在过去15年间曾成功地帮助其客户构建了满足其商业目标的产品,并且在市场上成功地推广了这些产品。
此书是作者丰富专业经验的结晶,并且主要通过例子进行讲授。为了介绍对所有应用程序都有用的软件技术,他们开发了一个工具包来解决复杂的数字图像处理问题—作者采用了具体而真实的问题,并对特性、性能以及可扩展性需求提供了准确的描述,以此展示了如何有效地应用现有的软件组件和c++固有的工具,加速软件开发,促进软件重用以及发布成功的软件产品。
随附的光盘中包括书中示例项目的所有源代码,其中包括图像框架、单元测试框架和makefile文件 光盘中还包括一些有用的第三方软件,例如sysinternal的debugview,用来优化代码的intel集成性能原语(intel ipp)评估版和intel c++ compiler评估版。
philip romanik是一名独立顾问,在过去的20年里,他一直从事软件开发,设计和实现真实世界的软件应用 他是为性能要求较高的应用领域开发实时、嵌入式软件的专家、他已经为其客户发明了多项专利技术,同时还为诸如柯达公司和微软公司等业界巨头提供过服务。
amy muntz也是一名独立顾问,她不仅拥有高深的技术经验,在商业领域也有着很高的水平 她在编写这两个领域的书籍方面有着丰富的经验。她专门致力于富有竞争力的软件产品的开发和管理,在过去15年间曾成功地帮助其客户构建了满足其商业目标的产品,并且在市场上成功地推广了这些产品。
作译者回到顶部↑
本书提供作译者介绍
Philip Romanik:是一名独立顾问,在过去的20年里,他一直从事软件开发,设计和实现真实世界的软件应用。他是为性能要求较高的应用领域开发实时、嵌入式软件的专家。他已经为其客户发明了多项专利技术,同时还为诸如柯达公司和微软公司等业界巨头提供过服务。
Amy Muntz:也是一名独立顾问,她不仅拥有高深的技术经验,在商业领域也有着很高的水平。她在编写这两个领域的书籍方面有着丰富的经验。她专门致力于富有竞争力的软件产品的开发和管理,在过去15年间曾成功地帮助.. << 查看详细
Amy Muntz:也是一名独立顾问,她不仅拥有高深的技术经验,在商业领域也有着很高的水平。她在编写这两个领域的书籍方面有着丰富的经验。她专门致力于富有竞争力的软件产品的开发和管理,在过去15年间曾成功地帮助.. << 查看详细
目录回到顶部↑
前 言
第1章 绪论
1.1 图像基础
1.2 小结
第2章 一个测试应用
2.1 图像类的设计
2.2 缩略类
2.3 类的实现
2.4 小结
第3章 设计技术
3.1 内存分配
3.2 原型
3.3 小结
第4章 设计考虑
4.1 编码原则
4.2 可重用代码
4.3 调试支持设计
4.4 小结
第5章 系统考虑
5.1 多线程和多进程设计
第1章 绪论
1.1 图像基础
1.2 小结
第2章 一个测试应用
2.1 图像类的设计
2.2 缩略类
2.3 类的实现
2.4 小结
第3章 设计技术
3.1 内存分配
3.2 原型
3.3 小结
第4章 设计考虑
4.1 编码原则
4.2 可重用代码
4.3 调试支持设计
4.4 小结
第5章 系统考虑
5.1 多线程和多进程设计
前言回到顶部↑
本书将介绍如何应用C++来解决开发商业软件时所固有的问题。参加过复杂软件开发小组的读者,对于这里提到的所谓商业软件的含义,应当有非常确切的理解。
商业软件(commercial software)要交付给用户(可以是内部用户,也可以是外部用户),用户就要依赖于你所提供的接口。商业软件可能置于嵌入式系统中,也可能是一个软件库或面向标准平台的应用程序。无论最终在什么环境运行,软件都必须在特定的时间发布,并且具备在市场中取得成功的所有要素。软件往往会由一个工程小组进行开发,但由另外一些工程师来对其进行扩展和维护。这些对软件进行扩展和维护的工程师很可能不是最初的开发小组成员,他们可能必须从网站听取客户的建议,并按照客户的要求为软件增加新的功能,或者纠正一些问题。
软件工程最大的挑战之一是组织一个工程小组来开发一个复杂的软件,而且要按照要求准时完成全部功能以交付使用。不过还存在另一个更为艰巨的挑战,即在该软件开发的同时,还要能够将其移交给其他的工程小组进行扩展和维护。本书所汇集的C++技术和实践技巧正是要满足这一要求,而且这些技术和技巧也已经得到了反复使用。对于许多情况,我们对理想解决方案和实际解决方案进行了比较。在此提供了对这两者加以权衡的讨论,以便你做出更全面的决定,而且在选择某个方法(而不是另一些方法)时,我们还给出了相应的指导原则。至于在你的应用中采用哪种方法最佳则要由你自己来决定。我们在开发商业软件中积累了一些实践技巧,这些技巧的使用使我们的软件更加成功,而本书的目的就是与你分享这些经验,希望能对你有所帮助。
如果你习惯于通过阅读代码来学习,那么你会发现本书中提供了大量的示例,供你学习之用。我们使用了一个贯穿全书的例子,以此宋介绍所有相关技术。由于我们编写本书的想法来源于开发图像软件的经验,所以尽管C++技术适用于任何技术领域,但书中的例子仍大多取自于图像处理领域。
本书以一个缩略图生成器的简单应用程序(尽管并不完备)作为起点。在原型阶段我们将使用这个应用来验证不同的C++设计和实现技术。这个应用非常简单,因此很易于理解,采用不同C++技术的效果也比较明显,因此很适合用来建立原型。
在这个简单的缩略图生成器中,存在一些固有问题,书中最后的图像框架程序将对这些问题加以解决。该应用程序具有如下特性:
■ 内存占用大(memory intensive)。图像处理需要高效地使用内存,因为图像可能会十分庞大且难于处理。内存管理对于整个应用程序的性能起着十分关键的作用。
■ 性能要求高(performance intensive)。虽然生成缩略图是一种简单易懂的图像处理技术,但在书中后面所介绍的技术(例如边界锐化和降低噪声)却需要通过周密细致的设计才能真正可用。能有好的图像函数来处理数字图像当然很不错,但如果这些函数需要耗费很长的运行时间,那就没有什么实际用处了。
完成了本书的学习后,你将得到一个可以用来处理你自己的数字图像的图像处理框架,以及一个实用的C++应用工具包。此图像处理框架提供了高效的图像存储和内存使用功能,还提供了处理数字图像的例程(例如边界锐化、图像大小调整、降低噪声、边界检测、图像缩减等等)、第三方软件的接口以及很多用来优化性能的工具。该框架是一个很有用的软件,它具备实用的设计和实现特性,因此甚至可以将它作为开发商业软件产品的基础。
随书附带的光盘中包含:缩略图生成器、原型以及最终的图像框架的完整源代码。可以从以下站点获取相应的所有更新版本:http://www.appliedcpp.com。
适用读者
本书假设你对C++很熟悉,这样当我们应用了该语言中的一些构造时,你会觉得似曾相识或曾经用过。同时假设你曾经开发过一些应用(可以是供个人使用,也可以是用于商业用途),而且熟悉标准模板库(Standard Template Library,STL)所提供的功能。我们非常希望能够与你一起细致地探讨一些特定C++构造的优缺点。最后,希望你真心喜欢具体的代码示例,因为代码示例在本书中比比皆是。
本书不是一本C++语言的参考书,不过我们也提供了一些入门知识,并对某些语法要求很严格或不常使用的内容做了相应介绍。关于C++语言的基础,我们推荐《The C++ Programming Language,Special Edition》[Stroustmp00]如果要深入讨论具体的C++构造,例如引用计数,则可以参考《Effective C++,Second Edition》”[Meyers98];关于STL的内容,我们推荐《Effective STL》[Meyers01];至于如何使用C++模板,我们建议你阅读《C++Templates》[Vandevoorde03] 以了解有关内容。
至于我们所选择的数字图像领域,在此并不要求你开发过任何处理图像的软件。书中提供了一些内容可供你复习有关图像的基本知识,如果你对图像处理相当熟悉,则可以跳过这一部分。当谈到任何应用于图像的特定操作时,在介绍具体的代码示例前,我们都会给出一个简单的解释以及操作前后图像的对照。如果你想更深入、精确地讨论图像处理操作,我们推荐《Digital Image Processing》[Pratt01]一书。
如何使用本书
我们希望你能连续地阅读这本书,因为在第2章介绍了一个具体示例,并将由此开发出第5章所示的最终图像框架设计。在整本书中,我们在标题以及每章第一页的概要框中都突出强调了将要探讨的C++技术。
这本书的组织结构如下。
第1章,绪论。对于我们写这本书所要达到的目标,这一章将给出一个总体上的介绍,另外,对于我们所推荐的C++技术,在此将揭示使用这些技术的背景以及一些个人喜好。我们还针对数字图像处理专门提供了一节可供选择的内容。如果你有开发图像应用的经验,那么可以跳过这一章的最后一节。
第2章,一个测试应用。我们将介绍一个简单而且尚不完备的应用,用于测试原型C++技术。之所以选择这个简单应用,是因为它能够有效地展示对不同的设计和实现进行取舍时所涉及的权衡问题。
第3章,设计技术。从这一章开始C++设计的讨论。在此用大量的代码示例来说明C++的设计策略,由于在这本书中模板的应用相当多,因此这里提供了模板的入门知识。最后,我们为设计的各个方面建立原型,并建立了支持设计所需的通用实用程序。
商业软件(commercial software)要交付给用户(可以是内部用户,也可以是外部用户),用户就要依赖于你所提供的接口。商业软件可能置于嵌入式系统中,也可能是一个软件库或面向标准平台的应用程序。无论最终在什么环境运行,软件都必须在特定的时间发布,并且具备在市场中取得成功的所有要素。软件往往会由一个工程小组进行开发,但由另外一些工程师来对其进行扩展和维护。这些对软件进行扩展和维护的工程师很可能不是最初的开发小组成员,他们可能必须从网站听取客户的建议,并按照客户的要求为软件增加新的功能,或者纠正一些问题。
软件工程最大的挑战之一是组织一个工程小组来开发一个复杂的软件,而且要按照要求准时完成全部功能以交付使用。不过还存在另一个更为艰巨的挑战,即在该软件开发的同时,还要能够将其移交给其他的工程小组进行扩展和维护。本书所汇集的C++技术和实践技巧正是要满足这一要求,而且这些技术和技巧也已经得到了反复使用。对于许多情况,我们对理想解决方案和实际解决方案进行了比较。在此提供了对这两者加以权衡的讨论,以便你做出更全面的决定,而且在选择某个方法(而不是另一些方法)时,我们还给出了相应的指导原则。至于在你的应用中采用哪种方法最佳则要由你自己来决定。我们在开发商业软件中积累了一些实践技巧,这些技巧的使用使我们的软件更加成功,而本书的目的就是与你分享这些经验,希望能对你有所帮助。
如果你习惯于通过阅读代码来学习,那么你会发现本书中提供了大量的示例,供你学习之用。我们使用了一个贯穿全书的例子,以此宋介绍所有相关技术。由于我们编写本书的想法来源于开发图像软件的经验,所以尽管C++技术适用于任何技术领域,但书中的例子仍大多取自于图像处理领域。
本书以一个缩略图生成器的简单应用程序(尽管并不完备)作为起点。在原型阶段我们将使用这个应用来验证不同的C++设计和实现技术。这个应用非常简单,因此很易于理解,采用不同C++技术的效果也比较明显,因此很适合用来建立原型。
在这个简单的缩略图生成器中,存在一些固有问题,书中最后的图像框架程序将对这些问题加以解决。该应用程序具有如下特性:
■ 内存占用大(memory intensive)。图像处理需要高效地使用内存,因为图像可能会十分庞大且难于处理。内存管理对于整个应用程序的性能起着十分关键的作用。
■ 性能要求高(performance intensive)。虽然生成缩略图是一种简单易懂的图像处理技术,但在书中后面所介绍的技术(例如边界锐化和降低噪声)却需要通过周密细致的设计才能真正可用。能有好的图像函数来处理数字图像当然很不错,但如果这些函数需要耗费很长的运行时间,那就没有什么实际用处了。
完成了本书的学习后,你将得到一个可以用来处理你自己的数字图像的图像处理框架,以及一个实用的C++应用工具包。此图像处理框架提供了高效的图像存储和内存使用功能,还提供了处理数字图像的例程(例如边界锐化、图像大小调整、降低噪声、边界检测、图像缩减等等)、第三方软件的接口以及很多用来优化性能的工具。该框架是一个很有用的软件,它具备实用的设计和实现特性,因此甚至可以将它作为开发商业软件产品的基础。
随书附带的光盘中包含:缩略图生成器、原型以及最终的图像框架的完整源代码。可以从以下站点获取相应的所有更新版本:http://www.appliedcpp.com。
适用读者
本书假设你对C++很熟悉,这样当我们应用了该语言中的一些构造时,你会觉得似曾相识或曾经用过。同时假设你曾经开发过一些应用(可以是供个人使用,也可以是用于商业用途),而且熟悉标准模板库(Standard Template Library,STL)所提供的功能。我们非常希望能够与你一起细致地探讨一些特定C++构造的优缺点。最后,希望你真心喜欢具体的代码示例,因为代码示例在本书中比比皆是。
本书不是一本C++语言的参考书,不过我们也提供了一些入门知识,并对某些语法要求很严格或不常使用的内容做了相应介绍。关于C++语言的基础,我们推荐《The C++ Programming Language,Special Edition》[Stroustmp00]如果要深入讨论具体的C++构造,例如引用计数,则可以参考《Effective C++,Second Edition》”[Meyers98];关于STL的内容,我们推荐《Effective STL》[Meyers01];至于如何使用C++模板,我们建议你阅读《C++Templates》[Vandevoorde03] 以了解有关内容。
至于我们所选择的数字图像领域,在此并不要求你开发过任何处理图像的软件。书中提供了一些内容可供你复习有关图像的基本知识,如果你对图像处理相当熟悉,则可以跳过这一部分。当谈到任何应用于图像的特定操作时,在介绍具体的代码示例前,我们都会给出一个简单的解释以及操作前后图像的对照。如果你想更深入、精确地讨论图像处理操作,我们推荐《Digital Image Processing》[Pratt01]一书。
如何使用本书
我们希望你能连续地阅读这本书,因为在第2章介绍了一个具体示例,并将由此开发出第5章所示的最终图像框架设计。在整本书中,我们在标题以及每章第一页的概要框中都突出强调了将要探讨的C++技术。
这本书的组织结构如下。
第1章,绪论。对于我们写这本书所要达到的目标,这一章将给出一个总体上的介绍,另外,对于我们所推荐的C++技术,在此将揭示使用这些技术的背景以及一些个人喜好。我们还针对数字图像处理专门提供了一节可供选择的内容。如果你有开发图像应用的经验,那么可以跳过这一章的最后一节。
第2章,一个测试应用。我们将介绍一个简单而且尚不完备的应用,用于测试原型C++技术。之所以选择这个简单应用,是因为它能够有效地展示对不同的设计和实现进行取舍时所涉及的权衡问题。
第3章,设计技术。从这一章开始C++设计的讨论。在此用大量的代码示例来说明C++的设计策略,由于在这本书中模板的应用相当多,因此这里提供了模板的入门知识。最后,我们为设计的各个方面建立原型,并建立了支持设计所需的通用实用程序。
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· C/C++ 经典著作(《C专家编程》《C++ Templates中文版》《C和指针 》《C陷阱与缺陷》《C++沉思录》)


点击看大图





加载中...
