C:基本概念
总阅读次
2016-4-3 周六, 12:07AM
2016-4-3 周六; 8:50AM——10:AM
教材《一站式学习C编程》
程序的基本概念
- 程序(Program)由一系列指令组成,指令是指示计算机做某种运算的命令。通常包括以下几个指令:
1 | ①输入(Input) |
程序那么复杂,而编写程序的指令只有这么简单的这几种,这中间的落差需要程序去填补。把复杂的
任务分解成子任务,把子任务再分解成更简单的任务,层层分解,直到简单得可以用上指令来完成。
程序语言(Programmming Language)
- 低级语言(Low-level Language):直接用计算机指令编写程序,如:机器语言(Machine Language)和汇编语言(Assembly Language)
- 高级语言(Assembly Language)用语句(Statement)编写,如:C、C++、Java、Python等;
汇编语言与机器语言的指令是一一对应的,编译器就是做一个简单的替换工作。
C语言的语句和低级语言的指令不是简单的一一对应关系,如:一条
a=a+b;
语句要翻译成三条汇编或机器指令,这个过程称为编译(Compile)
,由编译器(Compiler)
来完成,显然编译器要比汇编器要复杂的多。C语言编写的程序必须经过编译转成机器指令才能被计算机执行。C语言是可移植的
(Portable)
或者称为平台无关的(Platform Independeng)
。
平台
这个词有很多种解释,可以指计算机体系架构(Architecture)
,也可以指操作系统,也可以开发平台(编译器、连接器等)。不同的计算机体系结构有不同的指令集(Instruction Set)
可以识别的机器指令格式是不同的。
程序执行过程
** 编译执行过程**
源代码
(Source Code)
或源文件通过运行编译器对它进行编译,编译的过程并不执行程序,而是把源代码全部翻译成机器指令,再生成一个新的文件,如a.out这
称为可执行文件,可执行文件可以被操作系统加载运行,计算机执行该文件中由编译器生成的指令。
解释执行过程
有些高级语言以解释(Interpret)的方式执行,解释执行过程和C语言的编译执行过程很不一样。例如写一个Shell脚本script.sh,内容如下:
1 | !/bin/sh |
用Shell程序/bin/sh解释这个脚本,结果如下:
1 | $ /bin/sh script.sh |
这里的/bin/sh称为解释器(Interpreter)
,它把脚本的每一行当做一条命令解释执行,而不需要先生成可执行文件(可执行文件包含机器指令)。若把脚本的这个三行
当作命令直接敲到Shell提示符下,也能取到相同的结果:
1 | $ VAR=1 |
编译和解释相结合的方式执行
如Java、Python、Perl等编程语言都采用这种方式。
以Python为例,程序员写的源代码.py文件首先被编译成.pyc文件,称为字节码(Byte COde),然后字节码被Python虚拟机解释执行。字节码是Python虚拟机的指令而非
机器指令,所以它是平台无关
的。如果把字节码文件从一种平台拷贝到另一种平台上,另一种平台也需要安装Python虚拟机才能运行这个字节码文件。
虚拟机的定义有2个一种是类似与Vmware的系统虚拟机
,另一种则是程序虚拟机
如:JVM,CLR
程序虚拟机也称作托管运行时环境,运行这个虚拟机时,就好比普通的OS中的一个进程。当这个进程启动时,虚拟机启动,当进程销毁时,虚拟机销毁。使用虚拟机的目的就是提供一个和平台无关的编程环境
。
程序的发展演化
程序语言仍在发展演化。
机器语言称为第一代语言(1GL,1st Generation Programming Language)
汇编语言称为第二代语言(2GL,2nd Generation Programming Language)
C、C++、Java、Python等称为第三代语言(3GL,3rd Generation Programming Language)