Bits(位), Bytes(字节), 晶体管, 逻辑门, 操作系统, 虚拟现实, 机器人
通过一层层的抽象,来做出复杂操作。
最底层的 1 和 0, 到逻辑门, CPU, 操作系统, 互联网。
目的:了解计算机在你的人生,以及社会中扮演什么角色。计算机是人类发展史上最伟大的发明,是怎么开始的; 它对未来还会有更大印象。
Babbage 工作室外面的街头音乐家很吵,很影响他干活。Babbage 于 1871 年去世,当时分析机还没完成。Carrie Anne 是追星族!Lovelace 写的分析机笔记是第一个算法。Ada Lovelace 是第一位计算机程序员。Charles” 计算机之父 ”Babbage 设计了第一个可编程计算机。
Tommy Flowers 和他的团队在 11 个月内做出 ” 巨像 1 号 ”。” 巨像 ” 计算机是第一个可编程电子数码计算机,建造出来是为了破解德国 ” 洛伦茨 ” 加密机。图灵的 Bomba 是电子机械密码破解机,但不算第一台计算机。
树莓派是便宜的单板计算机,旨在推进计算机基础学习。Arduions 用于快速制作嵌入式设备原型。2016 年 7 月,7-11 用 Flitey 无人机进行了美国第一次合法的无人机送货。
计算机早期历史
提到的设备:算盘 -> 步进计算器 -> 差分机 -> 分析机 -> 打孔卡片制表机
最早的计算设备是算盘。
Computer 从指代职业变成指代机器。
机器里有名的是:步进计算器 (类似汽车里程表,不断累加里程数),第一个可以做加减乘除的机器。
炮弹为了精准,要计算弹道,二战时查表来做。但每次改设计了就需要做一张新表。(表是前人已经做好的)
Charles Babbage 提出了 ” 差分机 ”(更复杂的机器,能近似多项式,多项式描述了几个变量之间的关系),在构造差分机期间(项目以失败告终),想出了分析机,分析机是通用计算机(不止是一种特定运算,甚至可以给它数据,然后按照顺序执行一系列操作,它有内存。因为先进,没有造成功)。
Lovelace 给分析机写了假想程序,因此成为了第一位程序员(“未来会诞生一门全新的,强大的,专为分析所用的语言”)。
人口普查 10 年一次,Herman Hollerith 的打孔片制表机大大提升了效率(目的是分配联邦资金,国会代表,等等。)。1890 年,人口普查要预计十三年时间来手工编制,等做完都过时。
Charles Babbage(计算机之父)说:“随着知识的增长和新工具的诞生,人工劳力会越来越少”
打孔片制表机
用传统机械来计数,结构类似莱布尼茨的乘法器,但用电动结构连接其它组件。
一种纸卡,上面有网格,用打孔来表示数据。
当卡插入 Hollerith 的机器时,小金属针会到卡片上,如果有个地方打孔了,针会穿过孔,泡入一小瓶汞,联通电路,电路会驱动电机。
计算机的价值:可以提升劳动力以及数据密集型任务,来提升利润。
满足会计,保险评估和库存管理等行业,Hollerith 成立了制表机器公司,在 1924 年与其他机械制造商合并,成为了“国际商业机器公司”(简称 IBM)
电子计算机
提到的设备:继电器 -> 真空管 -> 晶体管
20 世纪的发展要求更强的计算能力。柜子大小的计算机发展到房间大小。
哈佛 Mark1 号,IBM 1944 年做的。
继电器一秒最多 50 次开关。
继电器出 bug(bug 一词的来源)。
1904 年,热电子管出现。第一个真空管,改进后变成和继电器的功能一样。
“巨人 1 号”计算机在英国 布莱切利园 首次大规模使用真空管,但编程麻烦,还要配置。
1946 年,宾夕法尼亚大学的 ENIAC 是第一个通用可编程计算机。
1947 年,贝尔实验室做出了,晶体管,晶体管有诸多好处,IBM 很快全面转向晶体管。
硅谷的典故:很多晶体管和半导体的开发都是这里做的。而生产半导体最常见的材料是硅。
肖克利半导体 -> 仙童半导体 -> 英特尔。
一战,二战(运输能力),登陆其它星球计划,产生的复杂度的增高导致数据量暴增,需要更多自动化,更强的计算能力。柜子大小的计算机变成房间大小。(缺点:维护费用高,而且容易出错)
Mark1 号
最大机电计算机之一。
它有 76 万 5 千个组件,300 万个连接点和 500 英里(804.65 公里)长的导线。
为了保持内部机械装置同步,它有一个 50 英尺的传动轴,由一个 5 马力的电机驱动。
Mark1 号大脑是继电器(用电控制的机械开关)
1 秒能够做 3 次加法或减法运算。一次乘法要花 6 秒,除法要花 15 秒。比较复杂的操作,比如,三角函数,幂运算,可能要一分钟以上或者更久。
齿轮磨损,任何会动的机械都会随时间磨损。有些部件会完全损坏,有些则是变粘,变慢,变得不可靠,并且随着继电器数量的增加, 故障概率也会增加。
Mark1 号大概有 3500 个继电器。需要频繁更换继电器,有些运算需要好几天。
黑色的,温暖的机器也会吸引昆虫。
Bug 一词来源:1947 年 9 月,哈佛 Mark 2 号的操作员从故障的继电器中,拔出一只死虫。Grace Hopper 曾说:“从那时起,每当电脑出现了问题,我们就说它出了 bug(虫子)”
继电器
继电器里,有根“控制线路”,控制电路是开还是关,“控制线路”连着一个线圈,当电流流过线圈,线圈产生电磁场,吸引金属臂,从而闭合电路。继电器控制的电子。和开关水的水龙头相似。
这个控制电路可以连接到其它电路,比如:马达(作用:让计数齿轮 +1)。
缺点:继电器内的机械臂“有质量”,因此无法快速开关。
在 1940 年代一个好的继电器 1 秒能翻转 50 次。但是不足以解决复杂的大问题。
缺点:速度慢,齿轮磨损,难以维护。
真空管
在 1904 年,英国物理学家“约翰 安布罗斯 弗莱明”开发了一种新的电子组件,叫“热电子管”。把二个电极装在一个气密的玻璃灯泡里,这是世界上第一个真空管。
其中一个电极可以加热,从而发射电子,叫做“热电子发射”
另外一个电极会吸引电子,形成“电龙头”的电流。但只有带正电才行,如果带负电荷或中性电荷,电子就没办法被吸引,越过真空区域。因此没有电流。
二极管:电流只能单向流动的电子部件叫做“二极管”。
需求是:一个能开关电流的东西。而二极管只能做到开。
在不久之后的 1906 年,美国“李 德福雷斯特”,在“弗莱明”设计的两个电极之间,加入了第三个“控制”电极。
向“控制”电极施加正电荷,它会允许电子流动,但如果施加负电荷,它会阻止电子流动。
因此通过控制线路,可以断开或闭合电路和继电器的功能一样。但重要的是,真空管内没有会动的组件。
意味着损耗大大减低和每秒可以开闭数千次。
因此“三极真空管”成为无线电,电话,以及其它电子设备的基础。
计算机可能要上百个甚至上千个电气开关,造价非常昂贵。
缺点:它们很脆弱,会烧坏。意义:从机电转向电子
第一次大规模使用真空管的计算机是“巨人 1 号”,由工程师 Tommy Flowers 设计, 完工与 1943 年 12 月。“巨人 1 号”在英国的“布莱切利园”,用于破解通信。“巨人 1 号”有 1600 个真空管,总共造了 10 台巨人计算机,来帮助破解密码。“巨人 1 号”被认为是第一个可编程的电子计算机。编程方法是:把几百根电线插入插板(类似老电话交换机),虽然“可编程”,但还是要配置它。
ENIAC:
电子数值积分计算机“ENIAC”,几年后在 1946 年,在“宾夕法尼亚大学”完成建造。这是世上第一个真正的通用,可编程,电子计算机。
每秒可执行 5000 次十位数加减法。
真空管很多,所以故障很常见,运行半天左右就会出现一次故障
为了降低成本和大小,同时提高可靠性和速度,需要一种新的电子开关。
晶体管
1947 年,贝尔实验室科学家发明了晶体管,一个全新的计算机时代诞生。
晶体管的物理学相当复杂,涉及到量子力学。
晶体管图片:
它是一个开关,可以用控制电路来控制开或关。
晶体管有两个电极,电极之间有一种材料隔开它们,这种材料有时候导电,有时候不导电,叫做:半导体。
控制线连到一个“门”电极,通过改变“门”的电荷,可以控制半导体材料的导电性,来允许或不允许电流流动。
贝尔实验室的展示晶体管,每秒可以开关 10000 次。而且比玻璃制作,小心易碎的真空管。
晶体管是固态的
晶体管可以远远小于继电器或真空管。
生产半导体最常见的材料是硅。
如今,计算机里的晶体管小于 50 纳米,而一张纸的厚度大概是 10 万纳米,晶体管不仅小,还超级快,每秒可以切换上百次,并且能工作十几年。
布尔逻辑和逻辑门
什么是二进制, 为什么使用二进制,布尔逻辑。
3 个基本操作:NOT,AND,OR。
解释 3 个基本操作。
XOR 异或
开始抽象,不用管底层细节,把精力用来构建更复杂的系统。
二进制
计算机最早是机电设备,一般用十进制计数。比如:用齿轮数来代表十进制,再到晶体管计算机。
只用开 / 关两种状态也可以代表信息,叫做二进制。
为什么使用二进制:
只需要表示 true 和 false, 两个值就够了。电路闭合,电流流过,代表 ” 真 ”。二进制也可以写成 1 和 0, 而不是 true 和 false, 只是不同的表达方式。
晶体管的确可以确定不只是开 / 关,还可以让不同大小的电流通过。
只用“开”和“关”两种状态,减少难区分状态的情况。早期的三进制,三种状态,五进制,五种状态。问题是,状态越多,越难区分信号。干扰元素的存在,比如:手机快没电了或者附近有点噪音,因为有人在用微波炉,信号可能混在一起。而每秒百万次变化的晶体管会让这个问题变的更糟糕。所以把两种信号尽可能分开。
有一个整个数学分支存在,专门处理“真”和“假”,它已经解决了所有法则和运算,叫做布尔代数。
布尔,他有兴趣用数学式子,扩展亚里士多德基于哲学的逻辑方法,布尔用 逻辑方程 系统而正式的证明真理(truth)。在“常规”代数里,变量的值是数字,可以进行加法或乘法之类的操作,但在布尔代数中,变量的值是 true 和 false 能进行逻辑操作。
布尔代数中有三个基本操作:NOT,AND 和 OR
布尔逻辑
NOT:NOT 操作把布尔值反转,把 true 进行 NOT 就会变成 false, 反之亦然。
晶体管可以很容易实现 NOT 操作,晶体管只是电控制的开关。有 3 根线:2 根电极和 1 根控制线。控制线通电时,电流就可以从一个电极流到另一个电极。
1 根控制线作为 INPUT, 2 根电极作为 OUTPUT
可以把控制线,当作输入 (INPUT), 底部的电极,当作输出 (OUTPUT)。所以 1 个晶体管,有一个输入和一个输出。
如果打开输入(INPUT ON)输出也会打开(OUTPUT ON)因为电流可以流过。
如果关闭输入(INPUT OFF)输出也会关闭(OUTPUT OFF)因为电流无法通过。
改造成 NOT GATE:与其把下面那根线当作输出,可以把输出放到上面。如果打开输入,电流可以流过然后“接地”;输出就没有电流,所以输出是 OFF。用水来举例,就像家里的水都从一个大管子留走了,打开淋浴头一点水也没有。所以是输入是 on,输出是 off。
如果当输入是 off,电流没法接地,就流过了输出, 所以输入是 off, 输出是 on。
之所以叫做门,是因为它能控制电流的路径。
NOT GATE 画法:
三角形前面加一个圆点
AND:
AND 操作有 2 个输入,1 个输出。如果 2 个输入都是 true, 输出才是 true
为了实现 AND GATE, 需要 2 个晶体管连在一起。这样有 2 个输入和 1 个输出。
如果只打开 A,不打开 B,电流无法流到 OUTPUT, 所以输出是 false。如果只打开 B,不打开 A,也一样,电流无法流到 OUTPUT。只有 A 和 B 都打开了,OUTPUT 才有电流。
AND GATE 画法:用 D 表示
OR: 只要 2 个输入里,其中 1 个是 true, 输出就是 true。只有 2 个输入都是 false,OR 的结果才是 false。
实现 OR GATE 除了晶体管还要额外的线。不是串联起来,而是并联。然后左边这条线有电流输入,用“小拱门”代表 2 条线没有连接在一起,只是跨过而已。
如果 A 和 B 都是 off, 电流无法流过,所以输出是 off。如果打开 A,电流可以流过,输出是 on;如果只打开 B 也一样。如果 A,B 都 on,结果是 on。
A 和 B 都是 off 的情况:
只打开 A 或者,只打开 B 的情况:
OR GATE 画法:用太空船表示
XOR 异或
XOR 就像普通的 OR,但有一个区别:如果 2 个输入都是 true,XOR 输出 false。想要 XOR 输出 true,一个输出必须是 true,另外一个必须是 false。
用晶体管实现 XOR 门:使用 OR GATE, AND GATE, NOT GATE3 种门来做 XOR。
有 2 个输入,A 和 B,还有 1 个输出。
先放一个 OR 门,因为 OR 和 XOR 的逻辑表很像。
只有 1 个问题,当 A 和 B 都是 true 时,OR 的输出和想要的 XOR 输出不一样,需要的是 false,所以要加多个门。
如果加一个 AND 门,输入是 true 和 false, 输出会是 true,也不是所需要的,但如果在 AND 的输出加个 NOT 就可以把 true 翻转成 false 了。
最后加一个 AND 门,然后 AND 门的 2 个输入
分别来自 NOT 和最原始 OR,AND 会收到 false 和 true,因为 AND 需要两个输入都为 true, 都结果才是 true 所以输出是 false。
XOR 画法:
一个 OR 门 + 一个笑脸