電子計算機檢視原始碼討論檢視歷史
電子計算機 Computer 亦稱電腦,是利用數字電子技術,根據一系列指令指示並且自動執行任意算術或邏輯操作序列的設備。通用計算機因有能遵循被稱為「程序」的一般操作集的能力而使得它們能夠執行極其廣泛的任務。
原理
儘管計算機技術自20世紀40年代第一部電子通用計算機誕生以來以來有了令人目眩的快速發展,但是今天計算機仍然基本上採用的是存儲程序結構,即馮•諾伊曼結構[1]。這個結構實現了實用化的通用計算機。
存儲程序結構將一部計算機描述成四個主要部分:算術邏輯單元、控制電路、存儲器及輸入輸出設備。這些部件通過一組一組的排線連接(特別地,當一組線被用於多種不同意圖的數據傳輸時又被稱為總線),並且由一個時鐘來驅動(當然某些其他事件也可能驅動控制電路)。
輸入輸出設備
輸入輸出設備(I/O)是對將外部世界信息發送給計算機的設備和將處理結果返回給外部世界的設備的總稱。這些返回結果可能是作為使用者能夠視覺上體驗的,或是作為該計算機所控制的其他設備的輸入:對於一部機器人,控制計算機的輸出基本上就是這部機器人本身,如做出各種行為。
第一代計算機的輸入輸出設備種類非常有限。通常的輸入用設備是打孔卡片的讀卡機,用來將指令和數據導入內存;而用於存儲結果的輸出設備則一般是磁帶。隨着科技的進步,輸入輸出設備的豐富性得到提高。以個人計算機為例:鍵盤和鼠標是用戶向計算機直接輸入信息的主要工具,而顯示器、打印機、擴音器、耳機則返回處理結果。此外還有許多輸入設備可以接受其他不同種類的信息,如數碼相機可以輸入圖像。在輸入輸出設備中,有兩類很值得注意:第一類是二級存儲設備,如硬盤,光碟或其他速度緩慢但擁有很高容量的設備。第二個是計算機網絡訪問設備,通過他們而實現的計算機間直接數據傳送極大地提升了計算機的價值。今天,國際互聯網成就了數以千萬計的計算機彼此間傳送各種類型的數據。
程序
簡單說,計算機程序就是計算機執行指令的一個序列。它既可以只是幾條執行某個簡單任務的指令,也可能是可能要操作巨大數據量的複雜指令隊列。許多計算機程序包含有百萬計的指令,而 其中很多指令可能被反覆執行。在2005年,一部典型的個人電腦可以每秒執行大約30億條指令。計算機通常並不會執行一些很複雜的指令來獲得額外的機能,更多地它們是在按照程序員的排列來運行那些較簡單但為數眾多的短指令。
一般情況下,程序員們是不會直接用機器語言來為計算機寫入指令的。那麼做的結果只能是費時費力、效率低下而且漏洞百出。
所以,程序員一般通過「高級」一些的語言來寫程序,然後再由某些特別的計算機程序,如解釋器或編譯器將之翻譯成機器語言。
一些編程語言看起來很接近機器語言,如匯編程序,被認為是低級語言。而另一些語言,如即如抽象原則的Prolog,則完全無視計算機實際運行的操作細節,可謂是高級語言。對於一項特定任務,應該根據其事務特點,程序員技能,可用工具和客戶需求來選擇相應的語言,其中又以客戶需求最為重要(美國和中國軍隊的工程項目通常被要求使用Ada語言)。
計算機軟件是與計算機程序並不相等的另一個詞彙。計算機軟件一個較為包容性較強的技術術語,它包含了用於完成任務的各種程序以及所有相關材料。舉例說,一個視頻遊戲不但只包含程序本身,也包括圖片、聲音以及其他創造虛擬遊戲環境的數據內容。在零售市場,在一部計算機上的某個應用程序只是一個面向大量用戶的軟件的一個副本。這裡老生常談的例子當然還是微軟的office軟件組,它包括一系列互相關聯的、面向一般辦公需求的程序。
利用那些極其簡單的機器語言指令來實現無數功能強大的應用軟件意味着其編程規模註定不小。Windows XP這個操作系統程序包含的C++高級語言源代碼達到了4000萬行。當然這還不是最大的。如此龐大的軟件規模也顯示了管理在開發過程中的重要性。實際編程時,程序會被細分到每一個程序員都可以在一個可接受的時長內完成的規模。
即便如此,軟件開發的過程仍然進程緩慢,不可預見且遺漏多多。應運而生的軟件工程學就重點面向如何加快作業進度和提高效率與質量。
函數庫與操作系統
在計算機誕生後不久,人們發現某些特定作業在許多不同的程序中都要被實施,比如說計算某些標準數學函數。出於效率考量,這些程序的標準版本就被收集到一個「庫」中以供各程序調用。許多任務經常要去額外處理種類繁多的輸入輸出接口,這時,用於連接的庫就能派上用場。
20世紀60年代,隨着計算機工業化普及,計算機越來越多地被用作一個組織內不同作業的處理。很快,能夠自動安排作業時續和執行的特殊軟件出現了。這些既控制硬件又負責作業時序安排的軟件被稱為「操作系統」。一個早期操作系統的例子是IBM的OS/360。
在不斷地完善中,操作系統又引入了時間共享機制——並發。這使得多個不同用戶可以「同時」地使用機器執行他們自己的程序,看起來就像是每個人都有一部自己的計算機。為此,操作系統需要向每個用戶提供一部「虛擬機」來分離各個不同的程序。由於需要操作系統控制的設備也在不斷增加,其中之一便是硬盤。因之,操作系統又引入了文件管理和目錄管理(文件夾),大大簡化了這類永久儲存性設備的應用。此外,操作系統也負責安全控制,確保用戶只能訪問那些已獲得允許的文件。
當然,到目前為止操作系統發展歷程中最後一個重要步驟就是為程序提供標準圖形用戶界面。儘管沒有什麼技術原因表明操作系統必須得提供這些界面,但操作系統供應商們總是希望並鼓勵那些運行在其系統上的軟件能夠在外觀和行為特徵上與操作系統保持一致或相似。
除了以上這些核心功能,操作系統還封裝了一系列其他常用工具。其中一些雖然對計算機管理並無重大意義,但是於用戶而言很是有用。比如,蘋果公司的Mac OS X就包含視頻剪輯應用程序。
一些用於更小規模的計算機的操作系統可能沒用如此眾多的功能。早期的微型計算機由於記憶體和處理能力有限而不會提供額外功能,而嵌入式計算機則使用特定化了的操作系統或者乾脆沒有,它們往往通過應用程序直接代理操作系統的某些功能。
應用
起初,體積龐大而價格昂貴的數字計算機主要是用做執行科學計算,特別是軍用課題。如ENIAC最早就是被用作火炮彈計算和設計氫彈時計算斷面中子密度的(如今許多超級計算機仍然在模擬核試驗方面發揮着巨大作用)。澳大利亞設計的首部存儲程序計算機CSIR Mk I型負責對水電工程中的集水地帶的降雨情形進行評估。還有一些被用於解密,比如英國的「巨像」可編程計算機。除去這些早年的科學或軍工應用,計算機在其他領域的推廣亦十分迅速。
從一開始,存儲程序計算機就與商業問題的解決息息相關。早在IBM的第一部商用計算機誕生之前, 英國J. Lyons等就設計製造了LEO以進行資產管理或迎合其他商業用途。由於持續的體積與成本控制,計算機開始向更小型的組織內普及。加之20世紀70年代微處理器的發明,廉價計算機成為了現實[2]。80年代,個人計算機全面流行,電子文檔寫作與印刷,計算預算和其他重複性的報表作業越來越多地開始依賴計算機。
隨着計算機便宜起來,創作性的藝術工作也開始使用它們。人們利用合成器,計算機圖形和動畫來創作和修改聲音,圖像,視頻。視頻遊戲的產業化也說明了計算機在娛樂方面也開創了新的歷史。
計算機小型化以來,機械設備的控制也開始仰仗計算機的支持。其實,正是當年為了建造足夠小的嵌入式計算機來控制阿波羅1號才刺激了集成電路技術的躍進。今天想要找一部不被計算機控制的有源機械設備要比找一部哪怕是部分計算機控制的設備要難得多。可能最著名的計算機控制設備要非機器人莫屬,這些機器有着或多或少人類的外表和並具備人類行為的某一子集。在批量生產中,工業機器人已是尋常之物。不過,完全的擬人機器人還只是停留在科幻小說或實驗室之中。
機器人技術實質上是人工智能(AI人工智慧)領域中的物理表達環節。所謂人工智能(AI人工智慧)是一個定義模糊的概念但是可以肯定的是這門學科試圖令計算機擁有目前它們還沒有但作為人類卻固有的能力。數年以來,不斷有許多新方法被開發出來以允許計算機做那些之前被認為只有人才能做的事情。比如讀書、下棋。然而,到目前為止,在研製具有人類的一般「整體性」智能的計算機方面,進展仍十分緩慢。
網絡、國際互聯網
20世紀50年代以來計算機開始用作協調來自不同地方之信息的工具,美國軍方的賢者系統(SAGE)就是這方面第一個大規模系統。之後「軍刀」等一系列特殊用途的商業系統也不斷湧現出來。
70年代後,美國各大院校的計算機工程師開始使用電信技術把他們的計算機連接起來。由於這方面的工作得到了ARPA的贊助,其計算機網絡也就被稱為ARPANET。此後,用於ARPA網的技術快速擴散和進化,這個網絡也衝破大學和軍隊的範圍最終形成了今天的國際互聯網。網絡的出現導致了對計算機屬性和邊界的再定義。太陽微系統公司的John Gage和Bill Joy就指出:「網絡即是計算機」。計算機操作系統和應用程序紛紛向能訪問諸如網內其它計算機等網絡資源的方向發展。最初這些網絡設備僅限於為高端科學工作者所使用,但90年代後隨着電子郵件和萬維網技術的擴散,以及以太網和ADSL等網絡連接技術的廉價化,互聯網絡已變得無所不在。今日入網的計算機總數,何止以千萬計;無線互聯技術的普及,使得互聯網在移動計算環境中亦如影隨形。比如在筆記本計算機上廣泛使用的Wi-Fi技術就是無線上網的代表性應用。
90年代之後,在電話數據機MODEM 技術成熟後,由窄頻的電話撥接,升級成為寬頻數據,這代表網路新時代來臨,由慢跑的速度改變而成開車的速度,也同時改變電腦使用者習慣,更大大普及網路連絡傳訊的方式,如即時通或SKYPE等等,以往只能文字傳訊提升至影音傳輸;而雲端、大數據時代造就了各種新型態行業,如網路商店、網路電商、網路拍賣、網路銷售、網路遊戲、網路設計及架設,以及越來越普遍性的雲端數據資料庫或備份庫,正在時時優化及改變現有人類的生活。
下一代計算機
自問世以來數字計算機在速度和能力上有了可觀的提升,迄今仍有不少課題顯得超出了當前計算機的能力所及。 對於其中一部分課題,傳統計算機是無論如何也不可能實現的,因為找到一個解決方法的時間還趕不上問題規模的擴展速度。因此,科學家開始將目光轉向生物計算技術和量子理論來解決這一類問題。比如,人們計劃用生物性的處理來解決特定問題(DNA計算)。由於細胞分裂的指數級增長方式,DNA計算系統很有可能具備解決同等規模問題的能力。當然,這樣一個系統直接受限於可控制的DNA總量。
量子計算機,顧名思義,利用了量子物理世界的超常特性。一旦能夠造出量子計算機,那麼它在速度上的提升將令一般傳統計算機難以望其項背。
計算機學科
在當今世界,幾乎所有專業都與計算機息息相關。但是,只有某些特定職業和學科才會深入研究計算機本身的製造、編程和使用技術,用來詮釋計算機學科內不同研究領域的各個學術名詞的涵義不斷發生變化,同時新學科也層出不窮。
- 計算機工程:是電子工程的一個分支,主要研究計算機軟硬件和二者間的彼此聯繫。
- 計算機科學:是對計算機進行學術研究的傳統稱謂。主要研究計算技術和執行特定任務的高效算法。該門學科為我們解決確定一個問題在計算機領域內是否可解,如可解其效率如何,以及如何作成更加高效率的程序。時至今日,在計算機科學內已經衍生了許多分支,每一個分支都針對不同類別的問題進行深入研究。
- 軟件工程:着重於研究開發高質量軟件系統的方法學和實踐方式,並試圖壓縮並預測開發成本及開發周期。
- 信息系統:研究計算機在一個廣泛的有組織環境(商業為主)中的計算機應用。
許多學科都與其他學科相互交織。如地理信息系統專家就是利用計算機技術來管理地理信息。
全球有三個較大規模的致力於計算機科學的組織:英國電腦學會;美國計算機協會(ACM);美國電機電子工程師協會。
視頻
電子計算機 相關視頻
參考文獻
- ↑ 從馮•諾依曼結構看計算機科學的發展史,CSDN博客,2012-9-11
- ↑ 計算機的應用,新浪博客,2013-05-16