二进制/机器码
- 计算机只能理解并处理二进制(即 0 和 1 ),二进制是计算机的母语(CPU 可以直接执行机器码)。
- 因此,在计算机早期阶段,必须用二进制(也称 机器码、机器语言)来编写程序
- 程序员先在纸上写伪代码,然后再按照“操作码表”手工将伪代码转换成二进制机器码
- 缺点:很麻烦
汇编语言/助记符
- 起源:在 1940-1950 年代,出现了一种新语言——汇编语言
- 定义:为每个操作码分配一个简单名字,叫”助记符”;”助记符”后面紧跟数据,形成完整指令。
- 举例:若操作码表中0010代表LOAD_A指令,机器码指令
0010 1110
,用汇编语言就写成LOAD_A 14
- 优点:更高层次,更可读,更易理解
- 缺点:汇编和底层硬件连接很紧密,一般来说一条汇编指令对应一条机器指令。也就是说汇编只是修饰了一下机器码,但仍然强迫程序员思考用什么寄存器和内存,因此编写和改动代码都很麻烦,也很冗长
汇编器 Assmebler
- 功能:将汇编语言自动转换成计算机能理解的机器码(二进制指令)
A-0 —— 一个高级编程语言
- 全称:Arithmetic Language Version 0
- 海军军官 Grace 设计了编程语言 A-0 ,并开发出了第一个编译器
编译器 Compiler
- 功能:将高级语言转换成低级语言(汇编语言或者机器码)。一行高级编程语言 可能会转成几十条二进制指令
FORTRAN
- 全称:Formula Translation,即 公式翻译
- 来源:IBM,1957.
优点:高级编程语言,使得编程更容易。主宰了早期计算机编程。平均来说,FORTRAN 写的程序,比等同的手写汇编代码短 20 倍
FORTRAN 项目总监 John Backus 说过:“我做的大部分工作都是因为懒,我不喜欢写程序,所以我写这门语言,让编程更容易”
缺点:最初 FORTRAN 代码只能跑在 IBM 计算机上,如果更换计算机,可能要重新所有代码
COBAL
- 全称:Common Business-Oriented Language, or COBOL 普通面向商业语言,1959.
- 优点:通用编程语言,可以在不同机器上通用
- 特点:为了兼容不同底层硬件,每个计算架构需要一个 COBOL 编译器,这些编译器都可以接收相同 COBOL 代码,转换成各个计算机能识别执行的机器码,即”一次编写,到处运行“
- 如今大多数编程语言都是如此,不必接触 CPU 特有的汇编码和机器码
新编程语言的发展
- 1960年代:ALGOL, LISP 和 BASIC
- 1970年代:Pascal,C 和 Smalltalk
- 1980年代:C++,Objective-C 和 Perl
- 1990年代:Python,Ruby 和 Java
- 2000+:Swift, C#, Go
编程语言,让程序员脱离底层硬件细节,专注于解决问题。