計算機科學基礎

Bits(位), Bytes(字節), 晶體管, 邏輯門, 操作系統, 虛擬現實, 機器人

通過一層層的抽象,來做出複雜操作。

最底層的10, 到邏輯門, 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(蟲子)”

繼電器

clipboard.png

  • 繼電器裏,有根“控制線路”,控制電路是開還是關,“控制線路”連着一個線圈,當電流流過線圈,線圈產生電磁場,吸引金屬臂,從而閉合電路。繼電器控制的電子。和開關水的水龍頭相似。
  • 這個控制電路可以連接到其它電路,比如:馬達(作用:讓計數齒輪+1)。
  • 缺點:繼電器內的機械臂“有質量”,因此無法快速開關。
  • 在1940年代一個好的繼電器1秒能翻轉50次。但是不足以解決複雜的大問題。

缺點:速度慢,齒輪磨損,難以維護。

真空管

在1904年,英國物理學家“約翰 安布羅斯 弗萊明”開發了一種新的電子組件,叫“熱電子管”。把二個電極裝在一個氣密的玻璃燈泡裏,這是世界上第一個真空管。

  • 其中一個電極可以加熱,從而發射電子,叫做“熱電子發射”
  • 另外一個電極會吸引電子,形成“電龍頭”的電流。但只有帶正電才行,如果帶負電荷或中性電荷,電子就沒辦法被吸引,越過真空區域。因此沒有電流。
  • 二極管:電流只能單向流動的電子部件叫做“二極管”。

需求是:一個能開關電流的東西。而二極管只能做到開。

在不久之後的1906年,美國“李 德福雷斯特”,在“弗萊明”設計的兩個電極之間,加入了第三個“控制”電極。

  • 向“控制”電極施加正電荷,它會允許電子流動,但如果施加負電荷,它會阻止電子流動。
  • 因此通過控制線路,可以斷開或閉合電路和繼電器的功能一樣。但重要的是,真空管內沒有會動的組件。
  • 意味着損耗大大減低和每秒可以開閉數千次。
  • 因此“三極真空管”成爲無線電,電話,以及其它電子設備的基礎。
  • 計算機可能要上百個甚至上千個電氣開關,造價非常昂貴。

缺點:它們很脆弱,會燒壞。
意義:從機電轉向電子

第一次大規模使用真空管的計算機是“巨人1號”,由工程師Tommy Flowers設計, 完工與1943年12月。“巨人1號”在英國的“布萊切利園”,用於破解通信。“巨人1號”有1600個真空管,總共造了10臺巨人計算機,來幫助破解密碼。 “巨人1號”被認爲是第一個可編程的電子計算機
編程方法是:把幾百根電線插入插板(類似老電話交換機),雖然“可編程”,但還是要配置它。

ENIAC

電子數值積分計算機“ENIAC”,幾年後在1946年,在“賓夕法尼亞大學”完成建造。這是世上第一個真正的通用,可編程,電子計算機。

  • 每秒可執行5000次十位數加減法。
  • 真空管很多,所以故障很常見,運行半天左右就會出現一次故障

爲了降低成本和大小,同時提高可靠性和速度,需要一種新的電子開關。

晶體管

1947年,貝爾實驗室科學家發明了晶體管,一個全新的計算機時代誕生。

晶體管的物理學相當複雜,涉及到量子力學。

晶體管圖片:

clipboard.png

  • 它是一個開關,可以用控制電路來控制開或關。
  • 晶體管有兩個電極,電極之間有一種材料隔開它們,這種材料有時候導電,有時候不導電,叫做:半導體。
  • 控制線連到一個“門”電極,通過改變“門”的電荷,可以控制半導體材料的導電性,來允許或不允許電流流動。
  • 貝爾實驗室的展示晶體管,每秒可以開關10000次。而且比玻璃製作,小心易碎的真空管。
  • 晶體管是固態的
  • 晶體管可以遠遠小於繼電器或真空管。
  • 生產半導體最常見的材料是硅。

clipboard.png

clipboard.png

如今,計算機裏的晶體管小於50納米,而一張紙的厚度大概是10萬納米,晶體管不僅小,還超級快,每秒可以切換上百次,並且能工作十幾年。

布爾邏輯和邏輯門

  • 什麼是二進制,爲什麼使用二進制,布爾邏輯。
  • 3個基本操作: NOT, AND, OR。
  • 解釋3個基本操作。
  • XOR異或

開始抽象,不用管底層細節,把精力用來構建更復雜的系統。

二進制

計算機最早是機電設備,一般用十進制計數。比如:用齒輪數來代表十進制,再到晶體管計算機。

只用開/關兩種狀態也可以代表信息,叫做二進制。

爲什麼使用二進制:

  1. 只需要表示truefalse,兩個值就夠了。電路閉合,電流流過,代表"真"。二進制也可以寫成1和0,而不是truefalse,只是不同的表達方式。
  2. 晶體管的確可以確定不只是開/關,還可以讓不同大小的電流通過。
  3. 只用“開”和“關”兩種狀態,減少難區分狀態的情況。早期的三進制,三種狀態,五進制,五種狀態。問題是,狀態越多,越難區分信號。干擾元素的存在,比如:手機快沒電了或者附近有點噪音,因爲有人在用微波爐,信號可能混在一起。而每秒百萬次變化的晶體管會讓這個問題變的更糟糕。所以把兩種信號儘可能分開。
  4. 有一個整個數學分支存在,專門處理“真”和“假”,它已經解決了所有法則和運算,叫做布爾代數。

布爾,他有興趣用數學式子,擴展亞里士多德基於哲學的邏輯方法,布爾用 邏輯方程 系統而正式的證明真理(truth)。在“常規”代數裏,變量的值是數字,可以進行加法或乘法之類的操作,但在布爾代數中,變量的值是truefalse能進行邏輯操作。

布爾代數中有三個基本操作:NOTANDOR

布爾邏輯

NOT
NOT操作把布爾值反轉,把true進行NOT就會變成false,反之亦然。

晶體管可以很容易實現NOT操作,晶體管只是電控制的開關。
有3根線:2根電極和1根控制線。
控制線通電時,電流就可以從一個電極流到另一個電極。

1根控制線作爲INPUT, 2根電極作爲OUTPUT

可以把控制線,當作輸入(INPUT),底部的電極,當作輸出(OUTPUT)。所以1個晶體管,有一個輸入和一個輸出。

clipboard.png

如果打開輸入(INPUT ON)輸出也會打開(OUTPUT ON)因爲電流可以流過。

clipboard.png

如果關閉輸入(INPUT OFF)輸出也會關閉(OUTPUT OFF)因爲電流無法通過。

改造成NOT GATE
與其把下面那根線當作輸出,可以把輸出放到上面。
如果打開輸入,電流可以流過然後“接地”;輸出就沒有電流,所以輸出是OFF。用水來舉例,就像家裏的水都從一個大管子留走了,打開淋浴頭一點水也沒有。所以是輸入是on,輸出是off

clipboard.png

如果當輸入是off,電流沒法接地,就流過了輸出, 所以輸入是off,輸出是on

clipboard.png

之所以叫做,是因爲它能控制電流的路徑。

NOT GATE畫法:

三角形前面加一個圓點
clipboard.png

AND

AND操作有2個輸入,1個輸出。
如果2個輸入都是true,輸出纔是true

爲了實現AND GATE,需要2個晶體管連在一起。這樣有2個輸入和1個輸出。

如果只打開A,不打開B,電流無法流到OUTPUT,所以輸出是false
如果只打開B,不打開A,也一樣,電流無法流到OUTPUT
只有A和B都打開了,OUTPUT纔有電流。

clipboard.png

AND GATE畫法:
用D表示

clipboard.png

OR:
只要2個輸入裏,其中1個是true,輸出就是true
只有2個輸入都是falseOR的結果纔是false

實現OR GATE除了晶體管還要額外的線。不是串聯起來,而是並聯。
然後左邊這條線有電流輸入,用“小拱門”代表2條線沒有連接在一起,只是跨過而已。

clipboard.png

如果A和B都是off,電流無法流過,所以輸出是off
如果打開A,電流可以流過,輸出是on;如果只打開B也一樣。
如果A,B都on,結果是on

A和B都是off的情況:

clipboard.png

只打開A或者,只打開B的情況:

clipboard.png

OR GATE畫法:
用太空船表示

clipboard.png

XOR異或

XOR就像普通的OR,但有一個區別:
如果2個輸入都是trueXOR輸出false
想要XOR輸出true,一個輸出必須是true,另外一個必須是false

clipboard.png

用晶體管實現XOR門:
使用OR GATE, AND GATE, NOT GATE3種門來做XOR

  1. 有2個輸入,A和B,還有1個輸出。
  2. 先放一個OR門,因爲ORXOR的邏輯表很像。
  3. 只有1個問題,當A和B都是true時,OR的輸出和想要的XOR輸出不一樣,需要的是false,所以要加多個門。
  4. 如果加一個AND門,輸入是truefalse,輸出會是true,也不是所需要的,但如果在AND的輸出加個NOT就可以把true翻轉成false了。
  5. 最後加一個AND門,然後AND門的2個輸入

分別來自NOT和最原始OR,AND會收到falsetrue,因爲AND需要兩個輸入都爲true,都結果纔是true所以輸出是false

clipboard.png

XOR畫法:

一個OR門 + 一個笑臉
clipboard.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章