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
門 + 一個笑臉