引言html
任何事物的創造發明都來源於需求和慾望程序員
而科學技術的發展則推進實現了目標算法
正是由於人類對於計算能力孜孜不倦的追求,才創造了現在規模的計算機.編程
計算機,字如其名,用於計算的機器.這就是最初計算機的發展動力.架構
在漫長的歷史長河中,隨着社會的發展和科技的進步,人類始終有計算的需求函數
進行運算時所運用的工具,也經歷了由簡單到複雜,由低級向高級的發展變化。工具
本文儘量的僅僅描述邏輯本質,不去追究實現細節google
計算(機|器)的發展與數學/電磁學/電路理論等天然科學的發展息息相關spa
手動階段設計
機械階段
機電階段
電子階段
顧名思義,就是用手指進行計算,或者操做一些簡易工具進行計算
最開始的時候人們主要是藉助簡單的工具好比手指/石頭/打繩結/納皮爾棒/計算尺等,
我想你們都用手指數過數;
有人用一堆石子表示一些數目;
也有人曾經用打繩結來計數;
再後來有了一些數學理論的發展,納皮爾棒/計算尺則是藉助了必定的數學理論,能夠理解爲是一種查表計算法.
你會發現,這裏還不能說是計算(機|器),只是計算而已,更多的靠的是心算以及邏輯思惟的運算,工具只是一個簡簡單單的輔助.
我想不用作什麼解釋,你看到機械兩個字,確定就有了必定的理解了,沒錯,就是你理解的這種普通的意思,
一個齒輪,一個槓桿,一個凹槽,一個轉盤這都是一個機械部件.
人們固然不知足於簡簡單單的計算,天然想製造計算能力更大的機器
機械階段的主題思想其實也很簡單,就是經過機械的裝置部件好比齒輪旋轉,動力傳送等來表示數據記錄,進行運算,也便是機械式計算機,這樣說有些抽象.
咱們舉例說明:
契克卡德是現今公認的機械式計算第一人,他發明了契克卡德計算鍾
咱們不去糾結這個東西究竟是如何實現的,只描述事情邏輯本質
其中他有一個進位裝置是這樣子的
能夠看到採用十進制,轉一圈以後,軸上面的一個突出齒,就會把更高一位(好比十位)進行加一
這就是機械階段的精髓,無論他有多複雜,他都是經過機械裝置進行傳動運算的
還有帕斯卡的加法器
他是使用長齒輪進行進位
再有後來的萊布尼茨軸,設計的更爲精巧
我以爲對於機械階段來講,若是要用一個詞語來形容,應該是精巧,就好似鐘錶裏面的齒輪似的
無論形態究竟如何,終究也仍是同樣,他也只是一個精巧了再精巧的儀器,一個精密設計的機關裝置
首先要把運算進行分解,而後就是機械性的依靠齒輪等部件傳動運轉來完成進位等運算.
說計算機的發展,就不得不提一我的,那就是巴貝奇
他發明了史上著名的差分機,之因此叫差分機這個名字,是由於它計算所使用的是帕斯卡在1654年提出的差分思想
咱們仍舊不去糾結他的原理細節
此時的差分機,你能夠清晰地看獲得,仍舊是一個齒輪又一個齒輪,一個軸又一個軸的更加精巧的儀器
很顯然他仍舊又僅僅是一個計算的機器,只能作差分運算
再後來1834年巴貝奇提出來了分析機的概念 一種通用計算機的概念模型
正式成爲現代計算機史上的第一位偉大先驅。
之因此這樣說,是由於他在那個年代,已經把計算機器的概念上升到了通用計算機的概念,這比現代計算的理論思想提早了一個世紀
它不侷限於特定功能,並且是可編程的,能夠用來計算任意函數——不過這個想法是構思在一坨齒輪之上的.
巴貝奇設計的分析機主要包括三大部分
一、用於存儲數據的計數裝置,巴貝奇稱之爲「倉庫」(store),至關於如今CPU中的存儲器
二、專門負責四則運算的裝置,巴貝奇稱之爲「工廠」(mill),至關於如今CPU中的運算器
三、控制操做順序、選擇所需處理的數據和輸出結果的裝置
並且,巴貝奇並無忽略輸入輸出設備的概念
此時你回想一下馮諾依曼計算機的結構的幾大部件,而這些思想是在十九世紀提出來的,是否是毛骨悚然!!!
巴貝奇另外一大了不得的創舉就是將穿孔卡片(punched card)引入了計算機器領域,用於控制數據輸入和計算
你還記得所謂的第一臺計算機"ENIAC"使用的是什麼嗎?就是紙帶!!
ps:其實ENIAC真的不是第一臺~
因此說你應該能夠理解爲何他被稱爲"通用計算機之父"了.
他提出的分析機的架構設想與現代馮諾依曼計算機的五大要素,存儲器 運算器 控制器 輸入 輸出是吻合的
也是他將穿孔卡片應用到計算機領域
ps:穿孔卡片自己並非巴貝奇的發明,而是來自於改進後的提花機,最先的提花機來自於中國,也就是一種紡織機
只是惋惜,分析機並無真正的被構建出來,可是他的思惟理念是超前的,也是正確的
巴貝奇的思想超前了整整一個世紀,不得不提的就是女程序員艾達,有興趣的能夠google一下,Augusta Ada King
機電階段與電子階段使用到的硬件技術原理,有很多是相同的
主要差異就在於計算機理論的成熟發展以及電子管晶體管的應用
爲了接下來更好的說明,咱們天然不可避免的要說一下當時出現的天然科學了
天然科學的發展與近現代計算的發展是一路相伴而來的
文藝復興運動令人們從傳統的封建神學的束縛中慢慢解放,文藝復興促進了近代天然科學的產生和發展
你要是實在沒事情作,能夠探究一下"歐洲文藝復興革命對近代天然科學發展史有何重要影響"這一議題
據傳是1752年,富蘭克林作了實驗,在近代發現了電
隨後,圍繞着電,出現了不少曠世的發現.好比電磁學,電能生磁,磁能生電
這就是電磁鐵的基本原型
根據電能生磁的原理,發明了繼電器,繼電器能夠用於電路轉換,以及控制電路
電報就是在這個技術背景下被髮明瞭,下圖是基本原理
可是,若是線路太長,電阻就會很大,怎麼辦?
能夠用人進行接收轉發到下一站,存儲轉發這是一個很好的詞彙
因此繼電器又被做爲轉換電路應用其中
並且,一個很重要的事情是,德國人萊布尼茨大約在1672-1676發明了二進制
用0和1兩個數碼來表示的數
更準確的說是數理邏輯,喬治布爾開創了用數學方法研究邏輯或形式邏輯的學科
既是數學的一個分支,也是邏輯學的一個分支
簡單地說就是與或非的邏輯運算
香農在1936年發表了一篇論文<繼電器和開關電路的符號化分析>
咱們知道在布爾代數裏面
X表示一個命題,X=0表示命題爲假;X=1表示命題爲真;
若是用X表明一個繼電器和普通開關組成的電路
那麼,X=0就表示開關閉合 X=1就表示開關打開
不過他當時0表示閉合的理念跟現代正好相反,難道以爲0是看起來就是閉合的嗎
解釋起來有些彆扭,咱們用現代的見解解釋下他的觀點
也就是:
(a) 開關的閉合與打開對應命題的真假,0表示電路的斷開,命題的假 1表示電路的連通,命題的真
(b)X與Y的交集,交集至關於電路的串聯,只有兩個都聯通,電路纔是聯通的,兩個都爲真,命題才爲真
(c)X與Y的並集,並集至關於電路的並聯,有一個聯通,電路就是聯通的,兩個有一個爲真,命題即爲真
這樣邏輯代數上的邏輯真假就與電路的連通斷開,完美的徹底映射
並且,全部的布爾代數基本規則,都很是完美的適合開關電路
有了數理邏輯和邏輯電路的基礎理論,不可貴出電路中的幾個基礎單元
Vcc表示電源 比較粗的短橫線表示的是接地
與門
串聯電路,AB兩個電路都聯通時,右側開關纔會同時閉合,電路纔會聯通
符號
另外還有多輸入的與門
或門
並聯電路,A或者B電路只要有任何一個聯通,那麼右側開關就會有一個閉合,右側電路就會聯通
符號
非門
右側開關常閉,當A電路聯通的時候,則右側電路斷開,A電路斷開時,右側電路聯通
符號:
因此你只須要記住:
與是串聯/或是並聯/取反用非門
接下來咱們說一個機電式計算機器的優秀典範
機電式的製表機
霍爾瑞斯的製表機,主要是爲了解決美國人口普查的問題.
人口普查,你能夠想象獲得天然是用於統計信息,性別年齡姓名等
若是純粹的人工手動統計,可想而知,這是多麼複雜的一個工程量
製表機首次將穿孔技術應用到了數據存儲上,你能夠想象到,使用打孔和不打孔來識別數據
不過當時設計還不是很成熟,好比若是現代,咱們確定是一個位置表示性別,可能打孔是女,不打孔是男
當時是卡片上用了兩個位置,表示男性就在標M的地方打孔,女性就在標F的地方打孔,不過在當時也是很先進了
而後,專門的打孔員使用穿孔機將居民信息戳到卡片上
緊接着天然是要統計信息
利用電流的通斷來識別數據
對應着這個卡片上的每一個數據孔位,上面有着金屬針,下面有着容器,容器裝着水銀
按下壓板時,卡片有孔的地方,針能夠經過,與水銀接觸,電路接通,沒孔的地方,針就被擋住。
如何將電路通斷對應到所須要的統計信息?
這就用到了數理邏輯與邏輯電路了
最上面的引腳是輸入,經過打孔卡片的輸入
下面的繼電器是輸出,根據結果 通電的M將產生磁場, 牽引特定的槓桿,撥動齒輪完成計數。
看到沒,此時已經能夠根據打孔卡片做爲輸入,繼電器組成的邏輯電路做爲運算器,齒輪進行計數的輸出了
製表機中的涉及到的主要部件包括: 輸入/輸出/運算
1896年,霍爾瑞斯創立了製表機公司,他是IBM的前身.....
有一點要說明
並不能籠統的說誰發明了什麼技術,下一個使用這種技術的人,就是借鑑使用了發明者或者說發現者的理論技術
在計算機領域,不少時候,一樣的技術原理可能被好幾我的在同一時期發現,這很正常
還有一位大神,不得不介紹,他就是康拉德·楚澤 Konrad Zuse 德國
http://zuse.zib.de/
由於他發明了世界上第一臺可編程計算機——Z1
圖爲複製品,複製品其實機械工藝上比37年的要現代化一些
儘管zuse生於1910,Z1也是大約1938建造完成,可是他其實跟機械階段的計算器並無什麼太大區別
要說和機電的關係,那就是它使用電動馬達驅動,而不是手搖,因此本質仍是機械式
不過他的牛逼之處在於在也設想出來了現代計算機一些的理論雛形
將機器嚴格劃分爲處理器和內存兩大部分
採用了二進制
引入浮點數,發明了浮點數的二進制規格化表示
靠機械零件實現與、或、非等基礎的邏輯門
雖然做爲機械設備,可是倒是一臺時鐘控制的機器。其時鐘被細分爲4個子週期
處理器是微代碼結構的操做被分解成一系列微指令,一個機器週期一條微指令。
微指令在運算器單元之間產生具體的數據流,運算器不停地運做,每一個週期都將兩個輸入寄存器裏的數加一遍。
可編程 從穿孔帶讀入8比特長的指令 指令已經有了操做碼 內存地址的概念
這些全都是機械式的實現
並且這些具體的實現細節的理念思惟,不少也是跟現代計算機相似的
可想而知,zuse真的是個天才
後續還研究出來更多的Z系列
雖然這些天才式的人物並無一塊兒坐下來一邊燒烤一邊討論,可是卻老是"英雄所見略同"
幾乎在相同時期,美國科學家斯蒂比茲(George Stibitz)與德國工程師楚澤獨立研製出二進制數字計算機,就是Model k
Model I不可是第一臺多終端的計算機,仍是第一臺能夠遠程操控的計算機。
貝爾實驗室利用自身的技術優點,於1940年9月9日,在達特茅斯學院(Dartmouth College)和紐約的本部之間搭起線路.
貝爾實驗室後續又推出了更多的Model系列機型
再後來又有Harvard Mark系列,哈佛與IBM的合做
哈佛這邊是艾肯IBM是其餘三位
Mark I也經過穿孔帶得到指令,和Z1是否是相同?
穿孔帶每行有24個空位
前8位標識用於存放結果的寄存器地址,中間8位標識操做數的寄存器地址,後8位標識所要進行的操做
——結構已經很是相似後來的彙編語言
內部還有累加寄存器,常數寄存器
機電式的計算機中,咱們能夠看到,有些偉大的天才已經構思設想出來了不少被應用於現代計算機的理論
機電時期的計算機能夠說是有很多機器的理論模型已經算是比較接近現代計算機了
並且,有很多機電式的型號一直髮展到電子式的年代,部件使用電子管來實現
這爲後續計算機的發展提供了不可磨滅的貢獻
咱們如今再轉到電學史上的1904年
一個叫作弗萊明的英國人發明了一種特殊的燈泡-----電子二極管
先說一下愛迪生效應:
在研究白熾燈的壽命時,在燈泡的碳絲附近焊上一小塊金屬片。
結果,他發現了一個奇怪的現象:金屬片雖然沒有與燈絲接觸,但若是在它們之間加上電壓,燈絲就會產生一股電流,趨向附近的金屬片。
這股神祕的電流是從哪裏來的?愛迪生也沒法解釋,但他不失時機地將這一發明註冊了專利,並稱之爲「愛迪生效應」。
此處徹底能夠看得出來,愛迪生是多麼的有商業頭腦,這就拿去申請專利去了~此處省略一萬字....
金屬片雖然沒有與燈絲接觸,可是若是他們之間加上電壓,燈絲就會產生一股電流,趨向附近的金屬片
就是圖中的這樣子
並且這種裝置有一個神奇的功能:單向導電性,會根據電源的正負極連通或者斷開
其實上面的形式和下圖是同樣的,要記住的是左邊靠近燈絲的是陰極 陰極電子放出
用如今的術語解釋就是:
陰極是用來放射電子的部件, 分爲氧化物陰極和碳化釷鎢陰極。
通常來講氧化物陰極是旁熱式的, 它是利用專門的燈絲對塗有氧化鋇等陰極體加熱, 進行熱電子放射。
碳化釷鎢陰極通常都是直熱式的,經過加熱便可產生熱電子放射, 因此它既是燈絲又是陰極。
而後又有個叫作福雷斯特的人在陰極和陽極之間,加入了金屬網,如今就叫作控制柵極
經過改變柵極上電壓的大小和極性,能夠改變陽極上電流的強弱,甚至切斷
電子三極管的原理大體就是這樣子的
既然能夠改變電流的大小,他就有了放大的做用
不過顯然,是電源驅動了他,沒有電他自己不能放大
由於多了一條腿,因此就叫作電子三極管
咱們知道,計算機應用的其實只是邏輯電路,邏輯電路是與或非門組成,他並非真的在意究竟是誰有這個本事
以前繼電器能實現邏輯門的功能,因此繼電器被應用到了計算機上
好比咱們上面提到過的與門
之因此繼電器能夠實現邏輯門的功能,就是由於它具備"控制電路"的功能,就是說能夠根據一側的輸入狀況,決定另外一側的狀況
那新發明的電子管,根據它的特性,也能夠應用於邏輯電路
由於你能夠控制柵極上電壓的大小和極性,能夠改變陽極上電流的強弱,甚至切斷
也達到了根據輸入,控制另一個電路的功能,只不過從繼電器換成電子管,內部的電路須要變化下而已
如今應該說一下電子階段的計算機了,可能你早就聽過了ENIAC
我想說你更應該瞭解下ABC機.他纔是真正的世界上第一臺電子數字計算設備
阿塔納索夫-貝瑞計算機(Atanasoff–Berry Computer,一般簡稱ABC計算機)
1937年設計,不可編程,僅僅設計用於求解線性方程組
可是很顯然,沒有通用性,也不可編程,也沒有存儲程序機制,他徹底不是現代意義的計算機
上面這段話來源於:http://www4.ncsu.edu/~belail/The_Introduction_of_Electronic_Computing/Atanasoff-Berry_Computer.html
主要陳述了設計理念,你們能夠上面的這四點
若是你想要知道你和天才的距離,請仔細看下這句話
he jotted down on a napkin in a tavern
世界上第一臺現代電子計算機埃尼阿克(ENIAC),也是繼ABC以後的第二臺電子計算機.
ENIAC是參照阿塔納索夫的思想完整地製造出了真正意義上的電子計算機
奇葩的是爲啥不用二進制...
建造於二戰期間,最初的目的是爲了計算彈道
ENIAC具備通用的可編程能力
更詳細的能夠參看維基百科:
https://zh.wikipedia.org/zh-cn/%E9%9B%BB%E5%AD%90%E6%95%B8%E5%80%BC%E7%A9%8D%E5%88%86%E8%A8%88%E7%AE%97%E6%A9%9F
不過ENIAC程序和計算是分開的,也就意味着你須要手動輸入程序!
並非你理解的鍵盤上敲一敲就行了,是須要手工插接線的方式進行的,這對使用來講是一個巨大的問題.
有一我的叫作馮·諾伊曼,美籍匈牙利數學家
有意思的是斯蒂比茲演示Model I的時候,他是在場的
並且他也參與了美國第一顆原子彈的研製工做,任彈道研究所顧問,並且其中涉及到的計算天然是極爲困難的
咱們說過ENIAC是爲了計算彈道的,因此他遲早會接觸到ENIAC,也算是比較瓜熟蒂落的他也加入了計算機的研製
1945年,馮·諾依曼和他的研製小組在共同討論的基礎上
發表了一個全新的「存儲程序通用電子計算機方案」——EDVAC(Electronic Discrete Variable Automatic Computer)
一篇長達101頁紙洋洋萬言的報告,即計算機史上著名的「101頁報告」。這份報告奠基了現代電腦體系結構堅實的根基.
報告普遍而具體地介紹了製造電子計算機和程序設計的新思想。
這份報告是計算機發展史上一個劃時代的文獻,它向世界宣告:電子計算機的時代開始了。
最主要是兩點:
其一是電子計算機應該以二進制爲運算基礎
其二是電子計算機應採用存儲程序方式工做
而且進一步明確指出了整個計算機的結構應由五個部分組成:
運算器、控制器、存儲器、輸入裝置和輸出裝置,並描述了這五部分的職能和相互關係
其餘的點還有,
指令由操做碼和地址碼組成,操做碼錶示操做的性質,地址表示操做數的存儲位置
指令在存儲器內按照順序存放
機器以運算器爲中心,輸入輸出設備與存儲器間的數據傳送經過運算器完成
人們後來把根據這一方案思想設計的機器統稱爲「馮諾依曼機」,這也是你如今(2018年)在使用的計算機的模型
咱們剛纔說到,ENIAC並非現代計算機,爲何?
由於不可編程,不通用等,到底怎麼描述:什麼是通用計算機?
1936年,艾倫·圖靈(1912-1954)提出了一種抽象的計算模型 —— 圖靈機 (Turing Machine)
又稱圖靈計算、圖靈計算機
圖靈的一輩子是難以評價的~
咱們此處僅僅說他對計算機的貢獻
下面這段話來自於百度百科:
圖靈的基本思想是用機器來模擬人們進行數學運算的過程
所謂的圖靈機就是指一個抽象的機器
圖靈機更多的是計算機的科學思想,圖靈被稱爲 計算機科學之父
它證實了通用計算理論,確定了計算機實現的可能性
圖靈機模型引入了讀寫與算法與程序語言的概念
圖靈機的思想爲現代計算機的設計指明瞭方向
馮諾依曼體系結構能夠認爲是圖靈機的一個簡單實現
馮諾依曼提出把指令放到存儲器而後加以執行,聽說這也來源於圖靈的思想
至此計算機的硬件結構(馮諾依曼)以及計算機的天然科學理論(圖靈)
已經比較徹底了
計算機通過了第一代電子管計算機的時代
隨後出現了晶體管
肖克利1947年發明了晶體管,被稱爲20世紀最重要的發明
硅元素1822年被發現,純淨的硅叫作本徵硅
硅的導電性不好,被稱爲半導體
一塊純淨的本徵硅的半導體
若是一邊摻上硼一邊摻上磷 而後分別引出來兩根導線
這塊半導體的導電性得到了很大的改善,並且,像二極管同樣,具備單向導電性
由於是晶體,因此叫作晶體二極管
並且,後來還發現加入砷 鎵等原子還能發光,稱爲發光二極管 LED
還能特殊處理下控制光的顏色,被大量應用
如同電子二極管的發明過程同樣
晶體二極管不具備放大做用
又發明了在本徵半導體的兩邊摻上硼,中間摻上磷
這就是晶體三極管
只要電流I1 發生一點點變化 電流I2就會大幅度變化
也就是說這種新的半導體材料就像電子三極管同樣具備放大做
因此被稱爲晶體三極管
晶體管的特性徹底適合邏輯門以及觸發器
世界上第一臺晶體管計算機誕生於肖克利得到諾貝爾獎的那年,1956年,此時進入了第二代晶體管計算機時代
再後來人們意識到:晶體管的工做原理和一塊硅的大小實際沒有關係
能夠將晶體管作的很小,可是絲絕不影響他的單向導電性,照樣能夠方法信號
因此去掉各類鏈接線,這就進入到了第三代集成電路時代
隨着技術的發展,集成的晶體管的數量千百倍的增長,進入到第四代超大規模集成電路時代