《白话C++》第1章 启蒙 1.4 什么是程序
来源:互联网 发布:php代码注入原理 编辑:程序博客网 时间:2024/05/21 00:49
第1章 启蒙
1.4 什么是程序
什么是计算机程序?
计算机程序是一组指令(及指令参数)的组合,这组指令依据既定的逻辑控制计算机的运行。
1.4.1.什么是指令?
让我们来想象一个游戏。
游戏中有两个人,其中一个被布蒙上双眼。另一个人是你。场地中混乱地摆上许多啤酒瓶。游戏任务是由你发号施令,指挥被蒙眼者从场地一端穿越到另一端,其间不允许碰倒任意一个啤酒瓶。
附加一个游戏前提:你不哑,他不聋。
现在,你就会明白什么叫“指令”。指令就是一套符号,这套符号的含义,你懂,他也懂。
你会根据现场情况,向他发出类似这样的指令:“向前,0.5步、向左1步,向后2步,向左0.5步,向前4步……停!”。
“向前”,这就是指令。“0.5步”,这就是指令的参数。在不需要具体区分时,我们也往往将“指令和指令的参数”通称为“指令”。
不同的工具,往往有不同的指令集。
比如锤子,它的指令应该是“锤”(或是“砸”?)。剪刀则是“剪”。呵呵,这样工具的功能单一,所以指令自然也简单了些。
换成汽车呢?如果你是初学者,正好,你的师傅坐在副座上,你就有幸听到相对复杂的指令了:“左转……太大了!右转一点点,踩离合!油门!又大了!刹车!”。
〖轻松一刻〗:关于开车的“指令”
我有一位女学员,她在学习编程的同时也在学习驾驶。今天她很郁闷的过来问我:“老师,‘笨蛋’也算是一种驾驶指令吗?”
1.4.2.指令兼容
对计算机而言,不同的“处理器”类型——不同产家生产的处理器,甚至同一产家生产的不同版本的处理器,往往都会有不同的指令集合。为了商业利益,有些厂家 间就会进行“联衡”,相互之间保持尽量大的兼容,当然也各有留了一手特定指令。典型的如Intel和AMD两家CPU产商。还有一些厂家则特定独行,采用 完全不同于竞争对手的指令集合,比如曾经的IBM或苹果电脑,就采用各自独立的CPU。
通常我们使用的电脑,都使用Intel或AMD生产的中央处理器(CPU);这一类指令集被“80x86 CPU 汇编指令”。
1.4.3.复杂指令集与精简指令集
指令集的定义,可以分为“复杂指令”或“精简指令”。比如锤子,我们说它的指令是“锤”。其实是“锤”这个动作,还可以分解为“抡起”、“瞄住”、“砸下”。而剪刀,也至少可以再分为:“张开剪”、“合上剪”两个指令。
指令过程,必然存一个“发号者”和一个“接受者”。如果接受者接收到某一指令之后,必须将该指令继续细分为多个步骤(子指令)执行,这称为“复杂指令集”: 采用这种指令集的处理器的计算机,称为CISC(Complex Instruction Set Computer)。相反,每一个指令尽量仅定义一个最精简的动作,接受者不需要再细化单一指令的动作,这样的指令集称为“精简指令集”,采用“精简指令 集”的计算机,称为RISC(Reduced Instruction Set Computer)。
通常我们采用的PC,属于“CISC”。
1.4.4.程序=指令的逻辑组合
这是我们给出的,第一个有关“程序是什么”的表达式。
“计算机程序是一组指令的组合,这组指令依据既定的逻辑控制计算机的运行。”
在这个定义中,有三个重要的概念。其中,我们谈到了程序中的“指令”,但是我们还没有谈到“组合”及“逻辑”。
继续前面的过啤酒瓶游戏。
理论上,如果场地不变、酒瓶摆放位置不变、参与人不变,那么作为指挥者,你完全可以把第一次的指挥过程记录在案,形成一套“指令的组合”。
看!这就是程序,一组指令的组合,并且在逻辑上,它们的组织方法就是保证执行者安全通过酒瓶区。
从整体上讲,指令的组合方式,最终决定于它在逻辑目标;从细节处讲,所有程序的指令组合,都至少有一个组合要求:时序,或称为步骤。前面的step1~step6,听令者必须按步骤次序执行,这套指令组合才有意义。
在以后的学习过程中,很多时候,我们认为程序就是指令;同样很多时候,我们会觉得程序就是逻辑。
1.4.5.程序 VS. 软件
还有很多的时候,我们也不区分“程序”和“软件”二者。也许前者更趋于抽象,而后者趋于具体。比如我们在写那些表达我们的思想逻辑时,我们喜欢说“写程序”;而当程序完成,可以待价而沽时,我们称它为软件产品(似乎有些违背“自由软件”的精神,汗!)。
------------------------------------- 如果您想与我交流,请点击如下链接成为我的好友:
http://student.csdn.net/invite.php?u=112600&c=f635b3cf130f350c
- 《白话C++》第1章 启蒙 1.4 什么是程序
- 《白话C++》第1章 启蒙----1.2 什么是计算机
- 《白话C++》第1章 启蒙 1.3 什么是硬件、软件
- 《白话C++》第1章 启蒙 1.5 什么是编程语言
- 第1章 启蒙——1.4 什么是程序
- 《白话C++》第1章.启蒙---1.1 开始
- 第1章 启蒙——1.2 什么是计算机
- 第1章 启蒙——1.3 什么是硬件、软件
- 第1章 启蒙——1.5什么是编程语言
- 第1章 启蒙 ——1.6.什么是集成开发环境
- 第1章 启蒙 ——1.1.开始
- DOM启蒙——第11章
- 《白话C++》第2章 准备 2.1 准备的准备
- C++“窗口”程序设计启蒙
- 什么是C程序?
- 《白话C++》第2章 准备 2.2 安装IDE——Code::Blocks
- 《白话C++》第3章 感受(一) 3.1 Hello world 经典版
- 《白话C++》第3章 感受(一) 3.2 Hello world 中文版
- 函数修改CListCtrl的排序属性
- 采用弹出气泡方式进行客户端输入验证
- ACM小组内部预定函数
- 《白话C++》第1章 启蒙 1.3 什么是硬件、软件
- 组建php环境时,配置apache对php的支持【问题记录】
- 《白话C++》第1章 启蒙 1.4 什么是程序
- 《白话C++》第1章 启蒙 1.5 什么是编程语言
- 期末考试ing
- JMF(一)
- 论文
- evc emulator的连接
- 成功,从真心羡慕自己开始
- 什么才是代码质量
- 立志篇