電腦科學基礎
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(計算機之父)說:“隨著知識的增長和新工具的誕生,人工勞力會越來越少”
打孔片製表機
- 用傳統機械來計數,結構類似萊布尼茨的乘法器,但用電動結構連線其它元件。
- 一種紙卡,上面有網格,用打孔來表示資料。
- 當卡插入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
缺點:速度慢,齒輪磨損,難以維護。
真空管
在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
門 + 一個笑臉