C语言接口与实现:创建可重用软件的技术(英文版)(C语言程序员不可多得的好书)
基本信息
- 原书名: C Interfaces and Implementations: Techniques for Creating Reusable Software
- 原出版社: Addison-Wesley Professional
- 作者: (美)David R. Hanson [作译者介绍]
- 丛书名: 图灵程序设计丛书 C/C++系列
- 出版社:人民邮电出版社
- ISBN:9787115231130
- 上架时间:2010-8-2
- 出版日期:2010 年8月
- 开本:16开
- 页码:519
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > C/Turbo C > C
编辑推荐
接口描述简单明了,程序员可将此书用作相关接口的参考手册
深入剖析如何将数据结构及其相关算法打包成可重用的模块
分析了全部24个API和8个示例应用的源代码
揭秘了许多鲜有文档的C语言编程技巧
内容简介回到顶部↑
本书概念清晰、实例详尽,是一本有关设计、实现和有效使用c语言库函数,掌握创建可重用c语言软件模块技术的参考指南。书中提供了大量实例,重在阐述如何用一种与语言无关的方法将接口设计实现独立出来,从而用一种基于接口的设计途径创建可重用的api。
本书是所有c语言程序员不可多得的好书,也是所有希望掌握可重用软件模块技术的人员的理想参考书,适合各层次的面向对象软件开发人员、系统分析员阅读。
本书是所有c语言程序员不可多得的好书,也是所有希望掌握可重用软件模块技术的人员的理想参考书,适合各层次的面向对象软件开发人员、系统分析员阅读。
作译者回到顶部↑
本书提供作译者介绍
David R.Hanson 普林斯顿大学计算机科学系教授,有着二十多年编程语言研究经验。他曾经同贝尔实验室合作开展研究工作,是适用于UNIX系统上的高质量C编译器Icc的开发者之一。另著有A Retargetable C Compiler: Design and Implementation一书。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
1 introduction 1
1.1 literate programs 2
1.2 programming style 8
1.3 efficiency 11
further reading 12
exercises 13
2 interfaces and implementations 15
2.1 interfaces 15
2.2 implementations 18
2.3 abstract data types 21
2.4 client responsibilities 24
2.5 efficiency 30
further reading 30
exercises 31
3 atoms 33
3.1 interface 33
3.2 implementation 34
further reading 42
4 exceptions and assertions 45
4.1 interface 47
1.1 literate programs 2
1.2 programming style 8
1.3 efficiency 11
further reading 12
exercises 13
2 interfaces and implementations 15
2.1 interfaces 15
2.2 implementations 18
2.3 abstract data types 21
2.4 client responsibilities 24
2.5 efficiency 30
further reading 30
exercises 31
3 atoms 33
3.1 interface 33
3.2 implementation 34
further reading 42
4 exceptions and assertions 45
4.1 interface 47
前言回到顶部↑
如今的程序员忙于应付大量关于API(Application Programming Interface)的信息。但是,大多数程序员都会在其所写的几乎每一个应用程序中使用API并实现API的库,只有少数程序员会创建或发布新的能广泛应用的API。事实上,程序员似乎更喜欢使用自己搞的东西,而不愿意查找能满足他们要求的程序库,这或许是因为写特定应用程序的代码要比设计可广泛使用的API容易。
不好意思,我也不能免俗:lcc(Chris Fraser和我为ANSI/ISO C编写的编译器)就是从头开始编写的API。(在A Retargetable C Compiler: Design and Implementation一书中有关于lcc的介绍。)编译器是这样一类应用程序:可以使用标准接口,并且能够创建在其他地方也可以使用的接口。这类程序还有内存管理、字符串和符号表以及链表操作等。但是lcc仅使用了很少的标准C库函数的例程,并且它的代码几乎都无法直接应用到其他应用程序中。
本书提倡的是一种基于接口及其实现的设计方法,并且通过对24个接口及其实现的描述详细演示了该方法。这些接口涉及很多计算机领域的知识,包括数据结构、算法、字符串处理和并发程序。这些实现并不是简单的玩具,而是为在产品级代码中使用而设计的。实现的代码是可免费提供的。
C编程语言基本不支持基于接口的设计方法,而C++和Modula-3这样的面向对象的语言则鼓励将接口与实现分离。基于接口的设计跟具体的语言无关,但是它要求程序员对像C一样的语言有更强的驾驭能力和更高的警惕性,因为这类语言很容易破坏带有隐含实现信息的接口,反之亦然。
然而,一旦掌握了基于接口的设计方法,就能够在服务于众多应用程序的通用接口基础上建立应用程序,从而加快开发速度。在一些C++环境中的基础类库就体现了这种效果。增加对现有软件(接口实现库)的重用,能够降低初始开发成本,同时还能降低维护成本,因为应用程序的更多部分都建立在通用接口的实现之上,而这些实现无不经过了良好的测试。
本书中的24个接口引自几本参考书,并且针对本书特别做了修正。一些数据结构(抽象数据类型)中的接口源于lcc代码和20世纪70年代末到80年代初所做的Icon编程语言的实现代码(参见R.E.Griswold和M.T.Griswold所著的The Icon Programming Language)。其他的接口来自另外一些程序员的著作,我们将会在每一章的参考资料(Further Reading)部分给出详细信息。
书中提供的一些接口是针对数据结构的,但本书不是介绍数据结构的,本书的侧重点在算法工程(包装数据结构以供应用程序使用),而不在数据结构算法本身。然而,接口设计的好坏总是取决于数据结构和算法是否合适,因此,本书可算是传统数据结构和算法教材(如Robert Sedgewick所著的Algorithms in C)的有益补充。
大多数章节会只介绍一个接口及其实现,少数章节还会描述与其相关的接口。每一章的Interface部分将会单独给出一个明确而详细的接口描述。对于兴趣仅在于接口的程序员来说,这些内容就相当于一本参考手册。少数章节还会包含Example部分,会说明在一个简单的应用程序中接口的用法。
每章的Implementation部分将会详细地介绍本章接口的实现代码。有些例子会给出一个接口的多种实现方法,以展示基于接口设计的优点。这些内容对于修改或扩展一个接口或是设计一个相关的接口将大有裨益。许多练习题会进一步探究一些其他可行的设计与实现的方法。如果仅是为了理解如何使用接口,可以不用阅读Implementation一节。
接口、示例和实现都以literate程序的方式给出,换句话说,源代码及其解释是按照最适合理解代码的顺序交织出现的。代码可以自动地从本书的文本文件中抽取,并按C语言所规定的顺序组合起来。其他也用literate程序讲解C语言的书籍有A Retargetable C Compiler和D.E.Knuth写的The Stanford GraphBase: A Platform for Combinatorial Computing。
本书架构
本书材料可分成下面的几大类:
基础 1. 简介
2. 接口与实现
4. 异常与断言
5. 内存管理
6. 再谈内存管理
数据结构 7. 链表
8. 表格
9. 集合
不好意思,我也不能免俗:lcc(Chris Fraser和我为ANSI/ISO C编写的编译器)就是从头开始编写的API。(在A Retargetable C Compiler: Design and Implementation一书中有关于lcc的介绍。)编译器是这样一类应用程序:可以使用标准接口,并且能够创建在其他地方也可以使用的接口。这类程序还有内存管理、字符串和符号表以及链表操作等。但是lcc仅使用了很少的标准C库函数的例程,并且它的代码几乎都无法直接应用到其他应用程序中。
本书提倡的是一种基于接口及其实现的设计方法,并且通过对24个接口及其实现的描述详细演示了该方法。这些接口涉及很多计算机领域的知识,包括数据结构、算法、字符串处理和并发程序。这些实现并不是简单的玩具,而是为在产品级代码中使用而设计的。实现的代码是可免费提供的。
C编程语言基本不支持基于接口的设计方法,而C++和Modula-3这样的面向对象的语言则鼓励将接口与实现分离。基于接口的设计跟具体的语言无关,但是它要求程序员对像C一样的语言有更强的驾驭能力和更高的警惕性,因为这类语言很容易破坏带有隐含实现信息的接口,反之亦然。
然而,一旦掌握了基于接口的设计方法,就能够在服务于众多应用程序的通用接口基础上建立应用程序,从而加快开发速度。在一些C++环境中的基础类库就体现了这种效果。增加对现有软件(接口实现库)的重用,能够降低初始开发成本,同时还能降低维护成本,因为应用程序的更多部分都建立在通用接口的实现之上,而这些实现无不经过了良好的测试。
本书中的24个接口引自几本参考书,并且针对本书特别做了修正。一些数据结构(抽象数据类型)中的接口源于lcc代码和20世纪70年代末到80年代初所做的Icon编程语言的实现代码(参见R.E.Griswold和M.T.Griswold所著的The Icon Programming Language)。其他的接口来自另外一些程序员的著作,我们将会在每一章的参考资料(Further Reading)部分给出详细信息。
书中提供的一些接口是针对数据结构的,但本书不是介绍数据结构的,本书的侧重点在算法工程(包装数据结构以供应用程序使用),而不在数据结构算法本身。然而,接口设计的好坏总是取决于数据结构和算法是否合适,因此,本书可算是传统数据结构和算法教材(如Robert Sedgewick所著的Algorithms in C)的有益补充。
大多数章节会只介绍一个接口及其实现,少数章节还会描述与其相关的接口。每一章的Interface部分将会单独给出一个明确而详细的接口描述。对于兴趣仅在于接口的程序员来说,这些内容就相当于一本参考手册。少数章节还会包含Example部分,会说明在一个简单的应用程序中接口的用法。
每章的Implementation部分将会详细地介绍本章接口的实现代码。有些例子会给出一个接口的多种实现方法,以展示基于接口设计的优点。这些内容对于修改或扩展一个接口或是设计一个相关的接口将大有裨益。许多练习题会进一步探究一些其他可行的设计与实现的方法。如果仅是为了理解如何使用接口,可以不用阅读Implementation一节。
接口、示例和实现都以literate程序的方式给出,换句话说,源代码及其解释是按照最适合理解代码的顺序交织出现的。代码可以自动地从本书的文本文件中抽取,并按C语言所规定的顺序组合起来。其他也用literate程序讲解C语言的书籍有A Retargetable C Compiler和D.E.Knuth写的The Stanford GraphBase: A Platform for Combinatorial Computing。
本书架构
本书材料可分成下面的几大类:
基础 1. 简介
2. 接口与实现
4. 异常与断言
5. 内存管理
6. 再谈内存管理
数据结构 7. 链表
8. 表格
9. 集合
媒体评论回到顶部↑
“至今好像还没人写过关于如何设计、实现和有效使用库函数的指南,Hanson的力作填补了这一空白。这是一本可与Software Tools比肩的作品,值得所有的C语言程序员珍藏。”
——W.Richard Stevens,已故知名UNIX和网络专家
“我向每位C语言程序员推荐这本书。你们早就该重视书中所描述的各种技术了。”
——Norman Ramsey,贝尔实验室研究员
“从C语言新手变成高手的必读之作。”
——Amazon.com
——W.Richard Stevens,已故知名UNIX和网络专家
“我向每位C语言程序员推荐这本书。你们早就该重视书中所描述的各种技术了。”
——Norman Ramsey,贝尔实验室研究员
“从C语言新手变成高手的必读之作。”
——Amazon.com
【插图】
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· C/C++ 经典著作(《C专家编程》《C++ Templates中文版》《C和指针 》《C陷阱与缺陷》《C++沉思录》)
· 图灵公司详细书目


点击看大图





加载中...
