1. 人類發(fā)展史
在人類的歷史長河中壤蚜,一顆火的種子結(jié)束了石器時代;
從遙遠的外太空飄來的隕石帶來的一種元素結(jié)束了青銅時代進入了鐵器時代徊哑;
詹姆斯·瓦特對蒸汽機的改進袜刷,推進了第一次工業(yè)革命(18世紀60年代)開啟了蒸汽機時代;
有一個時代人們開始天馬行空莺丑,不用煤油就可以點亮的燈著蟹、沒有翅膀就可以飛的人、不用走路就可以日行千里梢莽、相隔萬里就可以通信......這個時代就是電氣時代草则,被譽為第二次工業(yè)革命(19世紀80年代中期)功不可沒的還有發(fā)明交流電的偉大科學(xué)家尼古拉·特斯拉;
1946年世界上第一臺通用計算機橫空問世蟹漓,1969年阿帕網(wǎng)(互聯(lián)網(wǎng)前身)拉近了人與人之間的距離炕横,使人類進入了信息時代;
在這偉大的時代交替期葡粒,我們即將迎來人類發(fā)展的天花板:智能時代份殿。
每次人類的發(fā)展都是對生產(chǎn)力勞動力的一次解放,不知不覺中我們已經(jīng)忘記了原始的記憶嗽交,其實我們能做的遠不止如此卿嘲。
2. 計算機發(fā)展史
好了言歸正傳,說好的計算機發(fā)展史怎么聊到人類的發(fā)展史了夫壁,
這里小編也是感慨一下啦拾枣。
計算機可以看到是人類發(fā)展史信息時代的產(chǎn)物,而且至今還是延續(xù)馮諾依曼體系結(jié)構(gòu)盒让。
現(xiàn)在使用的通用計算機都是圍繞這五大基本結(jié)構(gòu)來優(yōu)化設(shè)計的:
2.1 CPU發(fā)展
運算器梅肤、控制器可以集成到一起就變成了CPU(就像人的大腦負責(zé)思考和控制):期初先電子管后有晶體管、集成電路邑茄、超大規(guī)模集成電路姨蝴。就是在一定的面積內(nèi)集成了更多的電路,越來越精密越來越復(fù)雜肺缕。
2.2 存儲器發(fā)展
存儲器(記憶單元左医,將計算好的結(jié)果進行存儲):
因為速度和價格問題分為寄存器授帕、內(nèi)存、硬盤等浮梢。
寄存器是最快的在cpu內(nèi)部存取很快跛十,
內(nèi)存是cpu和硬盤之間的過渡區(qū),cpu太快秕硝、硬盤太慢偶器,這里就體現(xiàn)出計算機科學(xué)領(lǐng)域的任何問題都可以通過增加一個間接的中間層來解決。
-
1725年打孔卡(PUNCHED CARD)和打孔紙帶(PUNCHED TAPE)缝裤,最早的機械化信息存儲形式
打孔卡的提花織機
打孔紙帶
-
1928年磁帶(MAGNETIC TAPE)屏轰,磁性存儲時代的開始
磁帶
-
1932年磁鼓內(nèi)存(DRUM MEMORY),硬盤驅(qū)動器(HDD)的前身
磁鼓內(nèi)存憋飞,硬盤的前身
看著是不是挺小的霎苗,其實很大。
-
1946年SELECTRON管榛做,第一個隨機存取數(shù)字存儲器
Selectron管唁盏,靜電記憶管 -
1947年延遲線存儲器(DELAY LINE MEMORY),一種順序存取的內(nèi)存形式
UNIVAC計算機上的延遲線存儲器g
-
1947年磁芯存儲器(MAGNETIC-CORE MEMORY)检眯,隨機存取存儲器(RAM)的早期版本
一個存儲1024位厘擂,32x32大小的磁芯存儲器
- 1951年磁帶(MAGNETIC TAPE),首次被用于計算機上存儲數(shù)據(jù)
- 1956年硬盤驅(qū)動器(HARD DRIVE)刽严,磁盤存儲時代開始了
- 1965年只讀式光盤存儲器(CD-ROM)/數(shù)字多用途光盤 DVD(FLOPPY DISK)
- 1971年軟盤(FLOPPY DISK)
- 1999年SD存儲卡(SECURE DIGITAL MEMORY CARD)
- 2000年USB閃存驅(qū)動器(U盤)
- 2006年云存儲
2.3 輸入設(shè)備
世界上第一個鼠標是用木頭做的,而且最早的專利名字叫做“顯示系統(tǒng)X-Y位置指示器”避凝。 1964年舞萄,在斯坦福研究院工作的道格拉斯·恩格爾巴特,制作出了世界上第一個鼠標管削。
19世紀初意大利人佩萊里尼·圖里為其盲人女友發(fā)明的打字機倒脓,后面才演變成了鍵盤。
2.4 輸出設(shè)備
第一階段:CRT 小時候常見的大屁股電腦含思。
第二階段:LCD 等離子崎弃、液晶顯示器等。
第三階段:OLED 曲面屏含潘、可折疊的屏幕饲做。
3. 計算機程序發(fā)展史
正所謂一陰一陽之謂道,有了硬件就必定會有對應(yīng)的軟件加以輔助调鬓。
那程序的發(fā)展史是什么樣的呢艇炎?
我們一起來探討一下吧。
3.1 機器語言
對于計算機來說最簡單最直接的語言就是機器語言(0和1)腾窝,
因為現(xiàn)今的計算機都是按二進制來設(shè)計的缀踪,只能識別高低電平也就是0和1。
雖然這個是語言對于計算機來說效率最高虹脯,但是對于人類來說實在是太難了驴娃,你想想所有的信息都用0和1來表示對于我們的記憶來說實在是太痛苦了。
其實也有其他進制的計算機循集,而且在前蘇聯(lián)的科學(xué)家研究所知三進制(真唇敞、假、不知道)
計算機信息處理能力是效率最高的咒彤。那為什么在價格比二進制更便宜疆柔,編程更方便的三進制計算機為啥沒有得到發(fā)展呢?這就要說命運造化弄人了镶柱,也許在另一個平行世界“我們”正在使用三進制計算機吧旷档。
3.2 匯編語言
能不能像翻譯一樣將特定字符指定對應(yīng)的二進制,做一次翻譯歇拆,對人類更友好編程呢鞋屈?20世紀50年代人們就發(fā)明了匯編語言來替代機器語言進行愉快的編程了。它就像助記符故觅,但是可移植性比較差了厂庇。
3.3 高級語言
1956年FORTRAN語言座位世界上第一個被正式推廣使用的高級語言開啟了高級語言的啟蒙,后面的高級語言如雨后春筍一般瘋狂發(fā)展输吏。
其中高級語言大致可以分為面向過程和面向?qū)ο?/strong>語言权旷,也有在此之間游蕩的。
語言 | 類型 | 年代 |
---|---|---|
C語言 | 面向過程 | 1972 |
SQL語言 | 面向過程 | 1978 |
C++ 語言 | 面向過程/對象 | 1980 |
MATLAB語言 | 面向?qū)ο?/td> | 1984 |
Python語言 | 面向?qū)ο?/td> | 1991 |
Visual Basic語言 | 面向?qū)ο?/td> | 1991 |
Ruby語言 | 面向?qū)ο?/td> | 1993 |
Lua語言 | 面向?qū)ο?/td> | 1993 |
Java語言 | 面向?qū)ο?/td> | 1995 |
JavaScript語言 | 面向?qū)ο?/td> | 1995 |
PHP語言 | 面向?qū)ο?/td> | 1995 |
C#語言 | 面向?qū)ο?/td> | 2001 |
Scala語言 | 面向?qū)ο?/td> | 2003 |
Go語言 | 面向?qū)ο?/td> | 2009 |
計算機編程語言只是一種工具贯溅,就像錘子炼杖、螺絲刀、美工刀等盗迟,各有優(yōu)勢和特點坤邪。
4. 算法的發(fā)展史
公元前4000年,遠古的蘇美爾人使用一周七天罚缕,一年十二個月的等歷算法艇纺,算是開啟了算法史。
我們來看看算法的定義:
算法(Algorithm)是指解題方案的準確而完整的描述邮弹,是一系列解決問題的清晰
指令
黔衡,算法代表著用系統(tǒng)的方法描述解決問題的策略機制。也就是說腌乡,能夠?qū)σ欢ㄒ?guī)范的輸入盟劫,在有限時間內(nèi)獲得所要求的輸出。如果一個算法有缺陷与纽,或不適合于某個問題侣签,執(zhí)行這個算法將不會解決這個問題塘装。不同的算法可能用不同的時間、空間或效率來完成同樣的任務(wù)影所。一個算法的優(yōu)劣可以用空間復(fù)雜度與時間復(fù)雜度來衡量蹦肴。
------來自百度百科
最重要的五個特性:有窮性、確切性猴娩、輸入阴幌、輸出、可行
常用的方法:遞推法卷中、窮舉法矛双、貪心算法、分治法蟆豫、動態(tài)規(guī)劃法议忽、迭代法、分支界限法无埃、回溯法等徙瓶。
其實說白了就是對已有問題的解決方案且可行:
比如我想從杭州東站到華為研究所,可以坐地鐵也可以坐公交也可以自己開車或者騎自行車嫉称,每種方案都是可行的就是最終可以到達但是需要的時間(時間復(fù)雜度)和錢財(空間復(fù)雜度)是不同的侦镇。如果我高興也可以繞地球一圈。织阅。壳繁。
這樣看來是不是算法并沒有那么神秘和高大上了吧,每天我們都在使用著算法就是沒有注意到而已荔棉。
學(xué)習(xí)一樣?xùn)|西了解一下歷史還是有必要的闹炉,因為在每個時代的使命和任務(wù)是不同的,在變化的過程中多多思考不變的是什么润樱?
讓我們愉快的開啟算法之旅吧~
參考文檔:
程序員上下50年
計算機存儲歷史
作為程序員必須知道的編程語言編年史
算法的發(fā)展史
如有錯誤請大佬指正~