Skip to content

03 Below Your Program

如 word 或数据库这样的应用软件,数百万行代码,但是硬件只能执行非常有限的、简单的指令。这中间有很多很多的层次,这就是抽象的力量。这些层次大致由上至下分成三层: * 应用软件 * 系统软件 * 硬件

系统软件(systems software)鉴于两者之间,承上启下,其中最重要的系统软件有两个:

一是操作系统(operating system),主要作用有 * 处理输入输出 * 分配管理内存 * 隔离保护同时运行的多个应用

二是编译器(compiler),将高级语言转化成低级指令。下面简单描述一下。

From a High-Level Language to the Language of Hardware

最简单的电信号就是开和关,用一个比特(binary digit, bit)表示。计算机的指令(instruction)和数据一样,都是一系列比特。比如

1001010100101110
表示两个数的加法。

使用二进制操控计算机是很无趣的事情,人们发明了一些符号辅助,最早是人工把这些符号翻译成二进制,很快又发明了汇编器(assembler),其作用就是把程序员写的代码

add A, B
翻译成二进制
1001010100101110
前者是汇编语言(assembly language),后者是机器语言(machine language)。

虽然方便了许多,但是程序员仍旧需要像计算机一样思考,于是又发明了高级编程语言(high-level programming language)。通过编译器将高级编程语言

A + B
翻译成汇编语言
add A, B
这是一个极好的体现抽象思想的例子。

高级编程语言的优势有 * 可以使用更自然的语言思考;针对目的来设计编程语言; * 提高程序员的生产力; * 平台无关