計算機科學基礎_0 - 邏輯門

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無人機進行了美國第一次合法的無人機送貨。ui

計算機早期歷史

提到的設備:算盤 -> 步進計算器 -> 差分機 -> 分析機 -> 打孔卡片製表機加密

  • 最先的計算設備是算盤。
  • Computer從指代職業變成指代機器。
  • 機器裏有名的是:步進計算器(相似汽車裏程表,不斷累加里程數),第一個能夠作加減乘除的機器。
  • 炮彈爲了精準,要計算彈道,二戰時查表來作。但每次改設計了就須要作一張新表。(表是前人已經作好的)
  • Charles Babbage提出了"差分機"(更復雜的機器,能近似多項式,多項式描述了幾個變量之間的關係),在構造差分機期間(項目以失敗了結),想出了分析機,分析機是通用計算機(不止是一種特定運算,甚至能夠給它數據,而後按照順序執行一系列操做,它有內存。由於先進,沒有形成功)。
  • Lovelace給分析機寫了假想程序,所以成爲了第一位程序員(「將來會誕生一門全新的,強大的,專爲分析所用的語言」)。
  • 人口普查10年一次,Herman Hollerith 的打孔片製表機大大提高了效率(目的是分配聯邦資金,國會表明,等等。)。1890年,人口普查要預計十三年時間來手工編制,等作完都過期。

Charles Babbage(計算機之父)說:「隨着知識的增加和新工具的誕生,人工勞力會愈來愈少」spa

打孔片製表機
  • 用傳統機械來計數,結構相似萊布尼茨的乘法器,但用電動結構鏈接其它組件。
  • 一種紙卡,上面有網格,用打孔來表示數據。
  • 當卡插入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

相關文章
相關標籤/搜索