閱讀本文大概需要 2.8 分鐘。
想要成為一名成功的程式設計師,我們除了瞭解不同程式語言的設計思路,也應當瞭解程式設計的發展歷史,從而判斷未來的程式設計技術將走向何方。接下就為大家普及下計算機發展歷程中的8個冷門小知識!
01
第一臺電腦為蒸汽驅動
作為公認的程式設計之父,Charles Babbage發明了世界上首批計算機之一。他將這臺新裝置稱為分析引擎。其體積超過一棟房屋,由六臺蒸汽機驅動並使用打孔卡進行程式設計。分析引擎有四大主要組成部分:1.轉盤——相當於現代計算機中的CPU;2.儲存——相當於現代計算機中的記憶體與儲存介質;3.讀取器——相當於輸入機制;4.印表機——用於實現資訊輸出。
02
電腦病毒的設計初衷並非是造成損害
史上第一款電腦病毒,竟然是由防禦技術專家Fred Cohen親手設計出來的。他創造電腦病毒的目的僅僅是為了證明程式對電腦感染的可行性,從未希望藉此對電腦造成任何危害。但這款程式卻能夠對電腦進行感染,並且能通過軟盤等移動介質在不同計算機之間進行傳播,因而命名為病毒。後來,他又創造出一種主動式電腦病毒,主要目的是幫助電腦使用者找到未受感染可執行檔案。
03
第一位程式設計師是位女性
也許最令人難以置信的是,歷史上第一位程式設計師是位女性。她的名字是Ada Lovelace。在1843年,這位英國數學家Ada Lovelace,翻譯了義大利工程師Luigi Menabreaw撰寫的分析引擎文章。在翻譯過程中,她把自己的理解都批註到每篇文章下,而這舉動加快了計算機程式設計技術的發展。在這之後,她又設計出了第一種能夠利用分析引擎計算伯努利數的演算法,這也是第一個用電腦編寫的演算法。
04
第一款數字化電腦遊戲從未帶來任何利潤回報
現在的視訊遊戲已經成為了最受矚目的程式開發成果,然而歷史上第一款數字計算機遊戲則遭遇巨大失敗。第一個電腦遊戲出現於1962年,由麻省理工學院的計算機程式設計師Steve Russell與其團隊一同編寫,這款名為《太空大戰》的遊戲耗費了他們近200個小時。該遊戲允許兩名玩家分別控制兩艘飛船,目標是擊中並摧毀對方飛船,並且玩家還需要躲避螢幕中代表星球的小白點。如果玩家撞上這些星球,則遊戲失敗。雖然Russell和他的團隊從未在這個遊戲說的任何收益,但必須承認如果沒有這一突破我們可能永遠不會擁有如今蓬勃發展的視訊遊戲產業。
05
影象處理演算法中使用最廣的一幅圖片來自《花花公子》雜誌
40年來,這幅被應用為影象處理方案中的泛用性標準測試素材,還被程式設計師們親切稱為Lena的圖片。但大多數人都不知道,它是來自《花花公子》雜誌1972年11月刊的插頁。
06
GIT中保證檔案完整性的SHA-1值
Linux kernel開創者和Git的開發者——Linus說,Git使用了SHA-1並非是為了安全性,而是為了資料的完整性;它可以保證,在很多年後,你重新checkout某個commit時,一定是它多年前的當時的狀態,完全一摸一樣,完全值得信任。
07
程式中bug的名稱源自“蟲子”
在程式中bug一詞用於技術錯誤。這一術語最初由愛迪生在1878年提出的,但當時並沒有流行起來。在這的幾年之後,美國上將Grace Hopper在她的日誌本中,寫下了她在Mark II電腦上發現的一項bug。不過實際上,她說的真的是“蟲子”問題,因為一隻蛾子被困在電腦的繼電器中,導致電腦的操作無法正常執行。如圖片所見,她寫道“這是我在電腦上發現的第一個bug”。
08
豐富多彩的計算機程式設計世界
如果將計算機程式設計世界看作一個國家,那麼其中涉及的語言種類必然冠絕群倫。目前已知的程式語言共有698種,遠遠超過任何以語言多樣性著稱的國家。
更重要的是,程式設計師們應當瞭解程式設計技術的發展歷程以及各大里程碑式創新成果背後的貢獻者。另外,歷史文化能夠激發人們對於所從事行業的熱愛之情,從而更為積極地投身於工作當中。
·END·
程式設計師的成長之路
路雖遠,行則必至
本文原發於 同名微信公眾號「程式設計師的成長之路」,回覆「1024」你懂得,給個讚唄。
微信ID:cxydczzl
往期精彩回顧