点击查看【bilibili】

二进制/机器码

  • 计算机只能理解并处理二进制(即 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

编程语言,让程序员脱离底层硬件细节,专注于解决问题。