程序设计实践:探索可移植性的艺术

需积分: 6 1 下载量 18 浏览量 更新于2024-08-01 收藏 869KB PDF 举报
"B.Kernighan(Addison-Wesley1999)程序设计实践(中译本)08" 关注C语言,探讨程序设计中的可移植性问题。 在编程领域,可移植性是一个重要的概念,指的是一个程序在不同的计算环境(如不同的操作系统、处理器或编译系统)中运行时,无需或只需少量修改就能正常工作的能力。 Brian W. Kernighan和Rob Pike在书中强调了可移植性的重要性,并指出理想的可移植性意味着程序在任何环境下都能无缝运行。 作者提到,虽然编写可移植的软件可能会增加初期开发的复杂性,但有以下几个原因促使我们关注这个问题: 1. **需求演变**:随着时间和用户需求的变化,原本为特定环境设计的程序往往会被要求在新的环境中运行。良好的可移植性可以减少后续的维护工作量。 2. **环境变化**:技术的更新换代,如编译器、操作系统或硬件的升级,可能导致原有程序不再兼容。具有高可移植性的程序更能适应这些变化。 3. **设计质量**:追求可移植性的过程通常会促进更好的设计和结构,因为这要求程序对特定环境的依赖减少,从而提高整体的代码质量。 实现可移植性并不意味着追求绝对的无条件可运行,而是尽可能地让程序能在多种环境的交集中工作。这需要在编程时遵循一些原则,例如: - **利用标准**:遵循已有的编程标准,如ANSI C标准,确保代码在符合标准的环境中都能正确编译和执行。 - **抽象与封装**:通过接口抽象和封装技术,隐藏特定平台的实现细节,使得核心功能独立于平台。 - **避免依赖特定特性**:尽量不依赖特定编译器或操作系统的非标准特性,以减少移植时的修改工作。 - **模块化设计**:将程序分解为可重用的模块,每个模块尽可能具有良好的可移植性,降低整体的移植难度。 书中的内容还暗示,编写可移植的程序不仅是技术上的挑战,也是对程序员设计思维的锻炼。这种思维方式有助于编写出更加健壮、灵活和易于维护的代码,即使在最初并未预见到的场景下也能表现出色。 "B.Kernighan(Addison-Wesley1999)程序设计实践(中译本)08" 强调了可移植性在程序设计中的重要性,提倡通过良好的设计和编码实践来提升软件的可移植性,以适应不断变化的技术环境和需求。这对于提升程序员的技能和编写高质量的软件具有深远的影响。