第16章 信息科學與計算機科學(1)(2 / 2)

經過一段時間的探索之後,人們開始認識到:許多情況下確定一個取值的範圍比直接確定一個值的方法更重要;發現一個不能自動進行計算的問題甚至比發現解決一個問題的方法更重要,這是因為證實各種不能自動進行的問題常常從不同的側麵、以不同的形式揭示了計算的極限,它有可能幫助人們更深刻地認識計算的本質,推動研究,特別是計算模型研究的發展。在軟件的開發中,算法的設計應該與體係結構相分離,而程序的設計應該與具體機器無關。在軟件開發各階段的研究和不同用途、不同性質的軟件開發需要各種計算模型的數學理論聯係實際的支持,這正是近年來各種計算(如分布式代數係統、類型理論、區段演算等)出現的背景,人工智能並不遙遠,但也不像原先想象的那麼簡單。問題是人們對智能的認識還十分膚淺,對什麼是人工智能的理論聯係實際基礎仍處於探索之中。

在計算機科學的研究與發展中,具體地形成了一大批更為細小的方向,有些理論聯係實際性較強,有些技術性較強,有些則與其它學科產生了密切的聯係。

.計算機科學研究的主要內容計算機科學是研究計算機及其周圍各種現象與規模的科學,主要包括理論計算機科學、計算機係統結構、軟件、人工智能和算法等。

理論計算機學理論計算機學是研究計算機基本理論的學科。在幾千年的數學發展中,人們研究了各式各樣的計算,創立了許多算法。但是,以計算或算法本身的性質為研究對象的數學理論,卻是在20世紀30年代才發展起來的。

當時,由幾位數理邏輯學者建立的算法理論,即可計算性理論或稱遞歸函數論,對20世紀40年代現代計算機設計思想的形成產生過影響。此後,關於現實計算機及其程序的數學模型性質的研究,以及計算複雜性的研究等不斷發展。

理論計算機科學包括自動機論、形式語言理論、程序理論、算法分析以及計算複雜性理論等。自動機是現實自動計算機的數學模型,或者說是現實計算機程序的模型,自動機理論的任務就在於研究這種抽象機器的模型;程序設計語言是一種形式語言,形式語言理論根據語言表達能力的強弱分為0~3型語言,與圖靈機等4類自動機逐一對應;程序理論是研究程序邏輯、程序複雜性、程序正確性證明、程序驗證、程序綜合、形式語言學以及程序設計方法的理論基礎;算法分析研究各種特定算法的性質。計算複雜性理論研究算法複雜性的一般性質。

計算機係統結構計算機係統結構是程序設計者所見的計算機屬性,著重於計算機的概念結構和功能特性,硬件、軟件和固件子係統的功能分配及其界麵的確定。使用高級語言的程序設計者所見到的計算機屬性,主要是軟件子係統和同件子係統的屬性,包括程序語言以及操作係統、數據庫管理係統、網絡軟件等的用戶界麵。使用機器語言的程序設計者所見到的計算機屬性,則是硬件子係統的概念結構(硬件子係統結構)及其功能特性,包括指令係統(機器語言)以及寄存器定義、中斷機構、輸入輸出方式、機器工作狀態等。

硬件子係統的典型結構是馮·諾依曼結構,它由運算器控製器、存儲器和輸入輸出設備組成,采用"指令驅動"方式。當初,它是為解非線性微分方程而設計的,並未預見到高級語言、操作係統等的出現,以及適應其他應用環境的特殊要求。在相當長的一段時間內,軟件子係統都是以這種馮·諾依曼結構為基礎而發展的。但是,其間不相適應的情況逐漸暴露出來,從而推動了計算機係統結構的變革。

計算機組織與實現是研究組成計算機的功能、部件間的相互連接和相互作用,以及有關計算機實現的技術,均屬於計算機組織與實現的任務。

在計算機係統結構確定分配給硬件子係統的功能及其概念結構之後,計算機組織的任務就是研究各組成部分的內部構造和相互聯係,以實現機器指令級的各種功能和特性。這種相互聯係包括各功能部件的布置、相互連接和相互作用。