大神之路-起始篇 | 第1章.電腦科學導論之【基礎緒論】學習筆記

WeiyiGeek發表於2023-02-13
[ 點選 ? 關注「 全棧工程師修煉指南」公眾號 ]

設為「⭐️ 星標」帶你從基礎入門全棧實踐 再到 放棄學習
涉及 網路安全運維、應用開發、物聯網IOT、學習路徑 、個人感悟 等知識分享。

希望各位看友多多支援【關注、點贊、評論、收藏、投幣】,助力每一個夢想。

WeiyiGeek Blog's - 花開堪折直須折,莫待無花空折枝 】
作者主頁: 【 https://weiyigeek.top
部落格地址: 【 https://blog.weiyigeek.top 】
作者答疑學習交流群:歡迎各位志同道合的朋友一起學習交流【點選 ? 加入交流群】, 或者關注公眾號回覆【學習交流群】。



電腦科學導論學習筆記

前言:當前作為一名IT網際網路從業者,計算機技術日新月異,每天都有新概念、新技術的出現,而像我這樣的萬金油來說,越學到後面就越吃力,遇到瓶頸問題也隨之增多,因為本身非科班出身,加之半路出家,針對於計算機基礎知識掌握不牢或者說是不完整,所以我痛定思痛,下定決心重新學習計算機相關基礎知識,從電腦科學導論,到計算機組成原理,到計算機網路、到作業系統,到資料結構,到程式演算法、到應用開發、到安全運維開發。

今天 (2022年9月1日) 便從大神之路-起始篇,我們要站在巨人們的肩膀上,進行電腦科學導論的 學習,我將總結學習成果筆記,幫助後續入門學習的朋友。

隨著現代計算機的發明,帶來了新的學科,即電腦科學(簡稱計科)一詞上一個非常廣泛的概念,在此處我沒將其定義為計算機相關的問題,現在電腦科學被劃分成幾個領域,總結歸納為兩大類系統領域應用領域.

  • 系統領域:涵蓋那些與硬體和軟體構成直接有關的領域,例如計算機體系結構、計算機網路、安全問題、作業系統、演算法、程式設計語言以及軟體工程。
  • 應用領域:涵蓋了與計算機使用有關的領域,例如資料庫、雲物聯和人工智慧。

參考書籍:【電腦科學導論-第三版 (Foundations Of Computer Science - Third Edition) 】作者: [美] 貝赫魯茲.佛羅贊 (Behrouz Forouzan) PS: 當下已經第四版了、

參考影片:【計算機導論】電腦科學導論(大神之路-起始篇)

原文地址: https://mp.weixin.qq.com/s/ddQ-Quk1uFqtjX6ycl8Rzg


第 1 章 基礎緒論

1.1 圖靈模型

什麼是圖靈機?

1937年 由 Alan Turing (阿蘭•圖靈)首次提出了一個通用計算裝置的設想, 即所有的計算都可能在一種特殊的機器上執行,這就是現在所說的圖靈機。

實際上圖靈機對這樣一種機器進行了數學上的描述,而不是建造一臺真實的機器。

什麼是通用圖靈機?

通用圖靈機是對現代計算機的首次描述,該機器只要提供了合適的程式就能做任何運算。

圖靈獎(Turing Award):全稱A.M.圖靈獎(ACM A.M Turing Award),是由美國計算機協會(ACM)於1966年設立的計算機獎項,名稱取自艾倫·麥席森·圖靈(Alan M. Turing),旨在獎勵對計算機事業作出重要貢獻的個人 。

(1) 資料處理器

在討論圖靈模型之前,此處將計算機定義為資料處理器 ,此時暫且把計算機可以被看作一種接收資料輸入、處理資料併產生資料輸出的黑盒

WeiyiGeek.單任務計算機器

該模型產生的問題,是沒有確定計算機能處理的資料是什麼.

(2) 可程式設計資料處理器

圖靈模型是一個適用於通用計算機的更好模型,該模型新增了一個額外的元素—程式 到不同的計算機器中。

程式:是用來告訴計算機對資料進行處理的指令集合。

WeiyiGeek.可程式設計資料處理器

在這個圖靈模型中,輸出資料是依賴兩方面因素的結合作用:輸入資料和程式,其關係如下。

  • 相同的程式,不同的輸入資料,輸出結果根據輸入的不同而不同。
  • 相同的輸入資料,不同的程式,輸出結果根據程式的不同而不同。
  • 相同的輸入資料,相同的程式,原則理論上其輸出結果應該是一致的

WeiyiGeek.輸出資料的依賴因素


1.2 馮·諾依曼模型

1944 - 1945年期間,馮•諾依曼指出,鑑於程式和資料在邏輯上是相同的,因此程式也能儲存在計算機的儲存器中。所以實際上該模型也基於圖靈模型(通用圖靈機)建造。

(1) 四個子系統

基於馮•諾依曼模型建造的計算機分為4個子系統:儲存器、算術邏輯單元 ALU、控制單元 CU 和輸入/輸出單元, 現在系統通常是分為五個組成部分,只是將輸入/輸出單元分別獨立出來。

  • 儲存器 : 用來儲存資料和程式的區域

  • 算術邏輯單元( ALU ) : 用來進行算數運算和邏輯運算的地方

  • 控制單元(CU):對儲存器、 算術邏輯單元、 輸入 / 輸出等子系統進行統籌控制操作 。

  • 輸入 / 輸出單元:輸入子系統負責從計算機外部接收輸入資料,輸出子系統負責從計算機處理結果輸出到計算機外部。

WeiyiGeek.馮•諾依曼模型建造

溫馨提示:輸入/輸出子系統的定義相當廣泛,它們還包含輔助儲存裝置,例如,用來儲存處理所需的程式和資料的磁碟和磁帶等。當一個磁碟用於儲存處理後的輸出結果,我們一般就可以認為它是輸出裝置,如果從該磁碟上讀取資料,則該磁碟就被認為是輸入裝置。

(2) 儲存程式概念

在馮•諾依曼模型中要求程式必須儲存在儲存器(記憶體)中。

現代計算機的儲存單元用來儲存程式和資料,這意味著程式和資料應該有相同的格式,實際上它們都是以位模式( 0 和 1 序列) 儲存在儲存器(記憶體)中。

(3) 指令順序執行

在馮•諾依曼模型中規定了一段程式是由一組數量有限指令組成。

透過控制單元(CU)從記憶體中提取一條指令,解釋指令,接著執行指令,也就是說指令是一條接著一條順序執行的,所以指令的順序執行是基於馮•諾依曼模型的計算機的初始條件。

溫馨提示:有時一條指令可能會請求控制單元以便跳轉到其前面或者後面的指令去執行,但是這並不意味著指令沒有按照順序來執行。


1.3 計算機簡單組成

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

(1) 計算機硬體

描述:當今的計算機硬體基於馮•諾依曼模型,且包含四部分,儘管可以有不同型別的儲存單元,不同型別的輸入/輸出子系統等。

例如,我們的個人臺式計算機,通常由CPU、記憶體、主機板、硬碟、顯示卡、機箱電源、機箱、輸入裝置(滑鼠、鍵盤)、輸出裝置(顯示器)等硬體組裝而成。

(2) 計算機資料

在馮•諾依曼模型中清楚地將一臺計算機定義為一臺資料處理機,它可以接收輸入資料,處理並輸出相應的結果。

此處不得不提到儲存資料組織資料

  • 儲存資料:計算機本身是一臺電子裝置,最好的資料儲存方式應該是電子訊號,以電子訊號的出現和消失 ( 位模式)來儲存資料,即以(1、0)兩種狀態之一來儲存資料。 但是日常生活中的資料(文字、 影像、 聲音 、 影片等)不是以位模式儲存的,不能直接儲存到計算機中,除非將這類資料轉換為位模式。

  • 組織資料:儘管資料只能以一種形式(位模式)儲存在計算機內部,但在計算機外部卻可以表現為不同的形式,所以在資料儲存到計算機之前,需要合理有序的組織成不同的格式。

為什麼使用位模式?

因為電子裝置對位模式的實現簡單(通電或不通電,高電壓和低電壓 )

如何有效地將資料組織成不同的實體和格式?

如今,資料並不是按照雜亂無章的次序來組織資訊的。資料被組織成許多小的單元,再由這些小的單元組成更大的單元等等。

溫馨提示:計算機(以及資料處理表示法)開創了一門新興的研究領域即資料組織

(3) 計算機軟體

在圖靈或馮•諾依曼模型的主要特徵是程式的概念,下面簡單瞭解一下程式相關的概念:

程式儲存與指令序列

  • 在馮•諾依曼模型中,這些程式被儲存在計算機的儲存器中,所以儲存器中不但要儲存資料,而且還要儲存程式

  • 在馮•諾依曼模型中, 要求程式必須是有序的指令集,每一條指令操作一個或者多個資料項。

為什麼程式必須由不同的指令集組成?

答案:當然為了重用性(複用),圖靈模型和馮•諾依曼模型透過仔細地定義 計算機可以使用的不同指令集,從而使得程式設計變得相對簡單,程式設計師透過組合這些不同的指令來建立任意數量的程式。(例如,高階語言中函式也是為了程式碼重用)

即同一個指令可以與其他功能指令相互組合從而實現不同的程式功能。

程式演算法

定義:程式按一系列的指令執行使得程式設計成為可能,程式設計師透過指令集中的指令組合完成特定的運算任務,按照有序指令解決問題的的方法就是演算法

程式語言

  • 機器語言:早期時代,程式設計師編寫位模式( 0 和 1 的組合)的指令來完成任務

  • 符號語言:隨著任務的複雜性越來越高,科學家研究使用符號來表示位模式指令,這樣計算機程式語言就誕生了,例如,組合語言

軟體工程

定義:軟體工程是指結構化程式的設計和編寫, 為高效的程式開發而誕生的一門理論體系

作業系統

定義:計算機作業系統最初是為程式訪問計算機部件提供方便的一種管理程式

今天作業系統所完成的工作遠不止這些,例如,我們使用的Windows作業系統,可以讓我們在系統中執行各類應用軟體,作為使用者我們並不需要了解這個軟體到底是怎樣載入到記憶體,以及被CPU呼叫執行的,我們只關心其展示或者說輸出的結果,這便是作業系統的功勞。(後續課程會深入講解,此處簡單瞭解即可)


1.4 計算機發展歷史

瞭解一下計算機的發展歷史還是非常有必要的,因為在考試中常常會涉及到一部分,並且瞭解其發展歷史更能夠看到讓我們體會到站在巨人的肩膀上,此處我們將其計算機的歷史分為三個階段,即機械計算機器階段(1930年以前)、電子計算機階段(1930〜1950年)、現代計算機階段(1950年至今)

(1) 機械計算機器

此階段時間在1930年以前,人們發明了一些用來進行計算的機器,它們與計算機的現代概念幾乎沒有相似之處。

  • 17 世紀,法國著名的數學家和物理學家布萊斯•帕斯卡(Blaise Pascal)發明了`Pascsline``, 它是一個用來進行加減運算的計算器。
  • 17世紀後期,德國數學家戈特弗裡德•萊布尼茨(Gottfried Leibnitz)發明了萊布尼茨之輪(Leibnitz's Wheel) ,它是一個既能夠做乘除運算又能做加減運算的一臺更加複雜的計算機器。
  • 19世紀初期,由約瑟夫-瑪麗•雅卡爾(Joseph-Marie Jacquard)發明了雅卡爾提花織機(Jacquard loom),它是第一臺利用儲存和程式設計概念的機器,這種織布機是利用穿孔卡(類似於儲存程式)來控制在織布過程中經線的提升。
  • 1823年,由査爾斯•巴比奇(Charles Babbage)發明了一種差分引擎,它不僅能夠很容易地進行數學運算,還可以解多項式方程,後來隨之發明了一種叫做分析引擎的機器,在某種程度上和現代計算機的概念類似。
  • 1890年,由美國赫爾曼•何勒里斯(Herman Hollerith)設計發明並製造出具有程式設計能力的機器,該機器可以自動閱讀、計數和排列儲存在穿孔卡上的資料。

溫馨提示:到了20世紀,尼克勞斯•沃思 (Niklaus Wirth)發明了一種結構化的程式設計語言,他將其命名為Pascal語言,用來紀念這位發明首臺機械計算器的科學家。

(2) 電子計算機誕生

此階段在 1930~1950 年之間百花共鳴,由電子計算機工業先驅的科學家們發明了一些計算機,大致分為兩類即早期的電子計算機基於馮•諾依曼模型的計算機.

早期的電子計算機
早期計算機並不是將程式儲存到儲存器中,所有的計算機都是在外部進行程式設計的。有以下5種比較傑出的計算機:

  • 1939年,由 約翰•阿塔納索夫(John V. Atanasoff)及其助手克利福德•貝里(Clifford Berry)發明的 ABC ( AtanasofF Berry Computer),它主要用於實現解線性方程的系統,也是第一臺用來完成特定任務的計算機是透過將資訊進行電子編碼來實現其功能的。

  • 1939年左右,由德國數學家康拉德•朱斯(Konrad Zuse)設計出通用計算機,並命名為“Z1”。

  • 20世紀30年代,美國海軍和IBM公司在哈佛大學發起建立了一項工程,在霍華德•艾肯(Howard Aiken)的直接領導下發明建造了一臺名為Mark I的巨型計算機,它即使用了電子部件,也使用了機械部件。

  • 1943 年,阿蘭•圖靈發明了一臺名為巨人(Colossus computer),它是世界上最早的電子數字機器,是為破譯德國Enigma密碼而設計的。

  • 1946 年,由約翰•莫奇勒(John Mauchly)和普雷斯波•埃克特(J. Presper Eckert)發明了第一臺通用的、完全電子的計算機ENIAC (Electronic Numerical Integrator and Calculator,電子數字整合器和計算器), 它利用了將近18 000個整合塊,有100英尺長,10米英尺高,重達30噸。

溫馨提示:上述5種計算機的儲存單元僅僅用來存放資料,它們利用配線或開關進行外部程式設計。


基於馮•諾依曼模型的計算機
前面提到馮•諾依曼提出了程式和資料應該儲存在儲存器中,這樣做的好處是當需要進行一項新的任務,你只需要改變程式,而不用重新佈線或者調節成百上千的開關。

  • 1950年,在賓夕法尼亞大學誕生了,第一臺基於馮氏思想的計算機 EDVAC - 離散變數自動電子計算機(Electronic Discrete variable Automatic Computer),它明確奠定了新機器由五個部分組成,是近現代通用計算機的雛形。
  • 1949年,由英國劍橋大學的莫里斯•威爾克斯(Maurice Wilkes)受到 馮•諾依曼提出的EDVAC報告發明製造了 EDSAC - 電子延遲儲存自動計算器 ( Electronic delay storage automatic calculator ),它是第二臺儲存程式電子計算機。

(3) 現代計算機誕生

此階段為 1950年至今,至此之後出現的計算機都差不多都是基於馮•諾依曼模型,它們變得更快、更小、更便 宜,但原理幾乎是相同的。

  • 第一代計算機(大約1950〜1959年)以商用計算機的出現為主要特徵,計算機體積龐大,且使用真空管作為電子開關,價格昂貴。
  • 第二代計算機(大約1959〜1965年)使用電晶體代替真空管,減小了計算機的體積同時也節省了開支。
  • 第三代計算機(大約1965〜1975年)使用積體電路(電晶體、導線以及其他部件做在一塊單晶片上)的發明更加減少了計算機的成本和大小。
  • 第四代計算機(大約1975〜1985年)出現了微型計算機,並且在1975年釋出了第一個桌面計算器(Altair 8800)
  • 第五代計算機(大約1985〜至今) 出現了掌上計算機、臺式計算機、筆記本計算機的誕生、第二代儲存媒體(CD-ROM、DVD等)的改進、多媒體的應用以及虛擬現實現象。

1.5 社會問題和道德問題

電腦科學引發了一些周遭的問題,其中最為普遍的可以歸類為社會問題道德問題

社會問題

  • 產生依賴 :對計算機的過渡依賴 , 離開計算機什麼事也做不了
  • 社會公正:計算機最開始出現時,並不是所有人都能付得起能使用的,意味著計算機已經構成僅為中高收入人群的服務,而低收入人群被剝奪了權利,但是隨著電腦科學的 發展 , 計算機越來越便宜 , 計算機使用的公正 問題正在減小
  • 數字分列化 : 導致的資訊分裂 ,作者把使用計算機和不使用計算機分為兩類 人群 , 一部 分 人 通計算機進行通訊,一部分使用 傳 統通訊方式。

道德問題

  • 隱私 :為了保護隱私我們需要通訊的私密性。
  • 版權 :因特網已經為思想共享創造了機會,電子版權遭遇挑戰。
  • 計算機犯罪 :非法利用計算機進行攻擊、盜取、詐騙、勒索等問題突出。

原文地址: https://blog.weiyigeek.top/2022/5-30-692.html

本文至此完畢,更多技術文章,盡情期待下一章節!

溫馨提示:唯一極客技術部落格文章線上瀏覽【極客全棧修煉】小程式上線了,涉及網路安全、系統運維、應用開發、物聯網實戰、全棧文章,希望和大家一起學習進步,歡迎瀏覽交流!(希望大家多多提提意見)


專欄書寫不易,如果您覺得這個專欄還不錯的,請給這篇專欄 【點個贊、投個幣、收個藏、關個注,轉個發,留個言】(人間六大情),這將對我的肯定,謝謝!。

帥哥(靚仔)、美女,點個關注後續不迷路

溫馨提示: 由於作者水平有限,本章錯漏缺點在所難免,希望讀者批評指正,並請在文章末尾留下您寶貴的經驗知識,聯絡郵箱地址 master@weiyigeek.top 或者關注公眾號 WeiyiGeek 聯絡我。

相關文章