21世紀是高速發展的信息化時代,計算機應用不斷深入并與其他學科相結合,相關知識領域不斷擴大。“計算機導論”作為計算機類專業的入門課程,需要介紹的知識在不斷增加,但相應的學時可能還在減少。為了適應信息產業新技術的發展,滿足普通高等院校提高教學質量的需要,高校教學和學習的教材必須與時代同步并不斷更新。
本書主要面向計算機大類各專業學生。大多數學生在最初的學習中可能有一個誤解,以為計算機專業就是熟練使用常用軟件、維修計算機以及編寫程序,實際上計算機專業需要學習的內容遠非如此。本書將帶領學生游覽計算機的世界,讓學生從不同角度了解計算機系統,了解計算機專業涉及內容的廣度,并對本科階段將學習的主要專業課的概況有所了解。
其他讀者如果對計算機專業感興趣,從這本書入門,也是一個不錯的選擇。
本書采用自底向上、由內到外的方式,探討了計算機如何工作,可以做什么以及如何做。計算機系統就像一個交響樂隊,由許多不同的元素組織在一起,構成一個整體。本書旨在使學生對未來幾年需要學習的主要課程有一個總體的了解,在此基礎上,對相關課程的特點及相互關系有一個全局的把握。
第1章主要描述了本書的組織結構以及計算機軟硬件的發展歷史。計算機系統在工作時是一個整體,為了能夠方便地學習及探討其功能,可以將其分層,每層在整個系統中扮演著特定的角色。這種分層構成了計算機系統的全景圖。
第2章和第3章分析了最內層——信息層,它反映了計算機內部表示信息的方式,這是一個純概念層。計算機內的信息采用二進制數字表示,所以要理解計算機處理技術,首先必須理解二進制數制以及它與其他數制(如人們日常使用的十進制數制)的關系,第2章介紹了該內容。第3章探討了如何用二進制表示及存儲多種類型(如數值、文本、圖像、音頻和視頻等)的信息。
第4章介紹了硬件層,探討了計算機硬件的基礎——門與電路。此外,第4章還介紹了計算機硬件各組成部分的功能以及計算機指令的工作流程。
第5章和第6章介紹了程序設計層。第5章分析了問題求解過程以及計算機的問題求解方法,講述了算法在解決問題中的作用、開發算法的策略、跟蹤和測試算法的技術,并介紹了算法的基本結構以及偽代碼表示。第6章介紹了多種程序設計語言,描述了不同類型程序設計語言的特點及主要語法。
第7章討論了操作系統和文件系統。每臺計算機都用操作系統管理計算機的資源,實現人機交互,了解操作系統能做什么是理解計算機的關鍵。
第8章和第9章討論了通信層。第8章介紹基本的計算機網絡技術,第9章介紹因特網及其應用。現在,計算機不再只是個人使用的孤立系統,計算機被連接到網絡上,以共享信息和資源。通信層是計算機連接的基礎層,利用計算機技術可以與地球上的任何地方通信。因特網逐漸演化成全球性的網絡,萬維網使通信變得相對容易,它從根本上改變了計算機的使用價值,使普通人也能使用它。
前面(內部)的分層重點在于如何使計算機系統運轉,而應用層的重點則是用計算機解決真實世界的問題。通過運行相應的應用程序可以在多個領域展示計算機的威力,如財務管理、建筑設計或游戲等。這一層范圍廣大,涉及計算機科學的幾個子學科。第10章討論了數據庫方面的問題,第11章討論了軟件工程相關問題,第12章討論了信息安全問題,第13章討論了人工智能。
第14章討論了計算機在硬件、軟件及通信方面的缺陷,以及哪些問題計算機不能解決或解決得不好,并分析了計算機的這些缺陷。
本書附帶7個實驗(相關資料請到清華大學出版社網站本書頁面下載),讀者既能通過實驗提高動手能力,也有助于理解理論知識。
有時讀者很容易陷入細節,看不清事物的全貌。本書每章都設置了“小結”,是對每章內容的概括,在學習完一章后,可以根據小結將該章核心內容回顧一遍。另外,在學習本書的過程中,應該時常回想一下計算機系統的全景圖,了解每一章所講的內容處于計算機系統的哪一層。每一層的細節很重要,但只有從整體上理解它們,才能將這些細節融會貫通,體會到它們的精妙之處。當然,計算機系統的分層不是絕對的,有些內容可能貫穿好幾層,所以應該靈活對待。
本書基本涵蓋了計算機科學領域的主要內容。考慮到初學者對算法的理解及程序設計能力有限,所以與數據結構相關的比較難的內容,本書沒有涉及。考慮到篇幅以及學生的知識基礎,本書也沒有討論計算機圖形學以及圖像處理的內容。
本書在編寫過程中得到了寧夏大學信息工程學院領導和同事的鼓勵及大力幫助,我的學生也參與繪制了本書的大部分插圖,在此一并感謝。作者在本書的編寫過程中,花費了大量心血,力求做到完美,但由于精力和能力有限,書中難免有疏漏、不妥之處,懇請各位同仁與廣大讀者批評指正。
劉進鋒2020年1月