1. 百戰程序員:編程語言到底有多少種
這個有很多種的,下面講解寫常遇到的。把編程語言比喻成車:
Ada 是輛丑到極點但是永遠不會出故障的坦克。
C 是輛賽車,它能跑得超乎想像得快,不過每跑個 50 英里就會拋錨。
Cobol 號稱是輛車,不過沒有哪個有自尊心的駕駛員肯承認曾經開過。
C# 是輛競爭模式的家庭旅行車。一旦你開過它,你就不會再用其他競品廠商的產品了。
C++ 是輛大馬力版本的 C 型賽車,它額外提供了成打的特性,而且每跑 250 英里才會拋錨,不過當它真出問題的時候,沒有人能找到究竟是哪兒壞了。
Eiffel 是輛內置了法國口音駕駛說明的汽車。他會幫你快速地找到錯誤並從中學到東西,不過你要是敢跟他爭論的話,他會罵你然後把你從車里扔出去。[來自 Daniel Prager ,稍有修改]
Erlang 是一個車隊,它們會互相協作把你送到任何你想去的地方。想要每隻腳各自操縱一輛車還是需要一些練習的,不過一旦學會了之後你就可以駕駛著它們通往其他方式難以企及的地方了。還有,你用了那麼多輛車,所以就算有幾輛壞掉也沒什麼可擔心的。
Forth 是你親手用套件組裝出來的車。你這輛車不論長相還是功能都沒必要和別人的一樣。不過,Forth 型號的車只能倒著走。
[Digg.com 網站上的評論,來自 256byteram(我忍不住要把它加上):]
FORTH LOVE IF HONK THEN !(譯註:抱歉我實在不知道這句話是啥意思……)
Fortran 是輛非常原始的車。它能跑得很快,前提是你要始終在完全筆直的道路上開。據說學開 Fortran 型汽車會導致你再也沒法學開其他型號的汽車了。
Java
Java 是輛家庭旅行車。它駕駛起來很容易,開起來速度也不會太快,不至於傷到你自己。
版本1:Haskell是輛設計極端優雅漂亮的車,傳聞它能開到非常極端的地形中去。當你試圖駕駛它的時候,它並不是真的沿著道路在前進的;實際上,它是不斷把自己和道路進行復制,每次成功復制之後,車在路上都會比上一次更遠一點。應該還是有可能按照傳統的方式來駕駛它的,不過你的數學能力不足以找出這個辦法來。
版本2:Haskell 並不是輛真的車,它是一個抽象的機器,能夠詳細地告訴你駕駛這個過程應該是什麼樣子的,如果你願意的話。你必須把這個抽象的機器放到另一台實際的機器裡面才能開動它,別問這個實際的機器是怎麼運行的。還有一種方法,你可以用多台抽象的機器造出另一台抽象的機器,然後把它交給那台實際的機器,這樣就能一個接一個地完成你的旅途了。[Monadic 的版本]
版本1:Lisp 看起來像一輛車,不過經過足夠的改裝,就能把它變成非常有效的一架飛機或一艘潛艇。
版本2:一開始它看起來一點兒都不像一輛車,不過時不時地你也能看到有人在開著它轉悠。終於有一天你決定多了解一下它,然後你意識到它其實是一輛能造出更多汽車的汽車。你把這個發現告訴了朋友,不過他們都大笑著說這些車看起來太奇怪了。至今你仍在車庫里留著一輛,期待著哪天能把它開上路去。[來自 Paul Tanimoto]
Mathematica是輛設計得很好的車,它從 Lisp 型汽車那裡借鑒了大量的東西,卻連一點兒應得的贊揚都不給它。它能通過方程計算出到達目的地最高效的路徑,只不過這要花上一大筆錢。
是輛設計給新手用的短途旅行車,通常都是開往那些 Mathmatica 型汽車常去的地方。在那些地方這車開起來非常舒服,不過只要你偏離了路線,哪怕只有一點點,它就會變得非常難以駕馭,以致於很多勢利的司機根本就不承認它是一輛車。
Ocaml 是輛非常性感的歐洲車。它不像 C 那麼快,但它從不出故障,所以結果你反而會花更短的時間到達目的地。不過因為這是法國,所有的控制裝置都不在它們平時該在的地方。
Perl 應該是輛挺酷的車,不過駕駛員手冊卻難以理解。另外,就算你能找到方法去駕駛一輛 Perl 型號的車,你也開不起來別人的 Perl 型汽車。
PHP 是輛熱狗車(Oscar Mayer Wienermobile),它非常古怪、又難以駕馭,但是所有人卻還是想開它。[來自 digg.com 網站的 CosmicJustice]
版本1:Prolog 是全自動的:你告訴它你的目的地是什麼樣子的,然後剩下的駕駛工作它就全搞定了。[Paul Graham附加的:]不過,大多數情況下,確認目的地所花的工夫,和你直接開過去也差不多了。
版本2:Prolog 這輛車上裝了一個獨特的試錯型 GPS 系統。在通往目的地的路上,它會一直往前開,如果走到死胡同了,它就調頭回來再試試別的路,如此不斷往復,一直到目的地為止。[我忘了是誰建議的這一條]
Python 是輛非常棒的給初學者用的車,就算沒有駕照也能開。除非你想開得超級快,或者想開去很危險的地方,否則你可能永遠都用不到別的車。
Ruby 這輛車是因為一次 Perl、Python 和 Smalltalk 三車相撞事故產生的。一個日本的機師找到了這些車的碎片然後拼成了一輛車,很多司機都覺得這比那三輛車加在一起還要好。不過也有些司機會發牢騷說 Ruby 型汽車的好多控制器都是重復的、甚至有三份,而這些重復的控制器在某些特別的情況下又稍有不同,這會讓這車開起來更麻煩。據傳說重新設計的工作已經在進行中了。
Smalltalk 是輛小型汽車,原本是設計給那些打算學駕駛的人用的,不過因為它設計得太棒了,即使那些有經驗的老司機都喜歡開它。它速度並沒有很快,不過你可以把它的任何一個零部件拿下來改造改造,讓它更符合你的期待。古怪的事情是,你其實並沒有真正地駕駛它,你只是發了條消息讓它去什麼地方,然後它要麼就開過去了,要麼就告訴你它不懂你在說啥。
版本1:匯編就只是個發動機。你得自己把車子造出來,還得在它跑的時候手動給它加油。不過只要你足夠小心,它就能像來自地獄的蝙蝠(a bat out of hell)一樣飛速前進。
版本2:匯編:你自己就是那輛車。
如果編程語言是種武器:
C 語言是 M1 式加蘭德步槍,很老但可靠。
C++是雙截棍,揮舞起來很強悍,很吸引人,但需要你多年的磨練來掌握,很多人希望改用別的武器。
Java 是 M240 通用彈夾式自動機槍,有時它的彈夾是圓的,但有時候不是,如果不是,當你開火時,會遇到 NullPointerException 問題,槍就會爆炸,你被炸死。
Scala 是 M240 通用機槍的變種,但它的使用手冊是用一種看不懂的方言寫的,很多人懷疑那隻是一些夢話。
JavaScript 是一把寶劍,但沒有劍柄。
Go 語言是一種自製的「if err != nil」發令槍,每一次發射後,你都必須要檢查它是否真的發射了。
Rust 語言是一種 3D 列印出的槍。將來也許真的能派上用場。
bash 是一個十分礙手的錘子,你掄起它時會發現所有東西看起來都像釘子,尤其是你的指頭。
Ruby 是一把外嵌紅寶石的寶刀,人們使用它通常是因為看起來很炫。
PHP 是水管子,你通常會把它的一段接到汽車的排氣管,另一端插進車窗里,然後你坐進車里,開動引擎。
Mathematica 是一種地球低軌道粒子大炮,它也許能夠干出很神奇的事情,但只有付得起費用的人才能使用它。
C#是一種強悍的激光大炮,架在一頭驢子上,如果從驢子上卸下來,它好像就發不出激光。
Prolog 語言是一種人工智慧武器,你告訴它要做什麼,它會照做不誤,但之後,它會弄幾個終結者出來,燒掉你的房子。
Lisp 語言是一把剃須刀,有很多款式。只有尋求刺激和危險的人才會使用它。
希望可以幫到您,謝謝!
2. 什麼叫磁芯大戰
磁芯大戰(core war or core wars)就是匯編程序間的大戰,程序在虛擬機中運行,並試圖破壞其他程序,生存到最後即為勝者。程序用一種特殊的匯編語言(RedCode)完成,運行於叫做MARS(Memory Array RedCode Simulator)的虛擬機中。
用於磁芯大戰的游戲有多種,例如有個叫爬行者的程序(Creeper),每一次執行都會自動生成一個副本,很快電腦中原有資料就會被這些爬行者侵蝕掉;「侏儒」(Dwarf)程序在記憶系統中行進,每到第五個「地址」(address)便把那裡所儲存的東西變為零,這會使原本的程序嚴重破壞;最奇特的就是一個叫「印普」(Imp)的戰爭程序了,它只有一行指令,那就是「MOV 0,1」,其中MOV是「Move」的簡寫,即移動的意思。它把身處的地址中所載的「0」寫(移)到下一個地址中,當「印普」展開行動之後,電腦中原有的每一行指令都被改為「MOV 0,1」,換句話說,熒光屏上留下一大堆「MOV 0,1」。
3. 計算機發展史
10日,計算機編程語言的先驅克里斯汀·尼蓋德死於心臟病,享年75歲。尼蓋德幫助網際網路奠下了基礎,為計算機業做出了巨大貢獻。據挪威媒體報道,尼蓋德11日在挪威首都奧斯陸逝世。
尼蓋德是奧斯陸大學的教授,因為發展了Simula編程語言,為MS-DOS和網際網路打下了基礎而享譽國際。克里斯汀·尼蓋德於1926年在奧斯陸出生,1956年畢業於奧斯陸大學並取得數學碩士學位,此後致力於計算機計算與編程研究。
1961年~1967年,尼蓋德在挪威計算機中心工作,參與開發了面向對象的編程語言。因為表現出色,2001年,尼蓋德和同事奧爾·約安·達爾獲得了2001年A.M.圖靈機獎及其它多個獎項。當時為尼蓋德頒獎的計算機協會認為他們的工作為Java,C++等編程語言在個人電腦和家庭娛樂裝置的廣泛應用掃清了道路,「他們的工作使軟體系統的設計和編程發生了基本改變,可循環使用的、可靠的、可升級的軟體也因此得以面世
世紀發現·從圖靈機到馮·諾依曼機
英國科學家艾倫·圖靈1937年發表著名的《論應用於解決問題的可計算數字》一文。文中提出思考原理計算機——圖靈機的概念,推進了計算機理論的發展。1945年圖靈到英國國家物理研究所工作,並開始設計自動計算機。1950年,圖靈發表題為《計算機能思考嗎?》的論文,設計了著名的圖靈測驗,通過問答來測試計算機是否具有同人類相等的智力。
圖靈提出了一種抽象計算模型,用來精確定義可計算函數。圖靈機由一個控制器、一條可無限伸延的帶子和一個在帶子上左右移動的讀寫頭組成。這個在概念上如此簡單的機器,理論上卻可以計算任何直觀可計算的函數。圖靈機作為計算機的理論模型,在有關計算機和計算復雜性的研究方面得到廣泛應用。
計算機是人類製造出來的信息加工工具。如果說人類製造的其他工具是人類雙手的延伸,那麼計算機作為代替人腦進行信息加工的工具,則可以說是人類大腦的延伸。最初真正製造出來的計算機是用來解決數值計算問題的。二次大戰後期,當時為軍事目的進行的一系列破譯密碼和彈道計算工作,越來越復雜。大量的數據、復雜的計算公式,即使使用電動機械計算器也要耗費相當的人力和時間。在這種背景下,人們開始研製電子計算機。
世界上第一台計算機「科洛薩斯」誕生於英國,「科洛薩斯」計算機是1943年3月開始研製的,當時研製「科洛薩斯」計算機的主要目的是破譯經德國「洛倫茨」加密機加密過的密碼。使用其他手段破譯這種密碼需要6至8個星期,而使用『科洛薩斯』計算機則僅需6至8小時。1944年1月10日,「科洛薩斯」計算機開始運行。自它投入使用後,德軍大量高級軍事機密很快被破譯,盟軍如虎添翼。「科洛薩斯」比美國的ENIAC計算機問世早兩年多,在二戰期間破譯了大量德軍機密,戰爭結束後,它被秘密銷毀了,故不為人所了解。
盡管第一台電子計算機誕生於英國,但英國沒有抓住由計算機引發的技術和產業革命的機遇。相比之下,美國抓住了這一歷史機遇,鼓勵發展計算機技術和產業,從而崛起了一大批計算機產業巨頭,大大促進了美國綜合國力的發展。1944年美國國防部門組織了有莫奇利和埃克脫領導的ENIAC計算機的研究小組,當時在普林斯頓大學工作的現代計算機的奠基者美籍匈牙利數學家馮·諾依曼也參加了者像研究工作。1946年研究工作獲得成功,製成了世界上第一台電子數字計算機ENIAC。這台用18000隻電子管組成的計算機,盡管體積龐大,耗電量驚人,功能有限,但是確實起了節約人力節省時間的作用,而且開辟了一個計算機科學技術的新紀元。這也許連製造它的科學家們也是始料不及的。
最早的計算機盡管功能有限,和現代計算機有很大的差別,但是它已具備了現代計算機的基本部分,那就是運算器、控制器和存儲器。
運算器就象算盤,用來進行數值運算和邏輯運算,並獲得計算結果。而控制器就象機算機的司令部,指揮著計算機各個部分的工作,它的指揮是靠發出一系列控制信號完成的。
計算機的程序、數據、以及在運算中產生的中間結果以及最後結果都要有個存儲的地方,這就是計算機的第三個部件——存儲器。
計算機是自動進行計算的,自動計算的根據就是存儲於計算機中的程序。現代的計算機都是存儲程序計算機,又叫馮·諾依曼機,這是因為存儲程序的概念是馮·諾依曼提出的。人們按照要解決的問題的數學描述,用計算機能接受的「語言」編製成程序,輸入並存儲於計算機,計算機就能按人的意圖,自動地高速地完成運算並輸出結果。程序要為計算機提供要運算的數據、運算的順序、進行何種運算等等。
微電子技術的產生使計算機的發展又有了新的機遇,它使計算機小型化成為可能。微電子技術的發展可以追溯到晶體管的出現。1947年美國電報電話公司的貝爾實驗室的三位學家巴丁、不賴頓和肖克萊製成第一支晶體管,開始了以晶體管代替電子管的時代。
晶體管的出現可以說是集成電路出台的序幕。晶體管出現後,一些科學家發現,把電路元器件和連線像製造晶體管那樣做在一塊矽片上可實現電路的小型化。於是,晶體管製造工業經過10年的發展後,1958年出現了第一塊集成電路。
微電子技術的發展,集成電路的出現,首先引起了計算機技術的巨大變革。現代計算機多把運算器和控制器做在一起,叫微處理器,由於計算機的心臟——微處理器(計算機晶元)的集成化,使微型計算機應運爾生,並在70-80年代間得到迅速發展,特別是IBM PC個人計算機出現以後,打開了計算機普及的大門,促進了計算機在各行各業的應用,五六十年代,價格昂貴、體積龐大、耗電量驚人的計算機,只能在少數大型軍事或科研設施中應用,今天由於採用了大規模集成電路,計算機已經進入普通的辦公室和家庭。
標志集成電路水平的指標之一是集成度,即在一定尺寸的晶元上能做出多少個晶體管,從集成電路出現到今天,僅40餘年,發展的速度卻是驚人的,晶元越做越小,這對生產、生活的影響也是深遠的。ENIAC計算機佔地150平方米,重達30噸,耗電量幾百瓦,其所完成的計算,今天高級一點的袖珍計算器皆可完成。這就是微電子技術和集成電路所創造的奇跡。
現狀與前景
美國科學家最近指出,經過30多年的發展,計算機晶元的微型化已接近極限。計算機技術的進一步發展只能寄希望於全新的技術,如新材料、新的晶體管設計方法和分子層次的計算技術。
過去30多年來,半導體工業的發展基本上遵循穆爾法則,即安裝在硅晶元上的晶體管數目每隔18個月就翻一番。晶元體積越來越小,包含的晶體管數目越來越多,蝕刻線寬越來越小;計算機的性能也因而越來越高,同時價格越來越低。但有人提出,這種發展趨勢最多隻能再持續10到15年的時間。
美國最大的晶元生產廠商英特爾公司的科學家保羅·A·帕坎最近在美國《科學》雜志上撰文說,穆爾法則(1965年提出的預測半導體能力將以幾何速度增長的法則)也許在未來10年裡就會遇到不可逾越的障礙:晶元的微型化已接近極限。人們尚未找到超越該極限的方法,一些科學家將其稱之為「半導體產業面臨的最大挑戰」。
目前最先進的超大規模集成電路晶元製造技術所能達到的最小線寬約為0.18微米,即一根頭發的5%那樣寬。晶體管里的絕緣層只有4到5個原子那樣厚。日本將於2000年初開始批量生產線寬只有0. 13微米的晶元。預計這種晶元將在未來兩年得到廣泛應用。下一步是推出線寬0. 1微米的的晶元。帕坎說,在這樣小的尺寸上,晶體管只能由不到100個原子構成。
晶元線寬小到一定程度後,線路與線路之間就會因靠得太近而容易互相干擾。而如果通過線路的電流微弱到只有幾十個甚至幾個電子,信號的背景雜訊將大到不可忍受。尺寸進一步縮小,量子效應就會起作用,使傳統的計算機理論完全失效。在這種情況下,科學家必須使用全新的材料、設計方法乃至運算理論,使半導體業和計算機業突破傳統理論的極限,另闢蹊徑尋求出路。
當前計算機發展的主流是什麼呢?國內外比較一致的看法是
RISC
RISC是精簡指令系統計算機(Reced Instruction Set Computer)的英文縮寫。所謂指令系統計算機所能執行的操作命令的集合。程序最終要變成指令的序列,計算機能執行。計算機都有自己的指令系統,對於本機指令系統的指令,計算機能識別並執行,識別就是進行解碼——把代表操作的二進制碼變成操作所對應的控制信號,從而進行指令要求的操作。一般講,計算機的指令系統約豐富,它的功能也約強。RISC系統將指令系統精簡,使系統簡單,目的在於減少指令的執行時間,提高計算機的處理速度。傳統的計算機一般都是每次取一條指令,而RISC系統採用多發射結構,在同一時間發射多條指令,當然這必須增加晶元上的執行部件。
並行處理技術
並行處理技術也是提高計算機處理速度的重要方向,傳統的計算機,一般只有一個中央處理器,中央處理器中執行的也只是一個程序,程序的執行是一條接一條地順序進行,通過處理器反映程序的數據也是一個接一個的一串,所以叫串列執行指令。並行處理技術可在同一時間內多個處理器中執行多個相關的或獨立的程序。目前並行處理系統分兩種:一種具有4個、8個甚至32個處理器集合在一起的並行處理系統,或稱多處理機系統;另一種是將100個以上的處理器集合在一起,組成大規模處理系統。這兩種系統不僅是處理器數量多少之分,其內部互連方式、存儲器連接方式、操作系統支持以及應用領域都有很大的不同。
曾經有一段時間,超級計算機是利用與普通計算機不同的材料製造的。最早的克雷1號計算機是利用安裝在鍍銅的液冷式電路板上的奇形怪狀的晶元、通過手工方式製造的。而克雷2號計算機看起來更加奇怪,它在一個盛有液態碳氟化合物的浴器中翻騰著氣泡———採用的是「人造血液」冷卻。並行計算技術改變了所有這一切。現在,世界上速度最快的計算機是美國的「Asci Red」, 這台計算機的運算速度為每秒鍾2·1萬億次,它就是利用與個人計算機和工作站相同的元件製造的,只不過超級計算機採用的元件較多而已,內部配置了9000塊標准奔騰晶元。鑒於目前的技術潮流,有一點是千真萬確的,那就是超級計算機與其它計算機的差別正在開始模糊。
至少在近期,這一趨勢很明顯將會繼續下去。那麼,哪些即將到來的技術有可能會擾亂計算技術的格局,從而引發下一次超級計算技術革命呢?
這樣的技術至少有三種:光子計算機、生物計算機和量子計算機。它們能夠成為現實的可能性都很小,但是由於它們具有引發革命的潛力,因此是值得進行研究的。
光子計算機
光子計算機可能是這三種新技術中最接近傳統的一種。幾十年來,這種技術已經得到了有限的應用,尤其是在軍用信號處理方面。
在光子計算技術中,光能夠像電一樣傳送信息,甚至傳送效果更好,,光束在把信息從一地傳送至另一地的效果要優於電,這也就是電話公司利用光纜進行遠距離通信的緣故。光對通信十分有用的原因,在於它不會與周圍環境發生相互影響,這是它與電不同的一點。兩束光線可以神不知鬼不覺地互相穿透。光在長距離內傳輸要比電子信號快約100倍,光器件的能耗非常低。預計,光子計算機的運算速度可能比今天的超級計算機快1000到10000倍。
令人遺憾的是,正是這種極端的獨立性使得人們難以製造出一種全光子計算機,因為計算處理需要利用相互之間的影響。要想製造真正的光子計算機,就必須開發出光學晶體管,這樣就可以用一條光束來開關另一條光束了。這樣的裝置已經存在,但是要製造具有適合的性能特徵的光學晶體管,還需要仰仗材料科學領域的重大突破。
生物計算機
與光子計算技術相比,大規模生物計算技術實現起來更為困難,不過其潛力也更大。不妨設想一種大小像柚子,能夠進行實時圖像處理、語音識別及邏輯推理的超級計算機。這樣的計算機已經存在:它們就是人腦。自本世紀70年代以來,人們開始研究生物計算機(也叫分子計算機),隨著生物技術的穩步發展,我們將開始了解並操縱製造大腦的基因學機制。
生物計算機將具有比電子計算機和光學計算機更優異的性能。如果技術進步繼續保持目前的速度,可以想像在一二十年之後,超級計算機將大量涌現。這聽起來也許像科幻小說,但是實際上已經出現了這方面的實驗。例如,矽片上長出排列特殊的神經元的「生物晶元」已被生產出來。
在另外一些實驗室里,研究人員已經利用有關的數據對DNA的單鏈進行了編碼,從而使這些單鏈能夠在燒瓶中實施運算。這些生物計算實驗離實用還很遙遠,然而1958年時我們對集成電路的看法也不過如此。
量子計算機
量子力學是第三種有潛力創造超級計算革命的技術。這一概念比光子計算或生物計算的概念出現得晚,但是卻具有更大的革命潛力。由於量子計算機利用了量子力學違反直覺的法則,它們的潛在運算速度將大大快於電子計算機。事實上,它們速度的提高差不多是沒有止境的。一台具有5000個左右量子位的量子計算機可以在大約3 0秒內解決傳統超級計算機需要100億年才能解決的素數問題。
眼下恰好有一項重要的用途適合這種貌似深奧的作業。通過對代表數據的代碼進行加密,計算機數據得到保護。而解密的數學「鑰匙」是以十分巨大的數字——一般長達250位——及其素數因子的形式出現的。這樣的加密被認為是無法破譯的,因為沒有一台傳統計算機能夠在適當的時間里計算出如此巨大數字的素數因子。但是,至少在理論上,量子計算機可以輕易地處理這些素數加密方案。因此,量子計算機黑客將不僅能夠輕而易舉地獲得常常出沒於各種計算機網路(包括網際網路)中的信用卡號碼及其他個人信息,而且能夠輕易獲取政府及軍方機密。這也正是某些奉行「寧為人先、莫落人後」這一原則的政府機構一直在投入巨資進行量子計算機研究的原因。
量子超級網路引擎
量子計算機將不大可能破壞網際網路的完整性,不僅如此,它們到頭來還可能給網際網路帶來巨大的好處。兩年前,貝爾實驗室的研究人員洛夫·格羅弗發現了用量子計算機處理我們許多人的一種日常事務的方法———搜尋隱藏在浩如煙海的龐大資料庫內的某項信息。尋找資料庫中的信息就像是在公文包里找東西一樣。如果各不相同的量子位狀態組合分別檢索資料庫不同的部分,那麼其中的一種狀態組合將會遭遇到所需查找的信息。
由於某些技術的限制,量子搜索所能帶來的速度提高並沒有預計的那麼大,例如,如果要在1億個地址中搜索某個地址,傳統計算機需要進行大約5000萬次嘗試才能找到該地址;而量子計算機則需大約1萬次嘗試,不過這已經是很大的改善了,如果資料庫增大的話,改善將會更大。此外,資料庫搜索是一種十分基礎的計算機任務,任何的改善都很可能對大批的應用產生影響。
迄今為止,很少有研究人員願意預言量子計算機是否將會得到更為廣泛的應用。盡管如此,總的趨勢一直是喜人的。盡管許多物理學家————如果不是全部的話———一開始曾認為量子力學撲朔迷離的本性必定會消除實用量子計算技術面臨的難以捉摸而又根深蒂固的障礙,但已經進行的深刻而廣泛的理論研究卻尚未能造就一台實實在在的機器。
那麼,量子計算機的研究熱潮到底意味著什麼?計算技術的歷史表明,總是先有硬體和軟體的突破,然後才出現需要由它們解決的問題。或許,到我們需要檢索那些用普通計算機耗時數月才能查完的龐大數據庫時,量子計算機才將會真正開始投入運行。研究將能取代電子計算機的技術並非易事。畢竟,採用標准微處理器技術的並行計算機每隔幾年都會有長足的進步。因此,任何要想取代它的技術必須極其出色。不過,計算技術領域的進步始終是十分迅速的,並且充滿了意想不到的事情。對未來的預測從來都是靠不住的,事後看來,那些斷言「此事不可行」的說法,才是最最愚蠢的。
除了超級計算機外,未來計算機還會在哪些方面進行發展呢?
多媒體技術
多媒體技術是進一步拓寬計算機應用領域的新興技術。它是把文字、數據、圖形、圖像和聲音等信息媒體作為一個集成體有計算機來處理,把計算機帶入了一個聲、文、圖集成的應用領域。多媒體必須要有顯示器、鍵盤、滑鼠、操縱桿、視頻錄象帶/盤、攝象機、輸入/輸出、電訊傳送等多種外部設備。多媒體系統把計算機、家用電器、通信設備組成一個整體由計算機統一控制和管理。多媒體系統將對人類社會產生巨大的影響。
網路
當前的計算機系統多是連成網路的計算機系統。所謂網路,是指在地理上分散布置的多台獨立計算機通過通信線路互連構成的系統。根據聯網區域的大小,計算機網路可分成居域網和遠程網。小至一個工廠的各個車間和辦公室,大到跨洲隔洋都可構成計算機網。網際網路將發展成為人類社會中一股看不見的強大力量--它悄無聲息地向人們傳遞各種信息,以最快、最先進的手段方便人類的工作和生活。現在的網際網路發展有將世界變成「地球村」的趨勢。
專家認為PC機不會馬上消失,而同時單功能或有限功能的終端設備(如手執電腦、智能電話)將挑戰PC機作為計算機革新動力的地位。把網際網路的接入和電子郵件的功能與有限的計算功能結合起來的「置頂式」計算機如網路電視將會很快流行開來。單功能的終端最終會變得更易應用
智能化計算機
我們對大腦的認識還很膚淺,但是使計算機智能化的工作絕不能等到人們對大腦有足夠認識以後才開始。使計算機更聰明,從開始就是人們不斷追求的目標。目前用計算機進行的輔助設計、翻譯、檢索、繪圖、寫作、下棋、機械作業等方面的發展,已經向計算機的智能化邁進了一步。隨著計算機性能的不斷提高,人工智慧技術在徘徊了50年之後終於找到了露臉的機會,世界頭號國際象棋大師卡斯帕羅夫向「深藍」的俯首稱臣,讓人腦第一次嘗到了在電腦面前失敗的滋味。人類從來沒有像今天這樣深感憂懼,也從來沒有像今天這樣強烈地感受到認識自身的需要。
目前的計算機,多數是馮·諾依曼型計算機,它在認字、識圖、聽話及形象思維方面的功能特別差。為了使計算機更加人工智慧化,科學家開始使計算機模擬人類大腦的功能,近年來,各先進國家注意開展人工神經網路的研究,向計算機的智能化邁出了重要的一步。
人工神經網路的特點和優越性,主要表現在三個方面:具有自學功能。六如實現圖象識別時,只要線把許多不同的圖象樣板和對應的應識別的結果輸入人工神經網路,網路就會通過自學功能,漫漫學會識別類似的圖像。自學功能對於預測有特別重要的意義。預期未來的人工神經網路計算機將為人類提供同經濟預測、市場預測、效益預測、其前途是很遠大的。
具有聯想儲存功能。人的大腦是具有兩廂功能的。如果有人和你提起你幼年的同學張某某。,你就會聯想起張某某的許多事情。用人工神經網路的反饋網路就可以實現這種聯想。
具有高速尋找優化解的能力。尋找一個復雜問題的優化解,往往需要很大的計算量,利用一個針對某問題而設計的反饋人工神經網路,發揮計算機的高速運算能力,可能很快找到優化解。
人工神經網路是未來為電子技術應用的新流域。智能計算機的構成,可能就是作為主機的馮·諾依曼機與作為智能外圍的人工神經網路的結合。
人們普遍認為智能計算機將像穆爾定律(1965年提出的預測半導體能力將以幾何速度增長的定律)的應驗那樣必然出現。提出這一定律的英特爾公司名譽董事長戈登·穆爾本人也同意這一看法,他認為:「硅智能將發展到很難將計算機和人區分開來的程度。」但是計算機智能不會到此為止。許多科學家斷言,機器的智慧會迅速超過阿爾伯特·愛因斯坦和霍金的智慧之和。霍金認為,就像人類可以憑借其高超的搗弄數字的能力來設計計算機一樣,智能機器將創造出性能更好的計算機。最遲到下個世紀中葉(而且很可能還要快得多),計算機的智能也許就會超出人類的理解能力。
世紀發現·從圖靈機到馮·諾依曼機
英國科學家艾倫·圖靈1937年發表著名的《論應用於解決問題的可計算數字》一文。文中提出思考原理計算機——圖靈機的概念,推進了計算機理論的發展。1945年圖靈到英國國家物理研究所工作,並開始設計自動計算機。1950年,圖靈發表題為《計算機能思考嗎?》的論文,設計了著名的圖靈測驗,通過問答來測試計算機是否具有同人類相等的智力。
圖靈提出了一種抽象計算模型,用來精確定義可計算函數。圖靈機由一個控制器、一條可無限伸延的帶子和一個在帶子上左右移動的讀寫頭組成。這個在概念上如此簡單的機器,理論上卻可以計算任何直觀可計算的函數。圖靈機作為計算機的理論模型,在有關計算機和計算復雜性的研究方面得到廣泛應用。
計算機是人類製造出來的信息加工工具。如果說人類製造的其他工具是人類雙手的延伸,那麼計算機作為代替人腦進行信息加工的工具,則可以說是人類大腦的延伸。最初真正製造出來的計算機是用來解決數值計算問題的。二次大戰後期,當時為軍事目的進行的一系列破譯密碼和彈道計算工作,越來越復雜。大量的數據、復雜的計算公式,即使使用電動機械計算器也要耗費相當的人力和時間。在這種背景下,人們開始研製電子計算機。
世界上第一台計算機「科洛薩斯」誕生於英國,「科洛薩斯」計算機是1943年3月開始研製的,當時研製「科洛薩斯」計算機的主要目的是破譯經德國「洛倫茨」加密機加密過的密碼。使用其他手段破譯這種密碼需要6至8個星期,而使用『科洛薩斯』計算機則僅需6至8小時。1944年1月10日,「科洛薩斯」計算機開始運行。自它投入使用後,德軍大量高級軍事機密很快被破譯,盟軍如虎添翼。「科洛薩斯」比美國的ENIAC計算機問世早兩年多,在二戰期間破譯了大量德軍機密,戰爭結束後,它被秘密銷毀了,故不為人所了解。
盡管第一台電子計算機誕生於英國,但英國沒有抓住由計算機引發的技術和產業革命的機遇。相比之下,美國抓住了這一歷史機遇,鼓勵發展計算機技術和產業,從而崛起了一大批計算機產業巨頭,大大促進了美國綜合國力的發展。1944年美國國防部門組織了有莫奇利和埃克脫領導的ENIAC計算機的研究小組,當時在普林斯頓大學工作的現代計算機的奠基者美籍匈牙利數學家馮·諾依曼也參加了者像研究工作。1946年研究工作獲得成功,製成了世界上第一台電子數字計算機ENIAC。這台用18000隻電子管組成的計算機,盡管體積龐大,耗電量驚人,功能有限,但是確實起了節約人力節省時間的作用,而且開辟了一個計算機科學技術的新紀元。這也許連製造它的科學家們也是始料不及的。
最早的計算機盡管功能有限,和現代計算機有很大的差別,但是它已具備了現代計算機的基本部分,那就是運算器、控制器和存儲器。
運算器就象算盤,用來進行數值運算和邏輯運算,並獲得計算結果。而控制器就象機算機的司令部,指揮著計算機各個部分的工作,它的指揮是靠發出一系列控制信號完成的。
計算機的程序、數據、以及在運算中產生的中間結果以及最後結果都要有個存儲的地方,這就是計算機的第三個部件——存儲器。
計算機是自動進行計算的,自動計算的根據就是存儲於計算機中的程序。現代的計算機都是存儲程序計算機,又叫馮·諾依曼機,這是因為存儲程序的概念是馮·諾依曼提出的。人們按照要解決的問題的數學描述,用計算機能接受的「語言」編製成程序,輸入並存儲於計算機,計算機就能按人的意圖,自動地高速地完成運算並輸出結果。程序要為計算機提供要運算的數據、運算的順序、進行何種運算等等。
微電子技術的產生使計算機的發展又有了新的機遇,它使計算機小型化成為可能。微電子技術的發展可以追溯到晶體管的出現。1947年美國電報電話公司的貝爾實驗室的三位學家巴丁、不賴頓和肖克萊製成第一支晶體管,開始了以晶體管代替電子管的時代。
晶體管的出現可以說是集成電路出台的序幕。晶體管出現後,一些科學家發現,把電路元器件和連線像製造晶體管那樣做在一塊矽片上可實現電路的小型化。於是,晶體管製造工業經過10年的發展後,1958年出現了第一塊集成電路。
微電子技術的發展,集成電路的出現,首先引起了計算機技術的巨大變革。現代計算機多把運算器和控制器做在一起,叫微處理器,由於計算機的心臟——微處理器(計算機晶元)的集成化,使微型計算機應運爾生,並在70-80年代間得到迅速發展,特別是IBM PC個人計算機出現以後,打開了計算機普及的大門,促進了計算機在各行各業的應用,五六十年代,價格昂貴、體積龐大、耗電量驚人的計算機,只能在少數大型軍事或科研設施中應用,今天由於採用了大規模集成電路,計算機已經進入普通的辦公室和家庭。
標志集成電路水平的指標之一是集成度,即在一定尺寸的晶元上能做出多少個晶體管,從集成電路出現到今天,僅40餘年,發展的速度卻是驚人的,晶元越做越小,這對生產、生活的影響也是深遠的。ENIAC計算機佔地150平方米,重達30噸,耗電量幾百瓦,其所完成的計算,今天高級一點的袖珍計算器皆可完成。這就是微電子技術和集成電路所創造的奇跡。