計算機科學基礎/導論
你是否曾經想過計算是什麼以及計算機是如何工作的?什麼是計算機科學?為什麼 - 除了顯而易見的原因 - 它很重要?計算機科學家做什麼?他們研究什麼型別的問題?他們使用什麼方法來解決這些問題?一般來說,計算機科學家是如何思考的?
問題 1:當您聽到“計算機科學”時,您會想到什麼?寫一段話或列表,或者畫一張您想到的影像或圖表。
問題 2:目前,計算機科學中哪些部分對您來說最有趣或最重要?為什麼?
當您聽到“計算機科學”這個詞時,也許您會想到一臺特定的計算機。或者您認識的與計算機打交道的某人。或者某個特定的計算機使用,比如線上遊戲或社交網路。計算和計算機科學有許多、許多不同的方面。
瞭解一些計算機科學知識有很多有用的原因和重要性。計算機以不同的方式影響著我們生活中的許多方面。對於許多人來說,計算機在他們所做的工作、休閒活動、與他人交流的方式、教育、醫療保健等方面都發揮著或將發揮重要作用。想想您在日常生活中直接或間接遇到的各種計算機和計算方式。
更具體地說,這本書將涵蓋什麼?本文的首要目的是讓您更深入地瞭解計算機科學的基本原理:什麼是計算機科學?它與計算機程式設計相同嗎?什麼是計算機?例如,大多數人會同意“筆記型電腦”是一臺計算機,而“平板電腦”也是一臺計算機,但智慧手機呢?計算機是如何工作的?例如,我們不僅可以在計算機中儲存數字和文字,還可以儲存影像、影片檔案和音訊檔案;計算機如何處理如此不同的資料?計算機科學中有哪些有趣和重要的分支?例如,關於計算機圖形、網路或資料庫等分支,應該知道什麼?為什麼這些都重要?對於大多數人來說,僅僅使用計算機而不是深入瞭解計算機和計算機科學就足夠了嗎?
這些都是關於計算的基本問題,在本書中我們將探討這些問題和其他問題。總而言之,本書的其中一個目的是提供計算機科學的概覽,不僅向您介紹計算機科學的基本原理 - 例如計算機如何在基本層面上工作 - 而且還探討這些基本原理的重要性。
這個概覽有兩個部分特別重要:雖然主題是計算機科學的概覽,但兩個基本主題是如何在計算機科學中使用數學以及計算機科學如何影響並受社會影響。
這兩個主題都非常適合計算機科學概覽書籍。計算機科學嚴重依賴數學(事實上,一些大學將計算機科學和數學專業設在同一個系)。在計算機科學中使用數學的某些方式是顯而易見的 - 例如,在電子表格等計算工具中 - 但還有許多不那麼明顯的方式,數學對於計算機科學至關重要。例如,在計算機的最低層,資料(無論資料是數字、文字、音訊、影片等)都以二進位制表示,即以 0 和 1 的字串表示。這意味著要了解計算機的某些基本知識,您需要了解二進位制數和運算。
計算機也以多種方式影響著社會,從電影中使用計算機生成的影像,到大型政府或商業資料庫,再到網際網路對社會的多種影響。而社會也影響著計算機,例如透過使用者行為和各種監管方式。
雖然數學和技術與社會似乎過於不同而無法舒適地包含在同一本書中,但實際上,許多計算機科學主題從這兩個角度探索起來都很有用 - 從某種意義上說,這些不同的觀點是“同一枚硬幣的兩面”。例如,本書中的一個主題是計算機安全。數學在安全性中發揮作用,例如在加密中。計算機安全也有許多社會方面,例如國家安全、基礎設施安全和個人安全。本書中的大多數主題同樣都具有數學基礎和社會方面,從這兩個角度探索這些主題將帶來更深入的理解。
有許多不同型別的計算機科學入門書籍。因此,除了解釋這本書是什麼之外,說明它不是什麼也很有用。
這不是一本程式設計書籍。程式設計是計算機科學的核心活動,但它不是計算機科學的全部。由於程式設計很重要,我們會花一些時間來學習它。但是,由於計算機科學遠遠不止程式設計,而且這是一本概覽書籍,所以這部分時間將只佔本書的一小部分。
這不是一本計算機應用書籍。許多其他書籍涵蓋了基本的計算機應用程式。例如,一個流行的選擇是教授如何使用文字處理器、電子表格、資料庫管理程式和演示軟體。這些和其他應用程式是計算機科學的重要組成部分,因此在本書中,您將有機會學習一些您可能不熟悉的應用程式。然而 - 與程式設計一樣 - 使用應用程式只是學習計算機科學的一部分,因此應用程式的使用將只佔本書的一小部分。
這不是一本“計算機素養”或“計算機熟練程度”的書籍。計算機素養或計算機熟練程度有很多不同的定義。例如,維基百科的定義源自美國國會技術評估局的一份報告,是“使用計算機和相關技術的知識和能力,技能範圍涵蓋從基本使用到程式設計和高階問題解決”。[1] 本書的某些部分將涉及使用計算機來獲取各種技能。例如,您將完成各種與計算機相關的任務,例如執行網路搜尋、構建網頁、進行基本的計算機程式設計以及使用資料庫。然而,這只是一部分,而不是整本書的內容。因此,這本書與計算機素養書籍有一些共同特徵,但總體上它的重點比那種教科書更廣泛。
這不是一本“計算機科學中的偉大思想”的書籍。計算機科學入門材料目前的趨勢是透過其重要、基本的思想來學習計算機科學。[2] 本書確實涵蓋了一些關鍵思想。例如,我們將要學習的一個早期主題是如何將計算機中的所有資料,無論這些資料是數字、文字、影片還是其他資料,都表示為計算機中的 0 和 1。一般來說,書中的主題是計算機科學的基礎。然而,這本書也與偉大思想書籍有所不同。它並不僅僅關注思想,而是廣泛地探索了許多與計算機相關的議題、子主題和計算機技能。此外,與典型的偉大思想書籍相比,本書更側重於數學思維,以及技術和社會。
除了程式設計、應用程式、計算機熟練程度和偉大思想之外,還有許多其他型別的計算機科學入門教科書。一些教科書調查了各種計算機科學主題。另一些則側重於專業的軟體開發實踐。還有一些透過特定的“視角”來了解計算,例如網路或計算生物學。等等。本書與這些其他課程有一些共同點,但也存在顯著差異。特別是,最大的區別是本書將計算機科學的概覽與對數學以及社會和技術的強烈強調融合在一起;這是一種強調的平衡,具有許多優點,但在計算機科學入門課程中並不常見。
這本書涵蓋了數學思維,以及科技與社會,這都是非常重要的組成部分。許多教科書透過程式設計、計算機工作原理或其他計算方面來介紹計算機科學。然而,目前還沒有一本合適的教材能將計算機科學概述與足夠的數學思維、社會和技術重點相結合。
乍一看,一本介紹計算機科學的書會涉及通識教育可能顯得奇怪。計算機科學與通識教育有什麼關係呢?深入理解計算機需要從多個不同的角度進行探索。這不僅包括理解計算機的工作原理——例如,計算機科學的數學基礎——還包括理解它們如何影響社會以及受社會影響。總之,要深入理解計算機和計算機科學,就必須從多個角度進行探索,包括通識教育所體現的視角。
問題 3. 當你聽到“數學”這個詞時,你會想到什麼?寫一段文字、列個清單,或者畫一張你腦海中浮現的影像或圖表。
問題 4. 根據你使用計算機的經驗,列出一些數學在計算中應用的例子。
計算機和數學有什麼共同點?為什麼一本計算機科學概述書籍需要數學思維?
本書中許多數學的應用都是將數學思想和運算應用於解決計算機科學問題。計算機科學有許多重要的數學基礎,因此,理解計算機科學就意味著能夠解決涉及這些基礎的數學問題。同時,本書中不同的數學應用也體現了數學本身的特點,以及數學和計算機科學之間密切的聯絡。例如,本書中的數學說明了以下幾點:
- 許多計算機科學中的關鍵思想,例如資料表示,都依賴於數學。
- 計算機科學的許多部分都使用特殊的數學或邏輯符號和術語。
- 計算機能夠表示和處理多種不同型別的資料,以及相關的能力,能夠使用多種運算以不同的表示形式表示和處理量。
- 解決問題、分析情況或指定計算過程都需要嚴謹性。
- 在解決計算問題時,需要使用數字和算術。然而,這些問題往往並非簡單的算術問題,而是具有一些特殊特徵,例如涉及重複運算,或涉及極其大或極其小的數字。
- 存在各種不同的演算法來解決諸如模式匹配、統計資料表中指定值的個數或查詢圖中兩個節點之間的最短路徑等各種問題。
解決本書中的許多問題將涉及一些數學運算,因此需要對數學或邏輯符號進行操作。以下是一些例子:
- 在探索低階邏輯運算時,你需要對二進位制表示和邏輯運算子進行操作。
- 在研究演算法的增長率時,你需要使用計算機科學家常用的Ο和Θ符號。
- 在指定計算過程時,你需要使用“虛擬碼”或程式語言。這些語言與數學或邏輯符號具有許多相同的符號特徵,尤其是在計算處理涉及大量數值計算時。
本書中的數學水平是大學入門級別的數學。因此,數學並不高階,本書除了普通大學入學要求之外,沒有其他數學先決條件。同時,本書中的數學內容超出了高中數學,儘管本書中使用的許多數學型別在一些高中數學課程中出現過。
例如,本書中一個數學的應用是二進位制(或二進位制)表示。這是一個通常出現在高中數學課程中的主題,二進位制表示的基礎並不複雜。在本書中,我們將回顧一些基本知識,例如如何將數字在十進位制(十進位制)和二進位制表示之間轉換,以及如何進行簡單的運算,例如將兩個二進位制數相加。但是,我們還將在其他方面使用二進位制表示,這些方面是計算機工作原理的基礎。以下是一些例子:
- 我們將探討幾種不同的方法來表示二進位制表示中的數字。例如,整數通常以二進位制形式表示,而不是使用通常的直接二進位制表示,而是以“二進位制補碼”形式表示。所以,本書的一部分內容是學習“通常”的二進位制表示,以及這些替代方案。
- 我們將探討二進位制表示中的各種問題,例如使用的“位”數,這些問題對於確定計算機使用的數字的範圍和精度至關重要。
- 除了表示數字之外,我們還將探討計算機如何使用二進位制表示來表示和操作其他型別的資料,例如文字、顏色和影像。
- 除了二進位制加法等基本運算之外,我們還將探討二進位制表示中的其他運算。例如,邏輯運算在影像處理中遮蔽顏色以及在實現低階計算機硬體中的算術運算中非常重要。
總之,儘管本書中的許多數學主題都出現在高中數學中,但它們的廣度或深度都超出了這些主題在高中通常的處理範圍。
問題 5. 當你聽到“科技與社會”時,你會想到什麼?寫一段文字、列個清單,或者畫一張你腦海中浮現的影像或圖表。
問題 6. 根據你使用計算機的經驗,列出一些例子說明計算如何影響社會以及受社會影響。
本書的主題是計算機和計算。計算機以多種方式影響了社會,我們將在本書中探討其中的一些。當前和未來的計算機應用將以更多方式影響社會。
透過本書,你應該能夠理解計算機的工作原理。這包括理解計算機硬體和計算機軟體的基礎知識。
然而,更廣泛地說,計算機科學依賴於其他科學、工程和相關領域的成果。我們在本書中將看到最突出的例子是數學在計算機科學中必不可少的各種方式。
科技影響社會。然而,這並非單行道。社會也影響著科技。例如,社會透過政府對研究的支援來促進科技發展。另一個例子是,不同的個人、企業和其他組織以科技創造者無法預見的方式採用和使用科技。
在本書中,我們將探討社會如何影響科技的各種例子。這些例子包括對早期網際網路的政府資助、網際網路監管、商業因素如何影響計算產品以及計算機安全的社會方面。
在計算機與社會中的許多主題中,存在著多個利益相關者。這些利益相關者可以包括個人使用者、開發者、公司(生產商、消費者和中介機構)、政府機構、專業組織和其他型別的組織。這些不同的利益相關者往往具有不同的觀點和不同的目標。
在本書中,我們將經常從多個角度探討科技與社會問題。有時,我們將關注一個特定的視角或一個特定利益相關者的作用。然而,在其他時候,我們將更廣泛地探討問題:誰是利益相關者?他們在這個問題中扮演什麼角色?他們的目標是什麼?
人們經常聽到關於計算機與社會問題的相互矛盾的觀點。計算機對社會有利。計算機對社會有害。網際網路使人們更容易溝通,並將人們聯絡在一起。網際網路使人們更加孤立。計算機和自動化正在剝奪人們的工作。計算機和自動化創造就業機會。[3]
在本書中,我們將經常探討有爭議或複雜的問題。我們如何避免對這些問題產生膚淺、片面的理解?我們如何解決關於這些問題的相互矛盾的主張?
計算技術不僅對社會產生了巨大的影響,而且在不斷地影響著社會。幾乎每天都會出現與計算相關的某種技術進步。從許多方面來說,“計算機革命”才剛剛開始。
本書的目標之一是,讓你對計算的總體知識、計算趨勢以及計算與社會有足夠的瞭解,以便能夠評估新技術。請注意,“評估”在不同的語境中可能意味著不同的東西。例如,它可能意味著對一種新的計算機產品是否會成功進行明智的預測。或者,它可能意味著預測某個領域未來的計算機進步。或者,它可能意味著分析一種新的計算機應用程式更有可能帶來益處而不是危害。
以下是一些額外的介紹性問題。
問題 7. 你如何使用電腦?列出最重要的幾種方式。
問題 8. 寫下一些以計算為主體的電影列表。對於每部電影,說明計算在其中是作為有益的、有害的、在某些方面有益但在其他方面有害的,還是中性的。
問題 9. 你認為總的來說,電腦對社會的影響是正面多於負面,負面多於正面,還是正面和負面影響大致相等?為什麼?
問題 10. 列出一些電腦對社會有益的方式。然後列出一些有害的方式。
問題 11. 假設你要寫一篇關於電腦和社會某個方面的小說、劇本、電影劇本等。描述你作品的主題是什麼。
問題 12. “技術”是什麼意思?你在日常生活中使用技術的哪些重要方式?
問題 13. 假設你必須寫一篇題為“電腦與我”的短篇論文或短篇故事。這篇作品的一些關鍵點或主題是什麼?
問題 14. 假設你必須寫一篇題為“技術與我”的短篇論文或短篇故事。這篇作品的一些關鍵點或主題是什麼?
- ↑ 參見英文維基百科上的電腦素養。訪問於 2015 年 5 月 20 日。
- ↑ 例如,參見Denning, Peter. "計算機科學的偉大原則". 檢索於 2015 年 5 月 20 日. 此網站將原則分為七類:計算、通訊、協調、回憶、自動化、評估和設計。在該方法及其相關方法中,有很多好的想法、見解和框架,事實上,本書中的許多關鍵思想將以某種方式與丹寧的原則相關。
- ↑ 參見 普特南,羅伯特 D. (2001 年 8 月). 獨自打保齡球:美國社群的崩潰與復興. 西蒙與舒斯特. ISBN 978-0-7432-0304-3. 檢索於 2015 年 5 月 29 日.