本文素材,封面画师uid:93134161,画风肃杀冷峻,工业味很浓我很喜欢…文章内容主要来自油管的计算机科学速成课前九节,链接:https://www.youtube.com/playlist?list=PL8dPuuaLjXtNlUrzyH5r6jN9ulI

1 计算机科学早期历史

1.1 人類最古の計算裝置

人类史上公认的第一台计算设备是算盘,于公元前2500年发明于美索不达米亚
可以进行加减计算并存储当前的计算状态

1.2 計算設備の大航海時代

在接下来 4000 年,人类发明了各种巧妙的计算设备,比如星盘,让船只可以在海上计算纬度或计算尺,帮助计算乘法和除法。人们还创造了上百种时钟算日出,潮汐,天体的位置,或纯粹拿来计时。这些设备让原先很费力的事变得更快,更简单,更精确。
计算机先驱Charles Babbage(查尔斯·巴贝奇)曾说:

随着知识的增长和新工具的诞生,人工劳动力会越来越少


1.3 “First Usage of computer”

但是Computer一词最早出现在1613年的一本书里,作者名为Richard Braithwait,他说:

随着知识的增长和新工具的诞生,人工劳动力会越来越少


那时, “Computer” 指负责计算的人,”Computer” 偶尔会用机器帮忙,但大部分时候靠自己。这个职位一直到 1800 年代还存在,之后 “Computer” 逐渐开始代表机器。


1.4 步进计算机

其中”步进计算器”最有名,由德国博学家 戈特弗里德·莱布尼茨 建造于 1694 年。
莱布尼茨曾说:

“让优秀的人浪费时间算数简直侮辱尊严,农民用机器能算得一样准”

加减法

“步进计算器”有点像汽车里的里程表,不断累加里程数,它有一连串可以转动的齿,每个齿轮有十个齿,代表数字0到9,每当一个齿轮转过 9,它会转回 0,同时让旁边的齿轮前进 1 个齿,就像算盘超过 10 一样。做减法时,机器会反向运作。

乘除法

利用一些巧妙的机械结构,步进计算器也能做乘法和除法。乘法和除法 实际上只是多个加法和减法,举例,17除以5,我们只要减5,减5,再减5,直到不能再减 5,就知道了 17=5x3+2,步进计算器 可以自动完成这种操作。
它是第一台能做”加减乘除”全部四种运算的机器,它的设计非常成功,以至于沿用了 3 个世纪。


1.5 计算表

不幸的是,即使有机械计算器,许多现实问题 依然需要很多步,算一个结果可能要几小时甚至几天而且这些手工制作的机器非常昂贵,大部分人买不起。所以在 20 世纪以前,大部分人会用预先算好的计算表。
这些计算表由之前说的 “人力计算器” 编撰,如果你想知道 867,5309 的平方根,与其花一整天来手摇 “步进计算器”,你可以花一分钟在表里找答案。
速度和准确性在战场上尤为重要,因此军队很早就开始用计算解决复杂问题,如何精确瞄准炮弹是一个很难的问题。19世纪,这些炮弹的射程可以达到 1 公里以上(比半英里多一点),因为风力,温度,大气压力会不断变化,想打中船一样大的物体也非常困难,于是出现了射程表,炮手可以查环境条件和射击距离,然后这张表会告诉他们,角度要设成多少。这些射程表很管用,二战中被广泛应用。
code


1.6 差分机

18世纪末,法兰西发起了一项宏大的计算工程──人工编制《数学用表》,这在没有先进计算工具的当时,可是件极其艰巨的工作。法国数学界调集大批精兵强将,组成了人工手算的流水线,算得个天昏地暗,才完成了17卷大部头书稿。即便如此,计算出的数学用表仍然存在大量错误。
问题是如果改了大炮或炮弹的设计,就要算一张新表,这样很耗时而且会出错。Charles Babbage 在 1822 年写了一篇论文,向皇家天文学会指出了这个问题,
标题叫: “机械在天文与计算表中的应用”。Charles Babbage 提出了一种新型机械装置叫 “差分机”。
一个更复杂的机器,能近似多项式,多项式描述了几个变量之间的关系,比如射程和大气压力,或者 Carrie Anne 要吃多少披萨才开心。多项式也可以用于近似对数和三角函数,这些函数手算相当麻烦。Charles Babbage 在 1823 年开始建造差分机,并在接下来二十年,试图制造和组装 25,000 个零件,总重接近 15 吨。不幸的是,该项目最终放弃了。
但在 1991 年,历史学家根据 Charles Babbage 的草稿做了一个差分机而且它还管用!但更重要的是,在差分机的建造期间,Charles Babbage 构想了一个更复杂的机器 - 分析机,不像差分机,步进计算器 和以前的其他计算设备,分析机是 “通用计算机”。它可以做很多事情,不只是一种特定运算;甚至可以给它数据,然后按顺序执行一系列操作;它有内存 甚至一个很原始的打印机,就像差分机,这台机器太超前了,所以没有建成。
code


2 电子计算机

2.1 继电器(relay)

世界上最大的机电计算机之一是哈佛的马克一号,是IBM在1944年给二战同盟国建造的。该机器的大脑是由继电器(relay)构成的,存在大约3500个继电器。建造用途是给曼哈顿计划跑模拟。

继电器:用电控制的机械开关
控制线路用于控制电路的开关,它连接着一个线圈,当线圈通电时,会产生感应磁场,由此能够吸引上方的金属臂,从而闭合电路,得到高电平。
性能:1940年一个好的继电器1秒能翻转50次。哈佛马克一号1秒能做3次加减法运算,一次乘法需要6秒,除法需要15秒,三角函数需要一分钟以上。
缺点:控制开关的金属臂是“有质量的”(has mass),因此无法快速开关。并且金属臂的反复移动就会存在磨损(任何会动的机械都会随时间磨损),哈佛马克一号平均每天需要更换一个故障继电器。
除了器件磨损问题,这些巨大、黑色、温暖的机器还会吸引昆虫。1947年9月哈佛马克二的操作员从故障继电器中拔出了一只死虫。
Grace Hopper曾说:”Form then on,when anything went wrong with a computer,We said it had bugs in it”
这就是计算机术语Computer BUG一词的来源。

2.2 真空管

1904年,英国物理学家John Ambrose Fleming开发了新的电子组件——热电子管(Thermionic valve)。

热电子管:把两个电极装在一个气密的真空玻璃灯泡中。其中一个电极A可以加热,从而发射电子,称为热电子发射(Thermionic emission);另一个电极B会吸引电子,来形成电流。但只有当电极B带正电时才能吸引电子,否则当电极B带负电荷或者中性电荷时,电子就无法跨越真空区域,就没有电流。
电流只能单向流通的电子元件叫二极管(DIODE),但是我们需要的是能开关电流的东西。
幸运的是,不久之后的1906年,美国发明家Lee de Forest在此基础上加入了第三个控制电极。通过向控制电极施加正电荷,就能吸引电子,从而闭合电路;而通过施加负电荷,就能闭合电路。

性能:每秒可开闭数千次。

优势:和继电器相同的是,可以通过一个控制线路来控制断开或闭合电路,并且真空管内没有会动的组件,因此存在更少的磨损。

缺点:比较脆弱,并且会像灯泡一样烧坏,并且体积比较大。

真空管的出现,标志着计算机从机电转向电子

第一个大规模使用真空管的计算机是巨人1号,由工程师Tommy Flowers设计并于1943年12月完工。巨人1号包含1600个真空管,并被认为是第一个可编程的电子计算机,编程方法是把几百根电线插入插板,由此让计算机执行正确操作。

电子数值积分计算机ENIAC,在1946年于宾夕法尼亚大学设计制造,设计者是Jonh Mauchly和J.Presper Ecket,这是世上第一个真正的通用可编程电子计算机,每秒可执行5000次十位加减法。但是由于存在大量的真空管,因此ENIAC运行半天左右就会出现一次故障。

2.3 晶体管

1947年贝尔实验室发明了晶体管(Transistor),原理牵扯到量子力学,这里只将基础部分。

晶体管:类似于继电器和真空管,晶体管也是一个用于控制电路闭合断开的开关。晶体管有两个电极,这两个电极之间通过半导体材料隔开。这里通过控制连接到半导体的电极电荷数,可以控制半导体的导电性,由此来控制电流是否流动。当控制线路通电时,两个电极接通,否则两个电极断开。

性能:每秒可开关10000次。

优势:相比玻璃制成的真空管,晶体管是固体的,并且体积远小于继电器和真空管。

第一个消费者可购买的,完全由晶体管构成的计算机是1957年发布的IBM 608,它有3000个晶体管,每秒执行4500次加减法,或80次左右的乘除法。

如今,计算机里的晶体管小于50nm,并且每秒可切换上百万次,工作几十年。很多晶体管和半导体开发在圣克拉拉谷,位于旧金山和圣河西之间,由于制造半导体最常见的材料是硅(Silicon),由此这个地方被称为“硅谷”(silicon valley)。并且William Shockley搬过去创建了肖克利半导体(Shockley Semiconductor),里面的员工后来成立了仙童半导体(Fairchild Semiconductor),而这里面的员工后来又创立了AMD和英特尔(Intel),而英特尔当今世界上最大的计算机芯片制造商。

3 布尔逻辑(Boolean Logic)和逻辑门(Logic Gates)

3.1 什么是二进制,为什么用二进制,什么是布尔逻辑?

3.2 三个基本操作:非(Not) 与(And) 或(Or)

3.3 三个基本操作的原理

3.4 XOR 异或

4 二进制-Representing Numbers and Letters with Binary

5 算数逻辑单元-ALU

6 寄存器&内存-Registers and RAM

7 中央处理器-CPU

8 指令和程序-

9 高级CPU设计-Advance CPU design