### 了解开发相关的几个概念

计算机程序中涉及到的概念都比较抽象、专业。经常有初学者程序的人反应说，“别人说的什么名词性的东西，根本不明白是什么意思”。的确，掌握一些开发相关的概念，与别人沟通起来非常的方便。对于初学者经常问的问题，做了个总结，提供给编程词典的用户，希望给大家带来帮助。

：经常听到有人说，计算机语言可以归为面向过程语言和面向对象语言，那么到底什么是面向对象，什么是面向过程呢？

：面向过程就是分析出解决问题所需要的步骤，然后用函数把这些步骤一步一步实现，使用的时候一个一个依次调用就可以了；面向对象是把构成问题事务分解成各个对象，建立对象的目的不是为了完成一个步骤，而是为了描叙某个事物在整个解决问题的步骤中的行为。

可以拿生活中的实例来理解面向过程与面向对象，例如五子棋，面向过程的设计思路就是首先分析问题的步骤：1、开始游戏，2、黑子先走，3、绘制画面，4、判断输赢，5、轮到白子，6、绘制画面，7、判断输赢，8、返回步骤 2，9、输出最后结果。把上面每个步骤用分别的函数来实现。可以将面向过程中实现的五子棋，用下面的流程图表示。

图 1 面向过程编程

如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方，这两方的行为是一模一样的，2、棋盘系统，负责绘制画面，3、规则系统，负责判定诸如犯规、输赢等。第一类对象（玩家对象）负责接受用户输入，并告知第二类对象（棋盘对象）棋子布局的变化，棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化，同时利用第三类对象（规则系统）来对棋局进行判定。

可以明显地看出，面向对象是以功能来划分问题，而不是步骤。同样是绘制棋局，这样的行为在面向过程的设计中分散在了多个步骤中，很可能出现不同的绘制版本，因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中，绘图只可能在棋盘对象中出现，从而保证了绘图的统一。

：经常听程序员说程序设计中算法很重要，但是到底算法是什么呢?

：算法是计算机科学的核心内容之一。为解决某一个问题而采取的步骤和方法的描述。在程序设计中的算法是指对计算机工作步骤和方法的描述。算法的每一个步骤都是严格规定好的，能够被计算机识别并正确执行，并且每一个步骤都能够被计算机理解为一个或一组唯一的动作，而不使计算机产生歧义。算法必须有开始和结束，并且必须保证算法规定的每一个步骤最终都能够被完成。

可以通过一个例子来说明算法。例如，要交换变量 a 与变量 b 的值，计算机本身不能够直接执行这个操作，交换两个变量的传统的方法就是借用第三方变量作中间量。具体算法描述如下。

（1）将变量 a 的内容赋值给中间变量 c。

（2）将变量 b 的内容赋值给变量 a。

（3）将中间变量 c 存放的内容赋值给变量 b。

最终算法可以写成：

（1）c ← a。

（2）a ← b。

（3）b ← c。

算法，实际上就是用自然语言或其他方式描述的一个计算机程序，编写计算机程序也就是把用某种方式描述的算法，通过程序设计语言重新对其进行描述。

：在很多计算机语言图书的前半部分的都谈到一个名词“SDK”，但是 SDK 到底是一个什么东西呢？

：SDK 就是 Software Development Kit 的缩写，中文意思就是“软件开发工具包”。这是一个覆盖面相当广泛的名词，可以这么说：辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。例如在开发 Java 语言之前，需要安装开发环境，也就是由 Sun 公司推出的软件开发工具包 SDK(也可以称之为 JDK)。

：程序是由算法、数据结构等部分内容构成，从表面看来，数据结构肯定和数据有关系，但是应该怎么正确的理解什么是数据、和数据结构呢？

：数据很好理解，例如我们去买东西，共花了 50 元钱，这个 50 就是一个准确的数据。数据被定义为信息的载体。在计算机领域中，数据包括整数、实数、字符串、图像和声音等。

数据结构是指数据之间的相互关系。数据结构可以包括以下三方面内容，分别为数据元素之间的逻辑关系，也称数据的逻辑结构（Logical Structure）、数据元素及其关系在计算机存储器内的表示，称为数据的存储结构（Storage Structure 元素及其关系在计算机存储器内的表示，称为数据的存储结构（Storage Structure）、数据的运算，即对数据施加的操作。

数据的逻辑结构是从逻辑关系上描述数据，与数据的存储无关，是独立于计算机的。数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。数据的存储结构是逻辑结构用计算机语言的实现，它依赖于计算机语言。对机器语言而言，存储结构是具体的。一般，只在高级语言的层次上讨论存储结构。数据的运算定义在数据的逻辑结构上，每种逻辑结构都有一个运算的集合。最常用的查询、插入、删除、更新、排序等运算实际上只是在抽象的数据上所施加的一系列抽象的操作。

下面通过一个表来增加大家对数据结构的认识，下图给出了各数据元素指出数据元素、数据项等概念。

图 2 表结构

：什么是编译程序？

：编译程序也叫编译系统，是把用高级语言编写的面向过程的源程序翻译成目标程序的语言处理程序。

编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段：词法分析、语法分析、间代码生成、代码优化、目标代码生成。主要是进行词法分析和语法分析，又称为源程序分析，分析过程中发现有语法错误，给出提示信息。简单的说，编译程序就是把高级语言变成计算机可以识别的 2 进制语言，计算机只认识 1 和零，编译程序把人们熟悉的语言换成 2 进制的表现形式。