程序是什么

程序(Program)是计算机系统的必备元素,因为计算机系统由硬件、操作系统以及软件构成,而程序又是软件的组成部分。操作系统是管理和控制计算机硬件与软件资源的计算机软件,是直接运行在“裸机”上最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。可见操作系统也是一个特殊的程序,特殊在它扮演这一个统筹管理的角色,类似于国家职能机关,管理着社会大大小小的事务,让社会有条不紊的发展。

程序与软件(Software)的概念不同,但常常因为概念相似而被混淆。软件指程序与其相关文档或其他从属物的集合。一般的我们视程序为软件的一个组成部分,简单地说,“软件=程序+文档”。比如一个游戏软件包括程序(如.exe等)和其它图片(如.bmp等)、音效(如*.wav等)、使用说明(如readme.txt)等附件,那么这个程序称作“应用程序”(Application),而它与其他文件(图片、音效等)在一起合称“软件”。

本质上,程序是在计算机中执行的一系列指令,用于完成特定的目的,通常用某种程序设计语言编写。程序与编程语言、计算机和操作系统的关系,好比餐厅中完成一道酸菜鱼,厨房经理(操作系统)协调安排某厨师(计算机)按照某语言(比如汉语)编写的菜谱(程序),使用各种食材(鱼、八角、料酒等),烹饪出美味的酸菜鱼。软件可以看作菜谱和各种食材的集合,来完成特定的功能(烹饪美食)。

通常,代码文本文件经过预处理、编译、汇编和链接,生成人们不易理解的二进制指令文本,供计算机执行,这种二进制指令文件即为可执行的计算机程序。未经编译可解释运行的程序通常称之为脚本程序,未经编译不可执行的代码文件称之为源文件。下面以C语言为例,介绍一下学习编程语言的经典样例helloword程序的执行过程。源文件helloworld.c如下:

#include <stdio.h>

int main(int argc,char* argv[])
{
    printf("hello world\n");
    return 0;
}

使用g++ helloword.c编译默认生成名为a.out的可执行文件,执行输出结果为“hello world”。程序执行过程经历了如下步骤:
(1)二进制可执行文件a.out存储在磁盘上,由CPU或DMA将a.out加载到主存,加载的数据包括指令和待输出的字符串 “hello word”;
(2)CPU依次从内存读取指令,执行指令,将“hello word”复制到寄存器;
(3)CPU将“hell world”从寄存器复制到标准输出(默认为显示器)。

对于程序的理解,计算机科学家Niklaus Wirth(尼古拉斯·沃斯)从本质上给出了简洁的定义“程序=算法+数据结构”。所以请记住,“软件=程序+文档=算法+数据结构+文档”。


参考文献

[1]深入理解计算机系统
[2]程序.百度百科

猜你喜欢

转载自blog.csdn.net/k346k346/article/details/80702189