文章目录
  1. 1. 程序的基本概念
    1. 1.1. 程序语言(Programmming Language)
    2. 1.2. 程序执行过程
      1. 1.2.1. 程序的发展演化

攻壳机动队


2016-4-3 周六, 12:07AM

2016-4-3 周六;  8:50AM——10:AM

教材《一站式学习C编程》


程序的基本概念

  • 程序(Program)由一系列指令组成,指令是指示计算机做某种运算的命令。通常包括以下几个指令:
1
①输入(Input)
      从键盘、文件或者其他设备获取数据
②输出(Output)
      把数据显示到屏幕,或者存入一个文件,或者发送到其它设备。
③基本运算
    执行基本的数学运算(加减乘除)和数据存取。
④测试和分支
    测试某个条件,然后根据不同的测试结果执行不同的后续指令。
⑤循环
    重复执行一系列操作。

程序那么复杂,而编写程序的指令只有这么简单的这几种,这中间的落差需要程序去填补。把复杂的
任务分解成子任务,把子任务再分解成更简单的任务,层层分解,直到简单得可以用上指令来完成。

程序语言(Programmming Language)

  1. 低级语言(Low-level Language):直接用计算机指令编写程序,如:机器语言(Machine Language)和汇编语言(Assembly Language)
  2. 高级语言(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
VAR=1
VAR=$(($VAR+1))
echo $VAR

用Shell程序/bin/sh解释这个脚本,结果如下:

1
$ /bin/sh script.sh
2

这里的/bin/sh称为解释器(Interpreter),它把脚本的每一行当做一条命令解释执行,而不需要先生成可执行文件(可执行文件包含机器指令)。若把脚本的这个三行
当作命令直接敲到Shell提示符下,也能取到相同的结果:

1
$ VAR=1
$ VAR=$(($VAR+1))
$ echo $VAR
2




编译和解释相结合的方式执行

如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)

文章目录
  1. 1. 程序的基本概念
    1. 1.1. 程序语言(Programmming Language)
    2. 1.2. 程序执行过程
      1. 1.2.1. 程序的发展演化