计算程序概念发展的理解
1.1程序和编程语言
程序(Program)告诉计算机应如何完成一个计算任务,这里的计算可以是数学运算,比如解方程,也可以是符号运算,比如查和替换文档中的某个单词。从根本上说,计算机是由数字电路组成的运算机器,只能对数字做运算,程序之所以能做符号运算,是因为符号在计算机内部也是用数字表示的。此外,程序还可以处理声音和图像,声音和图像在计算机内部必然也是用数字表示的,这些数字经过专门的硬件设备转换成人可以听到、看到的声音和图像。
程序由一系列基本操作组成,基本操作有以下几类:
输入(Input)
什么是编程举个例子从键盘、文件或者其他设备获取数据。
输出(Output)
把数据显示到屏幕,或者存入一个文件,或者发送到其他设备。
基本运算
最基本的数据访问和数学运算(加减乘除)。
测试和分支
测试某个条件,然后根据不同的测试结果执行不同的后续操作。
循环
重复执行一系列操作。
你曾用过的任何一个程序,不管它有多么复杂,都是按这几类基本操作一步一步执行的。程序是那么的复杂,而编写程序可以用的基本操作却只有这么简单的几种,这中间巨大的落差就要由程序员去填补了,所以编写程序理应是一件相当复杂的工作。编写程序可以说是这样一个过程:把复杂的任务分解成子任务,把子任务再分解成更简单的任务,层层分解,直到最后简单得可以用以上几种基本操作来完成。
编程语言(Programming Language)分为低级语言(Low-level Language)和高级语言(H
igh-level Language)。机器语言(Machine Language)和汇编语言(Assembly Language)属于低级语言,直接用计算机指令(Instruction)编写程序。而C、C++、Java、Python等属于高级语言,用语句(Statement)编写程序,语句是计算机指令的抽象表示。
举个例子,同样一个语句用机器语言、汇编语言和C语言分别表示如下:
一个语句的三种表示(32位x86平台)
C语言
a=b+1;
计算机只能对数字做运算,符号、声音、图像在计算机内部都要用数字表示,指令也不例外,上表中的机器语言完全由十六进制数字组成。最早的程序员都是直接用机器语言编程,但是很麻烦,需要查大量的表格来确定每个数字表示什么意思,编写出来的程序很不直观,而且容易出错,于是有了汇编语言,把机器语言中一组一组的数字用助记符(Mnemonic)表示,直接用这些助记符写出汇编程序,然后让汇编器(Assembler)去查表把助记符替换
成数字,也就把汇编语言翻译成了机器语言。
从上面的例子可以看出,汇编语言和机器语言的指令是一一对应的,汇编语言有三条指令,机器语言也有三条指令,汇编器就是做一个简单的替换工作。例如在第一条指令中,把mov这种格式的指令替换成机器码a1表示一个地址,在汇编指令中是0x804a018,转换成机器码之后是18 a0 04 08(这是指令中十六进制数的小端表示,小端表示将在CPU介绍)。
从上面的例子还可以看出,C语言的语句和低级语言的指令之间不是简单的一一对应关系,一条a=b+1;
语句要翻译成三条汇编或机器指令,这个过程称为编译(Compile),由编译器(Compiler)来完成,显然编译器的功能比汇编器要复杂得多。
编写、编译和执行一个C程序的步骤如下:
用文本编辑器写一个C程序,然后保存成一个文件,例如program.c
(通常C程序的文件名后缀是.c),这称为源代码(Source Code)或源文件。
运行编译器对它进行编译,编译的过程并不执行程序,而是把源代码全部翻译成机器指令,再加上一些描述信息,生成一个新的文件,例如a.out,这个文件称为可执行文件(Executable)。
可执行文件可以被操作系统(Operating System)加载执行,计算机执行该文件中由编译器生成的指令。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论