2-计算机组成

根据我的经验,对初学者来说,搭建编程的环境,是非常困难的事情。
所以我们有必要讲一点比编程环境更底层的东西,方便大家之后的工作。

那就是计算机的基本组成了。
最基本的东西,就是硬件了,主要包括 CPU、内存和一系列输入输出设备。
但是只有硬件,事情是很难办的。
我们知道,电子元件接受的都是电信号。所以硬件直接能理解的,就是代表高低电压的 0-1 信号。那就是机器语言了。
机器语言,当然是非常反人类的。谁记得住一串 0-1 代表什么意思啊。
于是发展出了汇编语言 (assembly)。这其实也没啥神秘的,基本上就是把 0-1 串翻译成了一些英文指令和符号。这样人们就可以写出一些互相能看懂的程序了。为了让机器能运行,那么又有了叫做 assembler 的程序,用来把汇编语言翻译成机器语言。
有了汇编语言吧,大家确实可以操作硬件了,于是也能写出一些程序了。
但这样开发程序,存在很大问题。一方面是因为汇编语言实在太啰嗦;另一方面,则是人们发现,每个程序,为了控制硬件,都得要求程序员懂硬件知识,而且操纵硬件的代码,还大同小异。
针对前一个问题,后来就有了以 C 为例的一系列高级语言。
针对后一个问题,人们开发了一些程序,专门用来操作硬件。而新的程序,再想使用硬件的时候,不必亲自写清楚硬件该怎么运作,而是告诉「操作硬件的程序」要实现什么功能,由「操作硬件的程序」转而实现。
也就是说,硬件被抽象出来了。现在,程序员们不用关心具体的硬件了,而把对应的任务丢给了「操作硬件的程序」。那么这些「操作硬件的程序」,则被称为操作系统。
当然,随着时代发展,操作系统也逐渐增加了更多的功能。基本上,凡是被很多软件共用的功能,逐渐都会被添加到操作系统里去。比如说二十年前,操作系统里是没有网络通信功能的,而随着互联网发展,操作系统也相应地实现了这一功能,解放了更多的程序开发者。

在操作系统之上,就是各种各样的应用软件。

2-计算机组成_第1张图片
关系图

因为操作系统的作用是为应用软件提供功能,所以软件开发者们需要了解对应的操作系统开放出来的编程接口 (Application programming interface, API),而普通用户,实际上无需了解操作系统,甚至都不用知道操作系统这个概念。
而苹果 Mac OS,微软的 Windows 以及开源的 Linux 这些不同的操作系统,最大的区别是在系统机制和开放的 API 上,而不是普通用户所感知到的用户界面的不同。

我们将采用的编程语言是 Python。
Python 有很多好处,例如语法跟普通英语一样易懂,入门门槛低等。
还有一大好处是,生态完备,现成的软件包到处都是,并且还在不断地被开发出来。同时管理起来也非常简单,只要安装 anaconda,就可以几乎一键安装各种 python 包。
但在安装之前,我们还要补充一些额外的知识。

1st edition: 2017-11-27

你可能感兴趣的:(2-计算机组成)