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 GATE
3种门来做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
门 + 一个笑脸
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。