【一】程式設計和程式語言是什麼
【1】什麼是程式設計
- 程式設計其實就是將人類的語言轉換為計算機能識別的語言
【2】什麼是程式語言
- 人和人之間都會進行交流
- 人和人之間交流的媒介就是語言
- 程式語言就是人與計算機之間進行交流的語言
【3】為什麼要出現程式語言
- 最根本的原因就是計算機無法識別人類的語言
- 於是大家光絲記憶就開發了計算機能識別的語言
【4】為什麼要做程式設計
- 程式設計就是為了讓計算機能夠理解人類的所下達的指定,然後讓計算機實現自動完成任務的功能
- 在奴隸社會的時候,奴隸主會勞役下面的努力
- 人是需要吃飯和喝水的
【二】計算機的組成原理
【1】計算機的五大組成部分
(1)控制器
- 相當於人類的大腦,相互協調工作,完成任務
(2)運算器
- 相當於我們大腦進行的邏輯運算和數字運算的功能
- 邏輯運算包括是或非
- 數字運算包括加減乘除
(3)儲存器
- 人類的記憶存在與大腦中,海馬體
[1]記憶體
- 和我們短期記憶一樣是臨時儲存資料的
- 斷電重啟資料就消失了
[2]外存
-
硬碟
- 機械硬碟
- 可以儲存大量的資料,但是讀取速度比較慢,並且價格很低
- 固態硬碟
- 可以儲存大量的資料,但是讀取速度會非常快,價格太高了
- 機械硬碟
-
可以永續性的儲存資料,並且斷電不會消失
(4)輸入裝置
- 滑鼠鍵盤、麥克風、手寫筆 ....
(5)輸出裝置
- 投影儀、顯示器 ...
(6)總結
- 控制器相當於人類的大腦 控制去全身和計算
- 記憶體像是人的記憶 臨時儲存
- 硬碟像是人的筆記本 永久儲存
- 輸入裝置像是人的眼睛 耳朵 嘴巴 接受外部的資訊存入記憶體
- 輸出裝置像是人的表情 反饋結果
(7)程式的執行過程
- 資料準備
- 資料讀取
- 資料寫入
- 資料關閉
【2】計算機的主要三大核心硬體
(1)CPU
- 控制器 + 運算器 = CPU
- 中央控制處理器
- 控制整個電腦的排程和運算的
(2)記憶體
- 臨時儲存資料的地方
- 雖然斷電資料消失,資料安全性低,但是讀取速度極快
(3)硬碟
- 持久化儲存資料的地方
- 雖然斷電資料不消失,但是資料安全性高,只要你的硬碟不發生損壞,就不會造成資料的丟失。讀取速度慢
【三】作業系統
【1】作業系統的由來
-
出現的目的就是為了簡化我們的硬體操作
- 在最開始的時候,電腦就是一大堆硬體拼湊在一起
-
隨著時代的發展,我們想要簡化一系列操作指令,我們只能是找到這些指令的替代品
【2】作業系統
- 作業系統就是在硬體的基礎上實現功能和介面的封裝,我們可以透過這些介面和程式進行硬體的排程
【3】作業系統的開發
- 所有開發者遵循共同的一套規範
- 我們共同研發出一個功能和介面
- 有一個鎖但是我們都有鑰匙的副本
- 我們都遵循一個規範
- 核心業務就是播放影片,輸出音訊做成一個公共的
- 我們共同研發出一個功能和介面
- 下次誰需要這個功能誰就來直接拿著用
【4】常見的作業系統
(1)Windows平臺
- Window7
- Windowxp
- Window 8
- Window 10
- Window 11
(2)Mac平臺
- IOS系統
- intel
(3)Linux平臺
- centos
- 藍鯨
(4)Andoraid
【5】什麼是系統軟體什麼是操作軟體
(1)什麼是系統軟體
- 系統軟體是就是建立在硬體至上的軟體,負責排程整個硬體
- Window、MacOS、Linux
- 功能包括排程計算機服務,讀取檔案,程序管理 ...
(2)什麼是操作軟體
[1]系統軟體
- 系統自帶的服務 網路卡服務、檔案管理器
[2]應用軟體
- 就是我們基於Window系統至上安裝的其他軟體
- QQ、微信、QQ音樂
【6】計算機系統的三層架構
- 底層就是硬體層
- 所有的操作都是基於硬體的
- 中間層就是作業系統層
- 所有的硬體排程服務都是基於作業系統的
- 最上面是應用層
- 進行工作和開發的軟體層
【7】平臺
-
平臺就是你的作業系統 + 你的硬體
-
Window平臺
- Window系統 + CPU + ...
-
MacOS平臺
- macOS + Mac相關硬體
【四】程式語言
【1】機器語言
(1)什麼是機器語言
- 機器語言就是計算機可以理解的語言,操作計算機的系統硬體
- 我們可以控制高低電頻的變化組成一系列的指定去操作我們的系統硬體
(2)機器指令
- 控制高低電頻的變化組成一系列的指令就叫做機器語言 能控制電腦硬體
(3)怎麼寫機器指令
- 首先你得必須記住計算機的全部指令及核心程式碼的含義
- 在編寫機器指令程式的時候需要自己處理每一條資料,以及資料隨時可可能會發生的意外情況
- 一般發生在源頭廠家中,原頭廠家調控硬體內部裝置的時候會用得到
(4)機器語言的例子
'''指令部份的示例'''
0000 代表 載入(LOAD)
0001 代表 儲存(STORE)
...
LOAD 0000 # 載入暫存器A
STORE 0001 # 儲存到暫存器B
'''暫存器部份的示例'''
0000 代表暫存器 A
0001 代表暫存器 B
...
'''儲存器部份的示例'''
000000000000 代表地址為 0 的儲存器
000000000001 代表地址為 1 的儲存器
000000010000 代表地址為 16 的儲存器
100000000000 代表地址為 2^11 的儲存器
(5)機器語言的優缺點
- 優點
- 執行效率高
- 可以直接操作計算機的底層硬體
- 執行效率高
- 缺點
- 開發效率低
- 學習成本高,開發效率慢
- 跨平臺性很差
- 所以更換系統硬體就會導致機器指令失效
- 理解原碼、反碼、補碼、位運算( & | )
- 開發效率低
底層單位資料的換算
# 00000001 表示1位元組,有256種排列方式,從0到255。
# 八個位元組表示一個 bytes
# 8 位元組 = 1 bytes
# 1024 bytes = 1 kB
# 1024 kb = 1 MB
# 1024 mb = 1GB
# 1024 GB = 1 TB
# 1024 TB = 1 ZB
【2】組合語言
- 組合語言仍然可以直接操作底層硬體,但是美國人可以用一個字母或者一串字母來宣告這串機器指令代表的含義
- 但是對比與機器語言來書,組合語言就是一種進步,一定程度上降低了開發成本
(1)什麼是組合語言
- 組合語言其實就是用一個英文字母或者一串單詞來代表機器語言的語言
(2)組合語言示例
; hello.asm
section .data ; 資料段宣告
msg db "Hello, world!", 0xA ; 要輸出的字串
len equ $ - msg ; 字串長度
section .text ; 程式碼段宣告
global _start ; 指定入口函式
_start: ; 在螢幕上顯示一個字串
mov edx, len ; 引數三:字串長度
mov ecx, msg ; 引數二:要顯示的字串
mov ebx, 1 ; 引數一:檔案描述符(stdout)
mov eax, 4 ; 系統呼叫號(sys_write)
int 0x80 ; 呼叫核心功能
; 退出程式
mov ebx, 0 ; 引數一:退出程式碼
mov eax, 1 ; 系統呼叫號(sys_exit)
int 0x80 ; 呼叫核心功能
(3)組合語言的優缺點
- 優點
- 執行效率高
- 直接操作計算機底層硬體
- 操作靈活
- 簡化了一些機器指令可以讓我們快速實現程式碼程式設計
- 可執行檔案很小
- 執行效率高
- 缺點
- 開發效率低
- 仍然需要記住很多指令集
- 複雜度很高
- 一串程式碼可能會用到很多指令集
- 跨平臺性很差
- 直接操作計算機底層硬體
- 開發效率低
【3】高階語言
(1)什麼是高階語言
- 高階語言就是從人類的角度出發,用人的思維將人的語言轉換為計算機可以識別的語言
- 可以透過人類的指令實現操作計算機等硬體
- 我們不需要考慮底層硬體而是直接作業系統
- 更貼近與人類
(2)高階語言的分類
- 按照編譯方式分為兩類
- 編譯型語言
- 解釋型語言
(3)編譯型語言
[1]什麼是編譯型語言
-
編譯型語言就是將原始碼一次性翻譯成目的碼,然後生成一個可執行檔案
- 下次執行程式碼只需要執行 翻譯過後的檔案即可
-
如果我覺得程式碼中某些程式碼需要修改和完善,修改完程式碼以後就需要再重新編譯
-
比兔說我們拿到一篇英文文獻
- 一次性將整篇文獻翻譯成漢語,直接使用
- 下次如果不改動,直接使用翻譯稿即可
- 一旦發生改動。整篇文章重新翻譯
- 一次性將整篇文獻翻譯成漢語,直接使用
[2]優缺點
- 優點:
- 一次編譯處處執行,只需要編譯一次,下一次可以直接拿過來用,效率很高
- 缺點
- 但是修改過後需要重新編譯
- 跨平臺性很差
- Window系統上編譯出來的可執行檔案
[3]編譯型語言的代表
- C、C++、C#、Java
(4)解釋型語言
[1]什麼是解釋型語言
-
解釋性語言就是在執行程式碼的過程中,不是一次性變異而是用到哪裡就編譯到哪裡
-
一點一點的進行編譯後執行
-
比兔說我們拿到一篇英文文獻
- 翻譯一段就用一段,用到哪就翻譯到哪
- 效率就變低了
[2]解釋型語言的優缺點
- 優點
- 不需要改動後再編譯,開發效率提高了
- 跨平臺性很強
- 缺點
- 執行效率變慢了
[3]編譯語言代表
- Go、Python
【4】開發語言對比
(1)執行效率
- 機器語言
- 組合語言
- 高階語言
- 編譯型
- 解釋型
(2)開發效率
- 高階語言
- 解釋型
- 編譯型
- 組合語言
- 機器語言
(3)跨平臺性
- 高階語言
- 解釋型
- 編譯型
- 組合語言
- 機器語言
【五】Python語言
【1】Python語言的應用領域
- 人工智慧、資料分析、爬蟲、金融量化、雲端計算、WEB開發、自動化運維/測試、遊戲開發、網路服務、影像處理等眾多領域。
- 影像處理比如人臉識別
- 資料分析
- 【補充】Python全棧開發可從事方向 - Chimengmeng - 部落格園 (cnblogs.com)
【2】Python的直譯器的種類
(1)Cpython直譯器
-
基於C語言開發的直譯器版本
-
我們學習使用的直譯器就是基於C語言開發出來的CPython直譯器
-
底層原始碼都是C語言,如果從Python程式碼開原始碼,看不到C程式碼
-
從Python直譯器的官網 GitHub
(2)jpython
- 基於Java寫的Python直譯器,沒人用
(3)ipython
- 可以進行互動的直譯器版本呢