机器语言
计算机唯一识别的语言是机器语言。
汇编语言
伴随着用带符号或助记符的指令和地址代替二进制码而发生的,这些语言首先被称为符号语言。这些助记符语言后来被称为汇编语言
高级语言
高级语言可移植到许多不同的计算机,使程序员能够将精力集中在应用程序上,而不是计算机结构的复杂性上。
高级语言程序被称为源程序。被翻译成的机器语言程序称为目标程序。有两种方法用于翻译:编译和解释。
编译:编译程序通常把整个源程序翻译成目标程序。 解释:有些计算机语言使用解释器把源程序翻译成目标程序。
- 解释第一种方法:源程序的每一行被翻译成被其使用的计算机上的机器语言,该行机器语言被立即执行。
- 解释第二种方法:Java 源程序首先被编译,创建 Java 的字节代码,然后能被任何运行 JVM 模拟器的计算机编译或解释,也就是运行字节代码的计算机只需要 JVM 模拟器,而不是 Java 编译器。
翻译过程:编译和解释的不同在于,编译在执行前翻译整个源代码,而解释一次只翻译和执行源代码中的一行。
- 词法分析器:一个符号接一个符号地读源代码,创建源语言中的助记符表。
- 语法分析器:分析一组助记符,找出指令。
- 语义分析器:检查语法分析器创建的句子,确保它们不含有二义性。
- 在无二义性指令被语义分析器创建之后,每条指令将转化为一组程序将要在其上运行的计算机的机器语言。
编程模式
过程式模式:把程序看成是操纵被动对象的主动主体。过程式模式下的程序就是主动主体,该主体使用称为数据或数据项的被动对象。程序仅由许多过程调用构成,除此之外没有任何东西, 一些过程式语言:
- FORTRAN:
- 高精度算法
- 处理复杂数据的能力
- 指数运算
- COBOL:
- 快速访问文件和数据库
- 快速更新文件和数据库
- 生成大量的报表
- 界面友好的格式化的输出
- Pascal
- 通过强调结构化编程方式来教初学者编程,现在过程化语言归功于该语言
- C
- C 有一个结构化的高级编程语言应有的所有高级指令,使程序员无需知道硬件细节。
- C 也具有一些低级指令,使得程序员能够直接、快速地访问硬件。
- C 是非常有效的语言,指令短。这种简洁吸引了想编写短程序的程序员。
- Ada
- Ada 有其他过程式语言那样的高级指令。
- Ada 有允许实时处理的指令,从而便于过程控制。
- Ada 具有并行处理能力,可以在具有多处理器的主机上运行。
面向对象模式:处理活动对象,而不是被动对象。
- 方法:每个方法有它的头、局部变量和语句。
- 继承性:作为本质,一个对象能从另一个对象继承。
- 多态性:可以定义一些具有相同名字的操作,这些操作在相关类中做不同的事情。
C++:设计遵循三条基本原则特性:封装、继承和多态 Java:完全面向类操作,每个数据项都属于一个类
函数式模式:在函数式模式中程序被看成是一个数学函数。
- 函数式语言预定义一系列可供任何程序员调用的原始(原子)丽数。
- 两数式语言允许程序员通过若干原始函数的组合创建新的函数。
- LIST:-种把表作为处理对象的语言。
- Scheme:定义了一系列原始函数来解决问题。
说明式模式:依据逻辑推理的原则响应查询,逻辑推理以推导为基础。逻辑学家根据已知正确的一些论断(事实),运用逻辑推理的可靠的准则推导出新的论断(事实)。
- Prolog:最著名的说明性语言,Prolog 中的程序全部由事实和规则组成。
通用概念
标识符:简单的讲就是对象的名字。如果没有标识符的话,程序员就不得不直接面对数据地址。标识符可以让程序员通过其来操作指定数据地址的数据。
数据类型:程序中都会给出用于规定数据组织方式的数据类型。其中包括:
- 简单数据类型:程序语言规定的原子数据类型,例如整型,字符,布尔值
- 复合数据类型:包括多个简单数据类型的数据类型,例如数组,字符串,结构体
依此衍生的概念有:
- 变量:表示一个可供操作的存储单元,其由数据类型和标识符组成。
- 字面值:一些在程序语言中使用的预定的值,例如说 2, 4.7, k 等。
- 常量:不同于变量,常量一经定义就不可以做出改变。
- 输入&输出
这些操作一般会涉及到底层,故大多数程序设计语言会将这两个操作封装成函数来给程序员用。
表达式:简单的讲就是由一系列操作数和运算符组成的可运算成单一值的式子:
- 运算符:包括算术运算符,逻辑运算符,关系运算符
- 操作数:用于作为运算符的运算单元的单位,例如说字面值,变量或常量等
语句:在程序设计语言中,程序由语句组成。它在翻译的时候会被翻译为一个或多个指令执行。语句主要分为:
- 赋值语句
- 复合语句:也就是多个语句组合而成,在 C 语言中体现为大括号括起来的多个语句。这个通常又叫做块
- 控制语句:选择(if, else)或重复(while, for)
- 调用子程序
- 子程序
这里讲其在程序设计语言中的连带引入的概念:
- 局部变量:只会在子程序中生效的概念。这个概念也被部分语言衍生至块中。
- 参数:外部程序调用子程序的时候可以传入参数。在这里又分为传值和传引用两种
- 传值:将外部的变量/字面值/常量复制一份传入子程序中
- 传引用:子程序可以直接操作指定的外部变量/常量,本质上就是传外部变量/常量的地址的值
- 返回值:子程序可以将内部的值传出到外部
子程序在 C 语言中就是函数了。