天天看點

《計算機科學導論》一1.3 計算機組成部分

本節書摘來華章計算機《計算機科學導論》一書中的第1章 ,第1.3節,[美]貝赫魯茲a. 佛羅贊(behrouz a. forouzan)著 劉藝劉哲雨等譯, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

我們可以認為計算機由三大部分組成:計算機硬體、資料和計算機軟體。

當今的計算機硬體基于馮·諾依曼模型,且包含四部分,盡管可以有不同類型的存儲單元,不同類型的輸入/輸出子系統等。在第5章我們将詳細讨論計算機硬體。

馮·諾依曼模型清楚地将一台計算機定義為一台資料處理機。它接收輸入資料,處理并輸出相應的結果。

1.存儲資料

馮·諾依曼模型并沒有定義資料如何存儲在計算機中。如果一台計算機是一台電子裝置,最好的資料存儲方式應該是電子信号,例如以電子信号的出現和消失的特定方式來存儲資料,這意味着一台計算機可以以兩種狀态之一的形式來存儲資料。

顯然,在日常使用的資料并不是以兩種狀态之一的形式存在,例如,我們在數字系統中使用的數字可以是0~9十種狀态中的任何一個。但是你不能(至少到目前為止)将這類資訊存儲到計算機内部,除非将這類資訊變換成另一種隻使用兩種狀态(0和1)的系統。同樣,你也需要處理其他類型的資料(例如文本、圖像、聲音、視訊),它們同樣也不能直接存儲到計算機中,除非将它們轉變成合适的形式(0和1序列)。

在第3章中,我們将會了解不同類型的資料是怎樣以0和1序列的二進制的形式存儲在計算機内部的。第4章将介紹在計算機内部由二進制組成的資料是怎樣被操作處理的。

2.組織資料

盡管資料隻能以一種形式(位模式)存儲在計算機内部,但在計算機外部卻可以表現為不同的形式。另外,計算機(以及資料處理表示法)開創了一門新興的研究領域—資料組織。在将資料存儲到計算機中之前,能否有效地将資料組織成不同的實體和格式?如今,資料并不是按照雜亂無章的次序來組織資訊的。資料被組織成許多小的單元,再由這些小的單元組成更大的單元,等等。在第11~14章中,我們将會從這個角度去認識資料。

圖靈或馮·諾依曼模型的主要特征是程式的概念。盡管早期的計算機并沒有在計算機的存儲器中存儲程式,但它們還是使用了程式的概念。程式設計在早期的計算機中展現為系列開關的打開或閉合以及配線的改變。程式設計在資料實際開始處理之前是由操作員或工程師完成的一項工作。

1.程式必須是存儲的

在馮·諾依曼模型中,這些程式被存儲在計算機的存儲器中,存儲器中不僅要存儲資料,還要存儲程式(見圖1-6)。

《計算機科學導論》一1.3 計算機組成部分

2.指令的序列

這個模型還要求程式必須是有序的指令集。每一條指令操作一個或者多個資料項。是以,一條指令可以改變它前面指令的作用。例如,圖1-7顯示了一個輸入兩個資料,将它們相加,最後列印出結果的程式。這段程式包含4個獨立的指令集。

《計算機科學導論》一1.3 計算機組成部分

也許我們會問為什麼程式必須由不同的指令集組成,答案是重用性。如今,計算機完成成千上萬的任務,如果每一項任務的程式都是相對獨立而且和其他程式之間沒有任何的公用段,程式設計将會變成一件很困難的事情。圖靈模型和馮·諾依曼模型通過仔細地定義計算機可以使用的不同指令集,進而使得程式設計變得相對簡單。程式員通過組合這些不同的指令來建立任意數量的程式。每個程式可以是不同指令的不同組合。

3.算法

要求程式包含一系列指令使得程式設計變得可能,但也帶來了另外一些使用計算機方面的問題。程式員不僅要了解每條指令所完成的任務,還要知道怎樣将這些指令結合起來完成一些特定的任務。對于一些不同的問題,程式員首先應該以循序漸進的方式來解決問題,接着盡量找到合适的指令(指令序列)來解決問題。這種按步驟解決問題的方法就是所謂的算法。算法在計算機科學中起到了重要的作用,我們将在第8章讨論。

4.語言

在計算機時代的早期,隻有一種稱為機器語言的計算機語言。程式員依靠寫指令的方式(使用位模式)來解決問題。但是随着程式越來越大,采用這種模式來編寫很長的程式變得單調乏味。計算機科學家們研究出利用符号來代表位模式,就像人們在日常中用符号(單詞)來代替一些常用的指令一樣。當然,人們在日常生活中所用的一些符号與計算機中所用的符号不同。這樣計算機語言的概念誕生了。自然語言(例如英語)是豐富的語言,并有許多正确組合單詞的規則;相對而言,計算機語言隻有比較有限的符号和單詞。第9章将介紹計算機語言。

5.軟體工程

在馮·諾依曼模型中沒有定義軟體工程,軟體工程是指結構化程式的設計和編寫。今天,它不僅僅是用來描述完成某一任務的應用程式,還包括程式設計中所要嚴格遵循的原理和規則。我們所讨論的這些原理和規則綜合起來就是第10章中要說的軟體工程。

6.作業系統

在計算機發展演變過程中,科學家們發現有一系列指令對所有程式來說是公用的。例如,一條告訴計算機在哪接收和發送資料的指令在幾乎所有的程式中都要用到。如果這些指令隻編寫一次就可以用于所有程式,那麼效率将會大大提高。這樣,就出現了作業系統的概念。計算機作業系統最初是為程式通路計算機部件提供友善的一種管理程式。今天,作業系統所完成的工作遠不止這些,具體的内容将在第7章介紹。

繼續閱讀