世界上第壹個程序是1842年寫的,恰好在第壹個能被稱為計算機的真正機器。這段代碼的作者是AdaAugusta,被封為Lovelace女伯爵,就是大家所知道的AdaLovelace。作為世界上第壹個計算機程序的作者,她被廣泛地認為是有史以來第壹位程序員。
當把Ada稱為壹位程序員的時候,很容易忘記世界上第壹段代碼產生的年代就是塞繆爾·莫爾斯首次展示電話、阿姆斯達號上的黑奴在反抗和美國正處於三十年代、奧斯曼帝國和波斯帝國時期、穆斯林國家的奴隸正和埃及爭奪中東地區的年代。計算機這個詞在那時候仍然表示壹個人做了100多年的計算工作的意思。那都是很久以前的事情了。
世界上第壹段代碼是為查爾斯·巴貝奇的分析機寫的,這個機器從來沒有真正建成過,雖然有這個可能。AdaLovelace看到了巴貝奇機器的潛力,產生了可編程的計算機的念頭。她為泰勒的科學回憶錄翻譯了壹位意大利數學家LuigiMenabrea的名為“分析機的概念圖”的論文,並通過“翻譯者的附註(她自己註釋的)”把這篇論文弄懂了,那個註釋裏主要寫了查爾斯·巴貝奇分析機都能幹些什麽。在附註G的開篇,就提到了世界上第壹個計算機程序,舉例說明了Lovelace意識到巴貝奇的設計是多麽的意義深遠,但還保持著她做科學的平靜。
“防止誇大源於分析機的能量的想法是有必要的。”
Lovelace在她根本沒有辦法誇大壹個包含現代計算機的主要部分的設計的本質。巴貝奇拒絕公布這臺分析機的很多內容,使得Lovelace的註釋對未來的發展起到了重要影響,最顯著的影響便是促使阿蘭·圖靈產生通用程序存儲計算機的想法。這壹點Ada並沒有看到,她36歲去世,前面提到的註釋成了她唯壹的出版物。如果她再能多活幾年多工作幾年,計算機會不會又是另壹個樣子呢?
讓大家回到這個問題上來:如果巴貝奇有足夠的資源建好分析機並能讓Lovelace在上面跑程序的話,世界上第壹個計算機程序是幹嘛用的呢?這個程序讓巴貝奇分析機計算了伯努利數字序列。接著她描述了怎麽把大量的巴貝奇分析機的穿孔卡片作為輸入實現這個程序。在她的實現方法中Lovelace設定了伯努利數序列的第壹個數字(B0=1,B1=-),然後開始從B2(第壹個非正規伯努利數)開始計算整個序列,她把這裏的B2標記為B1。
現代重寫的Javascript版本的Ada的大量穿孔卡片上的堆棧看起來可能是這個樣子。這個重寫的版本不是Ada的代碼在巴貝奇分析機上的模擬,只是Ada曾經使用過的算法的另壹種實現。
順便提壹下,到目前為止從沒有人能從Ada的伯努利數計算代碼裏發現任何bug。盡管她發明了編程,但她顯然並沒有發明bug。
註:AdaLovelaceDay是壹個國際性的慶祝婦女在科學,科技,工程和數學領域取得成就的節日。
最早的程序直接寫的是二進制機器代碼,沒有編譯器
將編好的代碼通過讀卡機讀如機器,直接執行。
然後出現的是匯編語言,通過二進制的機器代碼來實現匯編的編譯連接工作,
然後在用匯編語言完善優化匯編語言;
接著才是高級語言,使用匯編語言編譯
逐漸實現高級語言編譯高級語言
19世紀之前
壹、機械計算機時代的拓荒者
在西歐,由中世紀進入文藝復興時期的社會大變革,大大促進了自然科學技術的發展,人們長期被神權壓抑的創造力得到空前釋放。其中制造壹臺能幫助人進行計算的機器,就是最耀眼的思想火花之壹。從那時起,壹個又壹個科學家為把這壹思想火花變成引導人類進入自由王國的火炬而不懈努力。但限於當時的科技總體水平,大都失敗了,這就是拓荒者的***同命運:往往見不到豐碩的果實。後人在享用這甜美的時候,應該能從中品出壹些汗水與淚水的滋味
1614:蘇格蘭人JohnNapier(1550-1617)發表了壹篇論文,其中提到他發明了壹種可以計算四則運算和方根運算的精巧裝置。
1623:WilhelmSchickard(1592-1635)制作了壹個能進行六位以內數加減法,並能通過鈴聲輸出答案的'計算鐘'。通過轉動齒輪來進行操作。
1625:WilliamOughtred(1575-1660)發明計算尺
1642:法國數學家Pascal在WILLIAMOughtred計算尺的基礎上將計算尺加以改進,能進行八位計算。並且還賣出了許多,成為壹種時髦的商品。
1668:英國人SamuelMorl和(1625-1695)制作了壹個非十進制的加法裝置,適宜計算錢幣。
1671:德國數學家GottfriedLeibniz設計了壹架可以進行乘法,最終答案可以最大達到16位。
1775:英國Charles制作成功了壹臺與Leibniz's的計算機類似的機器。但更先進壹些。
1776:德國人MathieusHahn成功的制作了壹臺乘法器。
1801:Joseph-MaireJacuard開發了壹臺能用穿孔卡片控制的自動織布機。
1820:法國人CharlesXavierThomasdeColmar(1785-1870),制作成功第壹臺成品計算機,非常的可靠,可以放在桌面上,在後來的90多年間壹直在市場上出售。
1822:英國人CharlesBabbage(1792-1871)設計了差分機和分析機,其中設計的理論非常的超前,類似於百年後的電子計算機,特別是利用卡片輸入程序和數據的設計被後人所采用。
1832:Babbage和JosephClement制成了壹個差分機的成品,開始可以進行6位數的運算。後來發展到20位、30位,尺寸將近壹個房子那麽大。結果以穿孔的形式輸出。但限於當時的制造技術,他們的設計難以制成。
1834:斯德哥爾摩的GeorgeScheutz用木頭做了壹臺差分機。
1834:Babbage設想制造壹臺通用的分析機,在只讀存儲器(穿孔卡片)中存儲程序和數據,Babbage在以後的時間繼續他的研究工作,並於1840年將操作數提高到了40位,並基本實現了控制中心(CPU)和存儲程序的設想,而且程序可以根據條件進行跳轉,能在幾秒內作出壹般的加法,幾分鐘內作出乘除法。
1842:Babbage的差分機項目因為研制費用昂貴,被政府取消。但他自己仍花費大量的時間和精力於他的分析機研究。
1843:Scheutz和他的兒子EdvardScheutz制造了壹臺差分機,瑞典政府同意繼續支持他們的研究工作。
1847:Babbage花兩年時間設計了壹臺較簡易的、31位的差分機,但沒有人感興趣並支持他造出這臺機器。但後來倫敦科學博物館用現代技術復制出這臺機器後發現,它確實能準確的工作。
1848:英國數學家GeorgeBoole創立二進制代數學。提前差不多壹個世紀為現代二進制計算機鋪平了道路。
1853:令Babbage感到高興的是,Scheutzes制造成功了真正意義上的比例差分機,能進行15位數的運算。象Babbage所設想的那樣輸出結果。後來倫敦的BrianDonkin又造出了更可靠的第二臺。
1858:第壹臺制表機被Albany的Dudley天文臺買走。第二臺被英國政府買走。但天文臺並沒有將其充分利用,後來被送進了博物館。而第二臺卻被幸運的使用了很長時間。
1871:Babbage制造了分析機的部分部件和印表機。
1878:紐約的西班牙人RamonVerea,制造成功桌面計算器。比前面提到的都要快。但他對將其推向市場不感興趣,只是想表明,西班牙人可以比美國人做的更好。
1879:壹個調查委員會開始研究分析機是否可行,最後他們的結論是:分析機根本不可能工作。此時Babbage已經去世了。調查之後,人們將他的分析機徹底遺忘了。但HowardAiken例外。
1885:這時期更多的計算機湧現出來。如美國、俄國、瑞典等。他們開始用有槽的圓柱代替易出故障的齒輪。
1886:芝加哥的DorrE.Felt(1862-1930),制造了第壹臺用按鍵操作的計算器,而且速度非常快,按鍵擡起,結果也就出來了。
1889:Felt推出桌面印表計算器。
1890:1890美國人口普查。1880年的普查人工用了7年的時間進行統計。這意味著1890年的統計將會超過10年。美國人口普查部門希望能得到壹臺機器幫助提高普查的效率。HermanHollerith,建立制表機公司的那個人,後來他的公司發展成了IBM公司。借鑒了Babbage的發明,用穿孔卡片存儲數據,並設計了機器。結果僅僅用了6個周就得出了準確的數據(62622250人)。HermanHollerith大發其財。
1892:聖多美和普林西比的WilliamS.Burroughs(1857-1898),制作成功了壹臺比Felt的功能更強的機器,真正開創了辦公自動化工業。
1896:HermanHollerith創辦了IBM公司的前身。1900~1910
1906:HenryBabbage,CharlesBabbage的兒子,在R.W.Munro的支持下,完成了父親設計的分析機,但也僅能證明它能工作,而沒有將其作為產品推出。
二、電子計算機最初的日子裏
在這之前的計算機,都是基於機械運行方式,盡管有個別產品開始引入壹些電學內容,卻都是從屬與機械的,還沒有進入計算機的靈活:邏輯運算領域。而在這之後,隨著電子技術的飛速發展,計算機就開始了由機械向電子時代的過渡,電子越來越成為計算機的主體,機械越來越成為從屬,二者的地位發生了變化,計算機也開始了質的轉變。下面就是這壹過渡時期的主要事件:
1906:美國的LeeDeForest發明了電子管。在這之前造出數字電子計算機是不可能的。這為電子計算機的發展奠定了基礎。
1920~1930
1924年2月:IBM,壹個具有劃時代意義的公司成立
1930~1940
1935:IBM推出IBM601機。這是壹臺能在壹秒鐘算出乘法的穿孔卡片計算機。這臺機器無論在自然科學還是在商業意義上都具有重要的地位。大約造了1500臺。
1937:英國劍橋大學的AlanM.Turing(1912-1954)出版了他的論文,並提出了被後人稱之為'圖靈機'的數學模型。
1937:BELL試驗室的GeorgeStibitz展示了用繼電器表示二進制的裝置。盡管僅僅是個展示品,但卻是第壹臺二進制電子計算機。
1938:ClaudeE.Shannon發表了用繼電器進行邏輯表示的論文。
1938:柏林的KonradZuse和他的助手們完成了壹個機械可編程二進制形式的計算機,其理論基礎是Boolean代數。後來命名為Z1。它的功能比較強大,用類似電影膠片的東西作為存儲介質。可以運算七位指數和16位小數。可以用壹個鍵盤輸入數字,用燈泡顯示結果。
19391月1日:加利福尼亞的DavidHewlet和WilliamPackard在他們的車庫裏造出了Hewlett-Packard計算機。名字是兩人用投硬幣的方式決定的。包括兩人名字的壹部分。
1939年11月:美國JohnV.Atanasoff和他的學生CliffordBerry完成了壹臺16位的加法器,這是第壹臺真空管計算機。
1939:二次世界大戰的開始,軍事需要大大促進了計算機技術的發展。
1939:Zuse和Schreyer開始在他們的Z1計算機的基礎上發展Z2計算機。並用繼電器改進它的存儲和計算單元。但這個項目因為Zuse服兵役被中斷了壹年。
1939/1940:Schreyer利用真空管完成了壹個10位的加法器,並使用了氖燈做存儲裝置。
1940~1950
1940年1月:Bell實驗室的SamuelWilliams和Stibitz制造成功了壹個能進行復雜運算的計算機。大量使用了繼電器,並借鑒了壹些電話技術,采用了先進的編碼技術。
1941夏季:Atanasoff和學生Berry完成了能解線性代數方程的計算機,取名叫'ABC'(Atanasoff-BerryComputer),用電容作存儲器,用穿孔卡片作輔助存儲器,那些孔實際上是'燒'上的。時鐘頻率是60HZ,完成壹次加法運算用時壹秒。
1941年12月:德國Zuse制作完成了Z3計算機的研制。這是第壹臺可編程的電子計算機。可處理7位指數、14位小數。使用了大量的真空管。每秒種能作3到4次加法運算。壹次乘法需要3到5秒。
1943:1943年到1959年時期的計算機通常被稱作第壹代計算機。使用真空管,所有的程序都是用機器碼編寫,使用穿孔卡片。典型的機器就是:UNIVAC。
1943年1月:MarkI,自動順序控制計算機在美國研制成功。整個機器有51英尺長,重5噸,75萬個零部件,使用了3304個繼電器,60個開關作為機械只讀存儲器。程序存儲在紙帶上,數據可以來自紙帶或卡片閱讀器。被用來為美國海軍計算彈道火力表。
1943年4月:MaxNewman、Wynn-Williams和他們的研究小組研制成功'HeathRobinson',這是壹臺密碼破譯機,嚴格說不是壹臺計算機。但是其使用了壹些邏輯部件和真空管,其光學裝置每秒鐘能讀入2000個字符。同樣具有劃時代的意義。
1943年9月:Williams和Stibitz完成了'RelayInterpolator',後來命名為'ModelIIRelayCalculator'。這是壹臺可編程計算機。同樣使用紙帶輸入程序和數據。其運行更可靠,每個數用7個繼電器表示,可進行浮點運算。
1943年12月:最早的可編程計算機在英國推出,包括2400個真空管,目的是為了破譯德國的密碼,每秒能翻譯大約5000個字符,但使用完後不久就遭到了毀壞。據說是因為在翻譯俄語的時候出現了錯誤。
1946:ENIAC(ElectronicNumericalIntegrator和Computer):第壹臺真正意義上的數字電子計算機。開始研制於1943年,完成於1946年。負責人是JohnW.Mauchly和J.PresperEckert。重30噸,18000個電子管,功率25千瓦。主要用於計算彈道和氫彈的研制。
三、晶體管計算機的發展
真空管時代的計算機盡管已經步入了現代計算機的範疇,但其體積之大、能耗之高、故障之多、價格之貴大大制約了它的普及應用。直到晶體管被發明出來,電子計算機才找到了騰飛的起點,壹發而不可收
1947:Bell實驗室的WilliamB.Shockley、JohnBardeen和WalterH.Brattain.發明了晶體管,開辟了電子時代新紀元。
1949:EDSAC:劍橋大學的Wilkes和他的小組建成了壹臺存儲程序的計算機。輸入輸出設備仍是紙帶。
1949:EDVAC(electronicdiscretevariablecomputer):第壹臺使用磁帶的計算機。這是壹個突破,可以多次在其上存儲程序。這臺機器是JohnvonNeumann提議建造的。
1949:'未來的計算機不會超過1.5噸。'這是當時科學雜誌的大膽預測。
1950~1960
1950:軟磁盤由東京帝國大學的YoshiroNakamats發明。其銷售權由IBM公司獲得。開創存儲時代新紀元。
1950:英國數學家和計算機先驅AlanTuring說:計算機將會具有人的智慧,如果壹個人和壹臺機器對話,對於提出和回答的問題,這個人不能區別到底對話的是機器還是人,那麽這臺機器就具有了人的智能。
1951:GraceMurrayHopper完成了高級語言編譯器。
1951:Whirlwind:美國空軍的第壹個計算機控制實時防禦系統研制完成。
1951:UNIVAC-1:第壹臺商用計算機系統。設計者:J.PresperEckert和JohnMauchly。被美國人口普查部門用於人口普查,標誌著計算機的應用進入了壹個新的、商業應用的時代。
1952:EDVAC(ElectronicDiscreteVariableComputer):由VonNeumann領導設計並完成。取名:電子離散變量計算機。
1953:此時世界上大約有100臺計算機在運轉。
1953:磁芯存儲器被開發出來。
1954:IBM的JohnBackus和他的研究小組開始開發FORTRAN(FORmulaTRANslation),1957年完成。是壹種適合科學研究使用的計算機高級語言。
1956:第壹次有關人工智能的會議在Dartmouth學院召開。
1957:IBM開發成功第壹臺點陣打印機。
1957:FORTRAN高級語言開發成功。
四、集成電路,現代計算機插上騰飛的翅膀
盡管晶體管的采用大大縮小了計算機的體積、降低了其價格,減少了故障。但離人們的要求仍差很遠,而且各行業對計算機也產生了較大的需求,生產更能更強、更輕便、更便宜的機器成了當務之急,而集成電路的發明正如\"及時雨\",當春乃發生。其高度的集成性,不僅僅使體積得以減小,更使速度加快,故障減少。人們開始制造革命性的微處理器。計算機技術經過多年的積累,終於駛上了用矽鋪就的高速公路。
1958年9月12日:在RobertNoyce(INTEL公司的創始人)的領導下,發明了集成電路。不久又推出了微處理器。但因為在發明微處理器時借鑒了日本公司的技術,所以日本對其專利不承認,因為日本沒有得到應有的利益。過了30年,日本才承認,這樣日本公司可以從中得到壹部分利潤了。但到2001年,這個專利也就失效了。
1959:1959年到1964年間設計的計算機壹般被稱為第二代計算機。大量采用了晶體管和印刷電路。計算機體積不斷縮小,功能不斷增強,可以運行FORTRAN和COBOL,接收英文字符命令。出現大量應用軟件。
1959:GraceMurrayHopper開始開發COBOL(COmmonBusiness-OrientatedLanguage)語言,完成於1961年。
1960~1970
1960:ALGOL:第壹個結構化程序設計語言推出。
1961:IBM的KennthIverson推出APL編程語言。
1963:PDP-8:DEC公司推出第壹臺小型計算機。
1964:1964年到1972年的計算機壹般被稱為第三代計算機。大量使用集成電路,典型的機型是IBM360系列。
1964:IBM發布PL/1編程語言。
1964:發布IBM360首套系列兼容機。
1964:DEC發布PDB-8小型計算機。
1965:摩爾定律發表,處理器的性能每年提高壹倍。後來其內容又發生了改變。
1965:LoftiZadeh創立模糊邏輯,用來處理近似值問題。
1965:ThomasE.Kurtz和JohnKemeny完成BASIC(BeginnersAllPurposeSymbolicInstructionCode)語言的開發。特別適合計算機教育和初學者使用,得到了廣泛的推廣。
1965:DouglasEnglebart提出鼠標器的設想,但沒有進壹步的研究。直到1983年被蘋果電腦公司大量采用。
1965:第壹臺超級計算機CD6600開發成功。
1967:NiklausWirth開始開發PASCAL語言,1971年完成。
1968:RobertNoyce和他的幾個朋友創辦了INTEL公司。
1968:SeymourPaper和他的研究小組在MIT開發了LOGO語言。
1969:ARPANET計劃開始啟動,這是現代INTERNET的雛形。
1969年4月7日:第壹個網絡協議標準RFC推出。
1969:EIA(ElectronicIndustriesAssocia
1970~1980
1970:第壹塊RAM芯片由INTEL推出,容量1K。
1970:KenThomson和DennisRitchie開始開發UNIX操作系統。
1970:Forth編程語言開發完成。
1970:Internet的雛形ARPAnet(AdvancedResearchProjectsAgencynetwork)基本完成。開始向非軍用部門開放,許多大學和商業部門開始接入。
1971年11月15日:MarcianE.Hoff在INTEL公司開發成功第壹塊微處理器4004,含2300個晶體管,是個4位系統,時鐘頻率108KHz,每秒執行6萬條指令。
在後來的日子裏,處理器發展主要指標壹覽:
處理器主頻每秒百萬條指令
4004108KHz0.06
80802MHz0.5
680008MHz0.7
80868MHz0.8
6800016MHz1.3
6802016MHz2.6
8028612MHz2.7
6803016MHz3.9
386SX20MHz6
6803025MHz6.3
6803040MHz10
386DX33MHz10
486DX25MHz20
486DX2-5050MHz35
486DX4/100100MHz60
Pentium66MHz100
Pentium133MHz240
Pentium233MHzMMX435
PentiumPro200MHz440
PentiumII233MHz560
PentiumII333MHz770
1971:PASCAL語言開發完成。
1972:1972年以後的計算機習慣上被稱為第四代計算機。基於大規模集成電路,及後來的超大規模集成電路。計算機功能更強,體積更小。人們開始懷疑計算機能否繼續縮小,特別是發熱量問題能否解決?人們開始探討第五代計算機的開發。
1972:C語言的開發完成。其主要設計者是UNIX系統的開發者之壹DennisRitche。這是壹個非常強大的語言,開發系統軟件,特別受人喜愛。
1972:Hewlett-Packard發明了第壹個手持計算器。
1972年4月1日:INTEL推出8008微處理器。
1972:ARPANET開始走向世界,INTERNET革命拉開序幕。
1973:街機遊戲Pong發布,得到廣泛的歡迎。發明者NolanBushnell,後來Atari的創立者。
1974:第壹個具有並行計算機體系結構的CLIP-4推出。
五、計算機技術漸入輝煌
在這之前,計算機技術主要集中在大型機和小型機領域發展,但隨著超大規模集