① 世界上第一個計算機程序是怎樣開發出來的
世界上第一個程序是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():第一台使用磁帶的計算機。這是一個突破,可以多次在其上存儲程序。這台機器是JohnvonNeumann提議建造的。
1949:'未來的計算機不會超過1.5噸。'這是當時科學雜志的大膽預測。
1950~1960
1950:軟磁碟由東京帝國大學的YoshiroNakamats發明。其銷售權由IBM公司獲得。開創存儲時代新紀元。
1950:英國數學家和計算機先驅AlanTuring說:計算機將會具有人的智慧,如果一個人和一台機器對話,對於提出和回答的問題,這個人不能區別到底對話的是機器還是人,那麼這台機器就具有了人的智能。
1951:GraceMurrayHopper完成了高級語言編譯器。
1951:Whirlwind:美國空軍的第一個計算機控制實時防禦系統研製完成。
1951:UNIVAC-1:第一台商用計算機系統。設計者:J.PresperEckert和JohnMauchly。被美國人口普查部門用於人口普查,標志著計算機的應用進入了一個新的、商業應用的時代。
1952:EDVAC():由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()語言的開發。特別適合計算機教育和初學者使用,得到了廣泛的推廣。
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(ElectronicInstriesAssocia
1970~1980
1970:第一塊RAM晶元由INTEL推出,容量1K。
1970:KenThomson和DennisRitchie開始開發UNIX操作系統。
1970:Forth編程語言開發完成。
1970:Internet的雛形ARPAnet()基本完成。開始向非軍用部門開放,許多大學和商業部門開始接入。
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推出。
五、計算機技術漸入輝煌
在這之前,計算機技術主要集中在大型機和小型機領域發展,但隨著超大規模集
② 楚門的世界中導演扮演者
艾德·哈里斯飾演克里斯托弗/導演,他導演了整個楚門秀,是一個老於世故的劇組頭領,讓人不寒而慄,作為肥皂劇《楚門的世界》的導演,克里斯托弗將一切都設計得近乎完美,把楚門控制在海景鎮的超現實世界之中;
個人簡歷:
艾德·哈里斯;
外文名:Ed Harris
別名:埃德·哈里斯、艾迪·夏里斯
國籍:美國
身高:1.75米
出生地:美國新澤西州
出生日期:1950年11月28日
職業:演員、導演
畢業院校:加州藝術學院(戲劇學士)
代表作品:阿波羅13號、勇闖奪命島、楚門的世界、畫家波拉克、兵臨城下、美麗心靈、時時刻刻、阿帕魯薩鎮
演藝經歷:
艾德·哈里斯1971年開始舞台表演;1977年走上電影之路;1983年因出演電影《太空英雄》而成名;1984年憑戲劇《愛情傻子》榮獲奧比獎;1986年以戲劇《珍貴的孩子》提名托尼獎最佳男演員獎;1989年參演詹姆斯·卡梅隆執導的科幻片《深淵》;1996年憑電影《阿波羅13號》第一次提名奧斯卡最佳男配角獎,同年出演《勇闖奪命島》;1999年憑電影《楚門的世界》第二次提名奧斯卡最佳男配角;2001年憑自導自演的處女作《畫家波拉克》提名奧斯卡最佳男主角獎,同年出演《兵臨城下》和《美麗心靈》;2003年憑借電影《時時刻刻》第三次提名奧斯卡最佳男配角;2005年憑迷你劇《帝國的崩塌》提名艾美獎最佳男主角;2008年自編自導自演西部片《阿帕魯薩鎮》;2012年憑電視電影《規則改變》提名艾美獎最佳男配角;2014年首次主演電視連續劇《西部世界》飾演大反派黑衣人;2015年與連姆·尼森合作的《暗夜逐仇》在美國上映,並和詹姆斯·弗蘭科連續合作兩部電影《阿德拉爾日記》《勝負未決的戰斗》。