計算機核心基礎

[TOC]

一 引子:

接下來一段時間,我們的目標的是:學會使用python這門編程語言來編寫ATM+購物車程序,那麼問題來了:

1.1 什麼是語言?什麼是編程語言?爲何要有編程語言?

插圖:惡搞圖01

計算機核心基礎

語言其實就是人與人之間溝通的介質,如英語,漢語,俄語等。

而編程語言則是人與計算機之間溝通的介質。

那麼爲何要有編程語言,或者說人爲何要與計算機溝通呢?這是因爲在編程的世界裏,計算機就好比是人的奴隸,人與計算機溝通的目的就是爲了奴役計算機,讓計算機按照人類的思維邏輯自發地去工作從而把人力解放出來。

此處我們可以提煉出如下兩個重要的概念

1.2 什麼是編程?爲什麼要編程?

編程就是人把自己想命令計算機乾的事用編程語言翻譯出來並寫到文件裏(這一系列的文件就是程序),那麼爲什麼要編程?

插圖:惡搞圖02
計算機核心基礎

小人類編程的目的就是爲了讓計算機按照人類的思維邏輯(程序)自發地去工作從而把人力解放出來。

綜上,我們接下來的學習應該分爲兩個層面

1、爲了更好地控制人類的奴隸(即計算機),我們需要學習計算機是由什麼組成的、它能做什麼事、它是怎樣工作的(詳見計算機組成原理、操作系統概述)

2、我們需要學習編程語言,從而把原來需要人力來完成的業務(比如ATM和購物)交給計算機去做

二 計算機組成原理

2.1、什麼是計算機?

俗稱電腦,即通電的大腦,電腦二字蘊含了人類對計算機的終極期望,希望它能真的像人腦一樣去工作,從而解放人力。

2.2、爲什麼要用計算機?

世界是由聰明的懶人統治的,任何時期,總有一羣聰明的懶人想要奴隸別人。在奴隸制社會,聰明的懶人奴役的是真正的人,而人是無法不吃、不喝、不睡覺一直工作的,但是計算機作爲一臺機器是可以做到的,所以把計算機當奴隸是上上之選。

2.3、計算機的五大組成部分

計算機有五大組成部分,既然計算機是人的奴隸,那麼計算機設計核心肯定也是在模仿真正的人,所以我們完全可以把計算機的五大組件比喻成人類的各種器官

插圖:惡搞圖03
計算機核心基礎

2.3.1、控制器

控制器是計算機的指揮系統,用來控制計算機其他組件的運行,相當於人類的大腦

2.3.2、運算器

運算器是計算機的運算功能,用來做算術運算和邏輯運算,相當於人腦。

ps:控制器+運算器=CPU,cpu相當於人的大腦

插圖:cpu圖
計算機核心基礎

cpu詳解見附錄1

2.3.3、存儲器

存儲器是計算機的記憶功能,用來存取數據。

存儲器主要分爲內存與外存:

​ 內存相當於人的短期記憶。斷電數據丟失

​ 外存(如磁盤),相當於記事的本子,斷電數據不會丟失,是用來永久保存數據的

​ ps:內存的存取速度要遠遠高於外存

2.3.4、輸入設備input

輸入設備是計算接收外界輸入數據的工具,如鍵盤、鼠標,相當於人的眼睛或耳朵。

2.3.5、輸出設備output

輸出設備是計算機向外輸出數據的工具,如顯示器、打印機,相當於人說的話,寫出的文章。

ps:存儲器如內存、磁盤等既是輸入設備又是輸出設備,統稱爲IO設備

計算機核心基礎

一個非常重要的基礎知識:與運行程序相關的三大核心硬件

我們編寫的程序一定是要運行於計算機硬件之上,而站在硬件的角度,與運行程序有關的三大核心硬件爲CPU、內存、硬盤。

程序最先是存放於硬盤中的,程序的運行是先從硬盤把代碼加載到內存中,然後cpu是從內存中讀取指令運行。

三 操作系統概述

.1、操作系統的由來

​ 大前提:我們編程目的就是爲了奴役計算機,讓計算機硬件自發地運行起來,然而硬件畢竟是”死的“,硬件的運行都是由軟件支配。

插圖:惡搞圖04

計算機核心基礎

​ 倘若我們要開發一個應用程序,比如暴風音影,該軟件的一個核心業務就是播放視頻,開發者若要編寫程序完成播放視頻這個業務邏輯,必先涉及到底層硬件硬盤的基本運作(視頻文件都是先存放於硬盤中),這意味着開發者在編寫業務邏輯代碼之前,必須先編寫一個控制硬盤基本運行的控制程序,然而這僅僅只是一個開始,事實上,在編寫應用程序的業務邏輯前,需要開發者編寫出一套完整的控制程序用來控制所有硬件的基本運行(這要求開發者需要詳細瞭解計算機硬件的各種控制細節,例如我們必須把CPU裏面所有指令集都掌握一遍),如此,所有的開發者在開發程序時都必須依次開發兩種:

#1、編寫一套完整的的控制程序,用來控制硬件的基本運行,以及把複雜的硬件的操作封裝成簡單的接口
#2、基於控制程序的接口開發包含一系列業務邏輯的程序,爲了與控制程序區分,可以稱爲應用程序,以ATM這款應用程序爲例,業務邏輯有提款、轉賬、查詢餘額等

​ 綜上,對於不同公司的開發者來說,應用程序的業務邏輯各不相同,但硬件的控制程序都大致相同,爲了避免所有程序員做重複勞動,以及不用再耗費精力去了解所有硬件的運行細節,有公司專門跳出來承擔起控制程序的開發任務,這裏所說的控制程序指的就是操作系統。

​ 操作系統的功能就是幫我們把複雜的硬件的控制封裝成簡單的接口,對於開發應用程序來說只需要調用操作系統提供給我們的接口即可

插圖:惡搞圖05

計算機核心基礎

.2、系統軟件與應用軟件

硬件以上運行的都是軟件,而軟件分爲兩類:

#一、應用軟件(例如qq、word、暴風影音,我們學習python就是爲了開發應用軟件的)

#二、操作系統,操作系統應用軟件與硬件之間的一個橋樑,是協調、管理、控制計算機硬件與應用軟件資源的控制程序。

3.3、計算機系統三層結構

綜上,我們開發應用程序本質是在控制硬件,但是我們直接打交道的是操作系統,應用程序都是通過操作系統來間接地操作硬件的,所以一套完整的計算機系統分爲三層,如下

插圖:計算機系統三層結構

個非常重要的基礎概念:平臺

應用程序都是運行於操作系統之上,而操作系統則是運行於硬件之上的,所以承載應用程序的是一臺運行有操作系統的計算機,稱之爲應用程序的運行平臺,即:硬件 + 操作系統 == 平臺

插圖:平臺

計算機核心基礎

常見的平臺有:windows系統+某款硬件、linux系統+某款硬件、ubuntu+某款硬件等,我們在開發應用程序時就需要考慮到應用程序的跨平臺性,如果能開發出一款可以在任意平臺運行的應用程序,那對於開發者來說真是極大的福音。而決定應用軟件的跨平臺性的關鍵因素往往是編程語言的選擇,python恰好是一款跨平臺性語言,這也是我們學習它的原因之一。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章