可重用的软件模块是构建大规模可靠应用程序的基石,创建可重用的软件模块是每个程序员和项目经理必须掌握的技能。C语言对创建可重用的API提供的语言和功能支持非常少,虽然C程序员写应用时都会用到API和库,但却很少有人去创建和发布新的能广泛应用的API。本书介绍用一种基于接口的设计方法创建可重用的API,这一方法将接口与实现分离开来,且与语言无关。书中详细描述了24个接口及其实现,便于读者深入了解此方法。这些接口涉及很多计算机领域的知识,包括数据结构、算法、字符串处理和并发程序。
本书是C语言领域的的经典名著,出版十余年仍畅销不衰,是几代程序员倍加推崇的力作。
本书概念清晰、实例详尽,是一本有关设计、实现和有效使用C语言库函数,掌握创建可重用C语言软件模块技术的参考指南。书中提供了大量实例,重在阐述如何用一种与语言无关的方法将接口设计实现独立出来,从而用一种基于接口的设计途径创建可重用的API。
本书是所有C语言程序员不可多得的好书,也是所有希望掌握可重用软件模块技术的人员的理想参考书,适合各层次的面向对象软件开发人员、系统分析员阅读。
1 Introduction
1.1 Literate Programs
1.2 Programming Style
1.3 Efficiency
Further Reading
Exercises
2 Interfaces and Implementations
2.1 Interfaces
2.2 Implementations
2.3 Abstract Data Types
2.4 Client Responsibilities
2.5 Efficiency
Further Reading
Exercises
3 Atoms
3.1 Interface
3.2 Implementation
Further Reading
Exercises
4 Exceptions and Assertions
4.1 Interface
4.2 Implementation
4.3 Assertions
Further Reading
Exercises
5 Memory Management
5.1 Interface
5.2 Production Implementation
5.3 Checking Implementation
Further Reading
Exercises
6 More Memory Management
6.1 Interface
6.2 Implementation
Further Reading
Exercises
7 Lists
7.1 Interface
7.2 Implementation
Further Reading
Exercises
8 Tables
8.1 Interface
8.2 Example: Word Frequencies
8.3 Implementation
Further Reading
Exercises
9 Sets
9.1 Interface
9.2 Example: Cross-Reference Listings
9.3 Implementation
9.3.1 Member Operations
9.3.2 Set Operations
Further Reading
Exercises
10 Dynamic Arrays
10.1 Interfaces
10.2 Implementation
Further Reading
Exercises
11 Sequences
11.1 Interface
11.2 Implementation
Further Reading
Exercises
12 Rings
12.1 Interface
12.2 Implementation
Further Reading
Exercises
13 Bit Vectors
13.1 Interface
13.2 Implementation
13.2.1 Member Operations
13.2.2 Comparisons
13.2.3 Set Operations
Further Reading
Exercises
14 Formatting
14.1 Interface
14.1.1 Formatting Functions
14.1.2 Conversion Functions
14.2 Implementation
14.2.1 Formatting Functions
14.2.2 Conversion Functions
Further Reading
Exercises
15 Low-Level Strings
15.1 Interface
15.2 Example: Printing Identifiers
15.3 Implementation
15.3.1 String Operations
15.3.2 Analyzing Strings
15.3.3 Conversion Functions
Further Reading
Exercises
16 High.Level Strings
16.1 Interface
16.2 Implementation
16.2.1 String Operations
16.2.2 Memory Management
16.2.3 Analyzing Strings
16.2.4 Conversion Functions
Further Reading
Exercises
17 Extended-Precision Arithmetic
17.1 Interface
17.2 Implementation
17.2.1 Addition and Subtraction
17.2.2 Multiplication
17.2.3 Division and Comparison
17.2.4 Shifting
17.2.5 String Conversions
Further Reading
Exercises
18 Arbitrary-Precision Arithmetic
18.1 Interface
18.2 Example: A Calculator
18.3 Implementation
18.3.1 Negation and Multiplication
18.3.2 Addition and Subtraction
18.3.3 Division
18.3.4 Exponentiation
18.3.5 Comparisons
18.3.6 Convenience Functions
18.3.7 Shifting
18.3.8 String and Integer Conversion
Further Reading
Exercises
19 Multiple-Precision Arithmetic
19.1 Interface
19.2 Example: Another Calculator
19.3 Implementation
19.3.1 Conversions
19.3.2 Unsigned Arithmetic
19.3.3 Signed Arithmetic
19.3.4 Convenience Functions
19.3.5 Comparisons and Logical Operations
19.3.6 String Conversions
Further Reading
Exercises
20 Threads
20.1 Interfaces
20.1.1 Threads
20.1.2 General Semaphores
20.1.3 Synchronous Communication Channels
20.2 Examples
20.2.1 Sorting Concurrently
20.2.2 Critical Regions
20.2.3 Generating Primes
20.3 Implementations
20.3.1 Synchronous Communication Channels
20.3.2 Threads
20.3.3 Thread Creation and Context-Switching
20.3.4 Preemption
20.3.5 General Semaphores
20.3.6 Context-Switching on the MIPS and ALPHA
Further Reading
Exercises
Interface Summary
Bibliography
Index