【一】程式設計和程式語言是什麼
【1】什麼是程式設計
- 程式設計就是將人類語言轉換為計算機能夠識別的語言
【2】什麼是程式語言
- 程式語言就是人與計算機之間的語言
【3】為什麼要出現程式語言?
- 最根本的原因就是計算機無法識別人類語言
【4】為什麼要程式設計?
- 程式設計就是為了讓計算機能夠理解人類所下達的指令,讓計算機自動完成任務
【二】計算機組成原理
【1】什麼是計算機
- 計算機就是通電的機器
- 能夠批次處理人類指令和資料的智慧裝置
【2】為什麼要發明計算機
- 為了可以代替人類24小時不間斷工作
- 節省勞動成本和增加效益
【3】計算機的五大組成部分
(1)控制器
- 相當於人類的大腦,互相協調工作,完成指定任務
(2)運算器
-
相當於我們大腦進行的邏輯運算和數字運算的功能
-
邏輯運算包括與或非
-
數字運算包括加減乘除
-
(3)儲存器
- 可分為長期儲存和短期儲存
[1]記憶體
- 和我們短期記憶一樣是臨時儲存資料的
- 斷電重啟資料就會消失
[2]外存
- 硬碟
- 機械硬碟
- 可以儲存大量資料,但是讀取速度比較慢,並且價格很低
- 固態硬碟
- 可以儲存大量的資料,但是讀取速度很快,價格高
- 機械硬碟
- 可以永續性的儲存資料,並且斷電不會消失
(4)輸入裝置
- 向電腦輸入內容的裝置
- 滑鼠、鍵盤、麥克風
(5)輸出裝置
- 由電腦向我們展示的平臺和裝置
- 投影儀、顯示器
(6)小結
- CPU是人的大腦,複雜控制和運算
- 記憶體是人的記憶,復責臨時儲存
- 硬碟是人的筆記本,負責永久儲存
- 輸入裝置是人的耳朵或眼睛,負責接收外部的資訊存入記憶體
- 輸出裝置是人的臉部或者屁股,負責經過處理後輸出結果
- 以上所有的裝置都透過匯流排連線,匯流排相當於人的神經
【4】計算機的三大核心硬體
(1)CPU
- 控制器 + 運算器 = CPU
- 中央控制處理器
(2)記憶體
- 臨時儲存資料
- 雖然斷電資料會消失,資料安全性低,但是讀取速度極快
(3)硬碟
- 持久化儲存資料的地方
- 雖然斷電資料不消失,但資料安全性高,只要硬碟不損壞,就不會造成資料丟失,對比記憶體,讀取速度慢
【5】程式的執行過程
-
資料準備
- 想用QQ,應該要下載QQ的應用程式
- QQ的資料夾,你會看到很多的檔案資料,這些資料就是QQ的啟動程式
-
資料讀取
- 從硬碟中將QQ的資料讀取到記憶體中,進行臨時儲存
- 雙擊QQ的圖示,出現QQ登入介面,這個操作就是資料從硬碟中讀取到記憶體中的過程
-
資料寫入
-
輸入賬號和密碼,點選登陸
-
進入到QQ的過程就是CPU從記憶體中將資料讀取出來進行排程和運算的過程
-
-
關閉QQ,CPU負責排程當前程式進行殺死,殺死過後要釋放當前的記憶體資源
- 點選關閉QQ,它會慢慢的消失,這個時候CPU將QQ的資料儲存到記憶體中,記憶體中的資料再寫入到硬碟中,進行持久化儲存
- 最後QQ完全退出
【三】作業系統的概念
【1】作業系統的由來
- 出現的目的就是為了簡化我們的硬體操作
- 在最開始的時候,電腦還只是一堆硬體拼湊起來的
- 隨著時代的發展,我們想要簡化一系列操作指令,我們只能是找到這些指令的代替品
【2】作業系統
- 作業系統其實就是在一堆硬體的基礎上實現功能和介面的封裝,我們可以透過這些介面和程式進行硬體的排程
【3】開發一套作業系統
- 比如開發暴風影音
- 核心業務就是播放影片,輸出音訊
- 你在公司裡,有這個需求,要完成這個需求,將這個功能開發一套
- 將影片檔案資料從硬碟中讀取出來放到記憶體中,再經過播放器進行轉碼
- 進行音影片輸出
- 你的同桌在另一個公司,也需要開發這麼一套功能
- 他需要從零開發
- 所有開發者遵循共同的一套規範
- 可以共同研發一個功能和介面
- 有一個鎖,但是兩人都有相同的鑰匙副本
- 我們都遵循一個規範
- 核心業務就是播放影片,輸出音訊做出一個公共的
- 可以共同研發一個功能和介面
- 以後誰需要這個功能誰就來直接用
【4】常見的作業系統
(1)Windows平臺
- Windows7
- Windowsxp
- Windows8
- Windows10
- Windows11
(2)Mac平臺
- iOS系統
- Intel
(3)Linux
- centos
- 藍鯨
(4)Andoraid
(5)iOS
(6)鴻蒙
【5】系統軟體和操作軟體的區別
(1)什麼是系統軟體
- 系統軟體就是建立在硬體上的軟體,負責排程整個硬體
- wind、macOS、Linux
- 功能包括排程計算機服務、讀取檔案、程序管理...
(2)什麼是操作軟體
[1]系統軟體
- 系統自帶的服務,例如網路卡服務、檔案管理器
[2]應用軟體
- 就是我們基於Windows系統之上按照的其他軟體
- QQ、微信、騰訊影片、QQ音樂...
【6】計算機系統的三層架構
- 底層就是硬體層
- 所有的操作都是基於硬體的
- 中間層就是作業系統層
- 所有硬體排程服務都是基於作業系統的
- 最上面是應用層
- 進行工作和開發的軟體層
【7】平臺的概念
- 平臺 = 你的作業系統 + 你的硬體
- Linux平臺
- 用在伺服器上
- 只需要一個CPU + 顯示卡 + 記憶體 + 硬碟
- Windows平臺
- Windows系統 + CPU +...
- MacOS平臺
- macOS + Mac相關硬體
- Linux平臺
【四】為什麼要學習Python
-
跨平臺性非常高,學習成本低
-
Windows上也能用、Linux上也能用
- 不需要電腦配置高
-
Java就需要Java虛擬機器
【五】程式語言
【1】程式語言的分類
- 程式語言的發展史,在最開始的程式設計絕不是現在所學的Python
【2】機器語言
(1)什麼是機器語言
- 機器語言就是計算機可以理解的語言
- 由於計算機基於點工作,點又分為高低電頻,0為低,1為高
- 我們可以控制高低電頻的變化組成一系列的指令去操作我們的系統硬體
- 機器語言因為他能直接操作計算機硬體,所以他是最低階的計算機語言
(2)機器指令
- 控制高低電頻的變化組成一系列的指令就叫機器指令,能控制電腦硬體
(3)如何寫機器指令
- 首先必須記住計算機的全部指令及核心程式碼的含義
- 在編寫機器指令程式的時候需要自己處理每一條資料,以及資料隨時可能會發生的意外,非常的繁瑣且耗費精力
(4)機器語言的優缺點
-
優點
- 執行效率高
- 可以直接操作計算機底層硬體
- 執行效率高
-
缺點
-
開發效率低
- 學習成本高,開發效率慢
-
跨平臺性很差
- 更換系統硬體就會導致機器指令失效
底層單位資料的換算 # 00000001 表示1位元組,有256中排列方式,從0到255 #八個位元組表示一個 bytes # 8位元組 = 1bytes # 1024 bytes = 1 KB # 1024 KB = 1 MB # 1024 MB = 1 GB # 1024 GB = 1 TB
-
【3】組合語言
- 組合語言仍然可以直接操作底層硬體,但是美國人可以用一個字母或者一串字母來宣告這串機器指令代表的含義
- 但是對比與機器語言來說,組合語言就是一種進步,一定程度上降低了開發成本
(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)組合語言的優缺點
- 優點
- 執行效率高
- 直接操作計算機底層硬體
- 操作靈活
- 簡化了一些機器指令可以讓我們快速實現程式碼程式設計
- 可執行檔案很小
- 執行效率高
- 缺點
- 開發效率低
- 仍然需要記住很多指令集
- 複雜度很高
- 一串程式碼可能會用到很多指令集
- 跨平臺性很差
- 直接操作計算機底層硬體
- 開發效率低
【4】高階語言
(1)什麼是高階語言
- 高階語言從人類的角度出發,用人的思維將人類的語言轉換為計算機可以識別的語言
- 可以透過人類的指令實現操作計算機等硬體
- 不需要考慮底層硬體,直接作業系統
- 高階語言更貼近人類
(2)高階語言的分類
- 按照編譯方式分為兩類
- 編譯型語言
- 解釋型語言
(3)編譯型語言
[1]什麼是編譯型語言
- 編譯型語言就是將原始碼一次性翻譯成目的碼,然後生成一個可執行檔案
- 下次執行只需執行翻譯後的檔案
- 如果覺得程式碼需要修改和完善,修改程式碼以後就需要重新編譯
[2]優缺點
- 優點
- 一次編譯處處執行,只要編譯一次,以後可以直接用,效率高
- 缺點
- 修改後需要重新編譯
- 跨平臺性很差
[3]編譯型語言的代表
- C、C++、Java
(4)解釋型語言
[1]什麼是解釋型語言
- 解釋型語言就是在執行程式碼的過程中,不是一次性編譯而是用到哪就編譯到哪
[2]解釋型語言的優缺點
- 優點
- 不需要改動後再編譯,開發效率提高了
- 跨平臺性很強
- 缺點
- 執行效率變慢了
[3]編譯語言代表
- GO、Python
【5】各種開發語言對比
(1)執行效率
- 機器語言
- 組合語言
- 高階語言
- 編譯型
- 解釋型
(2)開發效率
- 高階語言
- 編譯型
- 解釋型
- 組合語言
- 機器語言
(3)跨平臺型
- 高階語言
- 編譯型
- 解釋型
- 組合語言
- 機器語言
【六】Python語言介紹
【1】創始人
- 吉多·範羅蘇姆(Guido van Rossum)
【2】名字的由來
-
Python這個名字,來自Guido所摯愛的電視劇《Monty Python’s Flying Circus》,他希望這個新的叫做Python的語言,能符合他的理想:
-
創造一種C和shell之間,語法能夠像shell一樣簡潔,易學易用、可擴充性強,同時兼顧C的強大功能。
【3】全球語言排行榜
https://www.tiobe.com/tiobe-index/
【4】Python語言的應用領域
- 人工智慧、資料分析、爬蟲、金融量化、雲端計算、WEB開發、自動化運維/測試、遊戲開發、網路服務、影像處理等眾多領域。
- 影像處理比如人臉識別
- 資料分析
【補充】Python全棧開發可從事方向 - Chimengmeng - 部落格園 (cnblogs.com)
【5】國內大廠都在用
- 目前業內幾乎所有大中型網際網路企業都在使用Python
- Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。
【6】Python直譯器的發展史
-
1989年,Guido開始寫Python語言的編譯器
-
1991年,第一個Python編譯器誕生
- 他是用C語言實現的,並能夠呼叫C語言的庫檔案
- 從一出生,Python已經具有了:類,函式,異常處理,包含表和詞典在內的核心資料型別,以及模組為基礎的擴充系統
-
Python 2.7 - July 3, 2010
-
Python 3.6 - 2016-12-23 釋出python3.6.0版
-
目前使用Python3.10版本,使用最新版本的直譯器可能會存在不穩定的bug
【7】Python的直譯器的種類
(1)Cpython直譯器
- 基於C語言開發的直譯器版本
- 我們學習使用的直譯器就是基於C語言開發出來的CPython直譯器
- 底層原始碼都是C語言,如果從Python程式碼看原始碼看不到C程式碼
(2)jpython
- 基於Java寫的Python直譯器,沒人用
(3)ipython
- 可以進行互動的直譯器版本呢
【七】Python直譯器安裝(Windows)
【1】訪問Python官網
https://www.python.org/
【2】選擇Windows系統
【3】搜尋指定版本
- Windows系統
- Ctrl + f
- macOS
- command + f
【4】安裝直譯器
(1)雙擊安裝程式
(2)自定義安裝位置(不要放在C盤)
【八】多版本直譯器共存
【1】方法1
(1)檢視電腦環境變數
(2)使用者變數
- 檢視使用者變數,如果有Python就刪除
(3)系統變數
- 需要使用哪一個版本的Python直譯器就將哪一個的環境變數上移並儲存
- 這種方法雖然可行,但是很麻煩
【2】方法2
- 將原本的Python直譯器快捷方式複製一份成副本
- 修改副本的名稱,改成指定版本的直譯器
- 系統環境變數誰在上面,就會先觸發誰
【九】書寫Python程式碼
【1】直接在命令列書寫程式碼
- win + r,輸入cmd調出終端,輸入Python進入直譯器環境
- 直接輸入程式碼
- 在終端輸入程式碼,無法美化程式碼樣式看起來很複雜且終端關閉程式碼消失,只是臨時的(不推薦使用,用於測試)
【2】藉助檔案
- 在桌面上建立一個TXT檔案
- 書寫Python程式碼
- 將檔案字尾擴充名改成py
- 執行Python程式碼需要在終端輸入Python + py檔案路徑
【3】使用編輯器
- pycharm、vscode
【4】Python程式碼執行順序及流程
- 讀取應用程式並執行的流程
- 寫了一個帶有python程式碼的檔案儲存到硬碟
- 首先要將檔案裡的內容讀取到記憶體中
- CPU需要將資料從記憶體讀取到CPU,CPU去排程執行
- 在這個過程中需要用到Python直譯器
- 去找Python直譯器
- 找到了直譯器
- 呼叫直譯器執行程式碼
【十】安裝pycharm
【1】訪問官網
https://www.jetbrains.com.cn/
【2】下載
【3】安裝
-
安裝時不要裝在C盤
-
全選/選jetbrains
-
因為需要付費,需要部分科技