淺談計算機科學

官大智 教授

國立中山大學應用數學系

86.5.20

計算機科學是本系的發展重點之一。在大學部,我們設有計算機科學學程,提供一系列的相關課程,讓有興趣的同學選修;在研究所的碩士班和博士班都設有計算機科學組,招收有志從事計算機科學研究的同學。有許多新生對計算機科學很感興趣,但是以往接觸計算機科學的機會比較少,不是很清楚計算機科學是什麼。本文的目的就是要讓有興趣的同學更瞭解計算機科學。

計算機科學是一門新興,而且發展快速的學門,但要說清楚計算機科學是什麼還真不容易。美國 Association for Computing Machinery (ACM) 在 1989 年,也就是 ACM 成立 42 週年的時候,提出一份報告,並將這份報告節錄成 "Computing as a discipline" 一文刊登於 1989 年 1 月份的 Communications of the ACM。 這份報告的主要目的是作為各校修訂 計算機科學課程內容的基準,對於想要瞭解計算機科學是什麼很有幫助,因此,我就以 前述報告的內容為主,向大家介紹計算機科學。

首先,在名稱方面,該報告用"Computing as a discipline"為題,並不用"Computer science"或"Computer engineering",我本人認為 computer 是機器,computing 才比較 像是一門學問。因此,"計算機科學"應該稱為"計算科學"比較恰當。顧名思義,它是研究 計算的各種問是,除了計算機之外,更重要的還有計算方法等等。

除了名稱之外,它的內涵到底是數學、自然科學、還是工程,大家一直爭論不休。以目前的發展趨勢來看,計算機科學應該包含下列三個典範 (paradigm):

  • 理論 (theory),

  • 模型 (modeling),

  • 設計 (design)。

    其中理論部分乃根基於數學。一般而言,數學家反覆經下列四個步驟,以獲得正確的理論:

  • 定義相關的名詞,

  • 提出猜測,

  • 證明猜測,使之成為定理,

  • 解釋此一結果。

    其次模型部分則跟基於實驗科學。與數學家不同的是,科學家反覆下列四個步驟,以獲得正確的模型:

  • 提出假說,

  • 建構謀型,並預測其結果,

  • 設計實驗,並收集資料,

  • 分析結果。

    最後,設計則跟基於工程。工程師反覆經下列四個步驟,以獲得解決問題的系統:

  • 提出需求,

  • 建立系統規格,

  • 設計並製作系統,

  • 測試系統。

    計算機科學是一門綜合性的科學,它包含理論、模型和設計。ACM 對計算機科學給了以下簡短的定義:

    The discipline of computing is the systematic study of algorithmic processes that describe and transform information; their theory, analysis, design, efficiency, implementation, and application.

    另外,有一句話也非常有意義:

    The fundamental question underlying all of computing is, "What can be efficiently automated?"

    在計算機科學之下,又可分為以下的 9 個次領域:

  • 演算法與資料結構 (algorithms and data structures)。

  • 程式語言 (programming languages)。

  • 計算機結構 (computer architecture)。

  • 數值與符號計算 (numerical and symbolic computation)。

  • 作業系統 (operation)。

  • 軟體工程 (software engineering)。

  • 資料庫系統 (databases)。

  • 人工智慧 (artificial intelligence)。

  • 人機交流 (human-computer communication)。

    以上每個次領域,雖然比重不盡相同,都包含理論、模型和設計。另外,還有平行處理 (parallelism)、安全 (security)、可靠度 (reliability),以及效能分析 (performance evaluation) 等,因為每個次領域都需要談及,故並沒有單獨列出。

    由以上的說明可以看出計算機科學包含廣泛,一個系的資源有限,不可能樣樣具全。以我們應用數學系而言,應該集中力量在理論方面,這樣一方面可以將有限的資源作較有效的利用,一方面也可使計算機科學和數學及統計作更好的配合,互相支援。如此一來,我們的學生將會受到更好的訓練。