CrashCourseComputerScience11编程语言发展史

117 阅读2分钟

编程语言发展史

二进制

如之前所介绍,在内存中存储操作码和内存地址,以二进制的方式编程。程序员写伪代码,再翻译为二进制编码输入计算机运行。

汇编

这个过程很繁琐,而且容易出错。接着给操作码分配了一个简单的名字助记符 Mnemonic,后面再紧跟数据,形成完整指令,这样程序员就可以用助记符来编程了。
这样从 01 编程发展到 LOAD_A 14 这样的编程方式。
这就需要一个翻译器,把助记符翻译为二进制编码。这个翻译器就是汇编器 Assembler。随着发展演化出很多提高编程效率的方式,其中很重要的一个是自动分析 JUMP 地址,因为 JUMP 地址会随着指令的变化而变化,二进制编程非常低效,每次调整指令都要更新 JUMP 地址。

编程语言 A-0

汇编器仅仅解决了助记符和二进制编码的转换,但仍需要程序员思考寄存器和内存地址的使用。Hopper 设计了第一个高级编程语言 A-0(Arithmetic),程序员只需要写出算法,而不需要考虑寄存器和内存地址。
汇编语言和机器指令是一一对应的,高级编程语言可能会转成几十条二进制指令。Hopper 在 1952 年创造了第一个编译器。
例如一个简单的两数相加,汇编的写法如下

LOAD A 14
LOAD B 15
ADD B A
STORE A 13
HALT

A-0 语言没有流传代码,python 的表达是

a=14
b=15
c=a+b

高级编程语言

高级编程语言中程序员关注变量(代表内存地址的抽象),接着 IBM 的 Fortran(名字来自公式翻译 formula translation)出现主宰了早期编程。
然后出现了通用编程语言,突破机型的限制,COBOL common business-oriented language。每个计算框架需要一个 COBOL 编译器,实现了一次编写到处运行,程序员不需要感知 CPU 特有的汇编码和机器码。
1960s 出现了 ALGOL, LISP, BASIC,1970s 出现了 PASAL, C, SMALLTALK,1980s 出现了 C++, OBJECTIVE-C, PERL,1990s 出现了 PYTHON, RUBY, JAVA,千禧年后 SWIFT, C#, GO 涌现。