非计算机专业的学生(包括广大科技人员)学习和掌握软件技术不可能像计算机专业的学生那样学习软件的各门课程,因此有必要将主要的软件技术和知识在一门课程中介绍,但又不能是拼盘式的组合。在国外根本没有这样的教材,国内这样的教材也不多,有的教材虽然名称叫“软件技术”,但实际上是一些新软件的使用。本教材介绍的是软件技术,而不是软件的使用。
本教材主要是针对非计算机专业的学生对于计算机软件技术的需要,将有关软件基础知识以及应用技术介绍给读者。其特点如下:
(1) 系统性。本教材并不是简单地将计算机专业的各门课程内容拼装在一起,而是根据软件应用技术的需要,将它们有机地结合在一起,为读者提供软件开发中所需要的软件知识和技术。全书以数据结构与算法为基础,以软件技术为线索,系统性强。
(2) 强调应用。本教材强调以应用为目的,全书中实例比较丰富。全书几乎是围绕解决软件开发中所遇到的软件技术问题来展开的。在介绍系统软件(如操作系统)时,为了便于读者理解,也适当介绍一些原理,但主要还是介绍实现系统软件中的技术,以便读者将这些技术用到应用软件的开发中。
(3) 可读性强。本书深入浅出,通过例子引出基本概念,便于读者接受。
本书第二版主要修订的是第一版的前3章。书中所有的算法均采用C++描述。由于C++语言既可用于面向过程的程序设计,又支持面向对象的程序设计,因此,作者在对算法进行描述时,尽量采用最合适的程序设计方法。例如,对于基本的数据结构(如顺序存储与链式存储的线性表、栈、队列等)采用面向对象的方法,将数据与运算封装成类,以便在其他应用程序中直接使用;而对于同一批数据进行同类操作的各种算法(如对线性表的各种排序方法)采用面向过程的方法,将各种不同的算法用普通函数来描述。这样,书中的所有算法就可以直接在实际应用中方便地使用。
本书内容丰富,通俗易懂,实用性强,书中的所有算法程序(C++描述)均上机调试通过。本书可作为非计算机专业的研究生或大学生的软件课程教材,也可作为广大从事计算机应用工作的科技人员的参考书。由于作者水平有限,书中难免有不妥之处,恳请读者批评指正。
作者 2007年1月