第一篇:認識計算機程序和算法

認識計算機程序和算法

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)忘記了原始的記憶嗽交,其實我們能做的遠不止如此卿嘲。

人類發(fā)展史

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ù)雜肺缕。

CPU內(nèi)部電路圖
CPU發(fā)展史

2.2 存儲器發(fā)展

存儲器(記憶單元左医,將計算好的結(jié)果進行存儲):
因為速度和價格問題分為寄存器授帕、內(nèi)存、硬盤等浮梢。
寄存器是最快的在cpu內(nèi)部存取很快跛十,
內(nèi)存是cpu和硬盤之間的過渡區(qū),cpu太快秕硝、硬盤太慢偶器,這里就體現(xiàn)出計算機科學(xué)領(lǐng)域的任何問題都可以通過增加一個間接的中間層來解決。

  1. 1725年打孔卡(PUNCHED CARD)和打孔紙帶(PUNCHED TAPE)缝裤,最早的機械化信息存儲形式


    打孔卡的提花織機

    打孔紙帶
  1. 1928年磁帶(MAGNETIC TAPE)屏轰,磁性存儲時代的開始


    磁帶
  1. 1932年磁鼓內(nèi)存(DRUM MEMORY),硬盤驅(qū)動器(HDD)的前身


    磁鼓內(nèi)存憋飞,硬盤的前身

看著是不是挺小的霎苗,其實很大。


體積很大喲
  1. 1946年SELECTRON管榛做,第一個隨機存取數(shù)字存儲器


    Selectron管唁盏,靜電記憶管
  2. 1947年延遲線存儲器(DELAY LINE MEMORY),一種順序存取的內(nèi)存形式


    UNIVAC計算機上的延遲線存儲器g
  1. 1947年磁芯存儲器(MAGNETIC-CORE MEMORY)检眯,隨機存取存儲器(RAM)的早期版本


    一個存儲1024位厘擂,32x32大小的磁芯存儲器
  1. 1951年磁帶(MAGNETIC TAPE),首次被用于計算機上存儲數(shù)據(jù)
1/4英寸盒式磁帶是由3M于1972年推出的一種磁帶數(shù)據(jù)存儲格式锰瘸,一直流行至今
  1. 1956年硬盤驅(qū)動器(HARD DRIVE)刽严,磁盤存儲時代開始了
世界上第一個硬盤驅(qū)動器IBM 350
  1. 1965年只讀式光盤存儲器(CD-ROM)/數(shù)字多用途光盤 DVD(FLOPPY DISK)
hilip發(fā)明的世界上第一臺CD播放器
  1. 1971年軟盤(FLOPPY DISK)
索尼Sony 3.5英寸軟盤(1.44MB)
  1. 1999年SD存儲卡(SECURE DIGITAL MEMORY CARD)
64G SD存儲卡
  1. 2000年USB閃存驅(qū)動器(U盤)
U盤內(nèi)部構(gòu)造圖
  1. 2006年云存儲

2.3 輸入設(shè)備

世界上第一個鼠標是用木頭做的,而且最早的專利名字叫做“顯示系統(tǒng)X-Y位置指示器”避凝。 1964年舞萄,在斯坦福研究院工作的道格拉斯·恩格爾巴特,制作出了世界上第一個鼠標管削。

鼠標發(fā)展史

19世紀初意大利人佩萊里尼·圖里為其盲人女友發(fā)明的打字機倒脓,后面才演變成了鍵盤。

打字機
鍵盤

2.4 輸出設(shè)備

第一階段:CRT 小時候常見的大屁股電腦含思。
第二階段:LCD 等離子崎弃、液晶顯示器等。
第三階段:OLED 曲面屏含潘、可折疊的屏幕饲做。

電視機
顯示器發(fā)展史

3. 計算機程序發(fā)展史

正所謂一陰一陽之謂道,有了硬件就必定會有對應(yīng)的軟件加以輔助调鬓。
那程序的發(fā)展史是什么樣的呢艇炎?
我們一起來探討一下吧。

計算機程序發(fā)展史概況

3.1 機器語言

對于計算機來說最簡單最直接的語言就是機器語言(0和1)腾窝,
因為現(xiàn)今的計算機都是按二進制來設(shè)計的缀踪,只能識別高低電平也就是0和1。
雖然這個是語言對于計算機來說效率最高虹脯,但是對于人類來說實在是太難了驴娃,你想想所有的信息都用0和1來表示對于我們的記憶來說實在是太痛苦了。

滿腦子都是0和1

其實也有其他進制的計算機循集,而且在前蘇聯(lián)的科學(xué)家研究所知三進制(真唇敞、假、不知道)計算機信息處理能力是效率最高的咒彤。那為什么在價格比二進制更便宜疆柔,編程更方便的三進制計算機為啥沒有得到發(fā)展呢?這就要說命運造化弄人了镶柱,也許在另一個平行世界“我們”正在使用三進制計算機吧旷档。

前蘇聯(lián)發(fā)明的三進制計算機

3.2 匯編語言

能不能像翻譯一樣將特定字符指定對應(yīng)的二進制,做一次翻譯歇拆,對人類更友好編程呢鞋屈?20世紀50年代人們就發(fā)明了匯編語言來替代機器語言進行愉快的編程了。它就像助記符故觅,但是可移植性比較差了厂庇。

匯編語言代碼

3.3 高級語言

1956年FORTRAN語言座位世界上第一個被正式推廣使用的高級語言開啟了高級語言的啟蒙,后面的高級語言如雨后春筍一般瘋狂發(fā)展输吏。
其中高級語言大致可以分為面向過程面向?qū)ο?/strong>語言权旷,也有在此之間游蕩的。

高級語言蓬勃發(fā)展
語言 類型 年代
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ā)展史
如有錯誤請大佬指正~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渣触,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子壹若,更是在濱河造成了極大的恐慌嗅钻,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件店展,死亡現(xiàn)場離奇詭異养篓,居然都是意外死亡,警方通過查閱死者的電腦和手機赂蕴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門柳弄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人概说,你說我怎么就攤上這事碧注∠ィ” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵应闯,是天一觀的道長纤控。 經(jīng)常有香客問我挂捻,道長碉纺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任刻撒,我火速辦了婚禮骨田,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘声怔。我一直安慰自己态贤,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布醋火。 她就那樣靜靜地躺著悠汽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芥驳。 梳的紋絲不亂的頭發(fā)上柿冲,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音兆旬,去河邊找鬼假抄。 笑死葵擎,一個胖子當著我的面吹牛嗡综,可吹牛的內(nèi)容都是我干的刚梭。 我是一名探鬼主播须妻,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼冠摄,長吁一口氣:“原來是場噩夢啊……” “哼失驶!你這毒婦竟也來了门扇?” 一聲冷哼從身側(cè)響起圆雁,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤由桌,失蹤者是張志新(化名)和其女友劉穎为黎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沥寥,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡碍舍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了邑雅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片片橡。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖淮野,靈堂內(nèi)的尸體忽然破棺而出捧书,到底是詐尸還是另有隱情吹泡,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布经瓷,位于F島的核電站爆哑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏舆吮。R本人自食惡果不足惜揭朝,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望色冀。 院中可真熱鬧潭袱,春花似錦、人聲如沸锋恬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽与学。三九已至彤悔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間索守,已是汗流浹背晕窑。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕾盯,地道東北人幕屹。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像级遭,于是被迫代替她去往敵國和親望拖。 傳聞我的和親對象是個殘疾皇子挫鸽,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容