1.1 從計算機到編程
馮·諾依曼體系:計算機采用二進制運算,包括控制器、 運算器、存儲器、輸入設備和輸出設備五個部分,如圖1-1所示。五個部分相互配合,執行特定的操作,即指令。
- 控制器:計算機的指揮部,管理計算機其他部分的工作,決定執行指令的順 序,控制不同部件之間的數據交流。
- 運算器:計算機中進行運算的部件。除加減乘除之類的算數運算外,還能進行與、或、非之類的邏輯運算。運算器與控制器一起構成了中央處理器(CPU,Central Processing Unit)。
- 存儲器:存儲信息的部件。記錄數據與所要執行的程序。
- 輸入設備:向計算機輸入信息的設備,如鍵盤、鼠標、攝像頭等。
- 輸出設備:計算機向外輸出信息的設備,如顯示屏、打印機、音響等。
操作系統:是運行在計算機上的一套軟件,負責管理計算機的軟硬件資源。
- 操作系統提供了一套系統調用(System Call),如圖1-2所示,規定了操作系統支持哪些操作。當調用某個系統調用時,計算機會執行對應的操作。
- 系統調用提供的功能非常基礎,有時調用起來很麻煩。操作系統因此定義一些庫函數(Library Routine), 將系統調用組合成特定的功能。
1.2 所謂的編程,是做什么的
封裝代碼:把執行特殊功能的指令打包成一個程序塊,然后給這個程序塊起個容易查詢的名字。如果需要重復使用這個程序塊,則可以簡單地通過名字調用。會消耗計算機資源。
編程范式:根據封裝代碼的不同方式,寫程序時要遵循的特定編程風格。
- 面向過程(C語言)
- 面向對象(Java語言)
- 面向函數(Lisp語言)
任何一種編程范式編寫出來的程序,最終都會翻譯成上面所述的簡單功能組合。所以編程的需求總是可以通過多種編程范式來分別實現,區別只在于這個范式的方便程度而已。由于不同的范式各有利弊,所以現代不少編程語言都支持多種編程范式,以便程序員在使用時取舍。
1.3 為什么學python
(20世紀80年代)
C語言:編寫過程需要耗費大量時間,且高級特征容易讓電腦癱瘓。
ABC語言:具備良好的可讀性和易用性,但存在需要高配置電腦、可拓展性差、不能直接進行輸入輸出、過度革新、傳播困難等問題。
Python:很多語法來自C,但又受到ABC語言的影響。
- 更易讀性:用縮進代替花括號。
- 實用性:沿襲其他語言的語法慣例。
- 可拓展型:可以引入其他人編寫的 Python文件拓展功能。可以直接引入C和C++語言編譯出的庫。
1.4 最簡單的Hello World
運行python的方式:
- 命令行:嘗試少量程序,立即看見結果。在cmd里輸入python進入,顯示提示符>>>。
- 編輯器:創建和編寫一個后綴為.py的程序文件。適用于編寫和保存量比較大的程序。
print()函數:在屏幕上打出字符。用雙/單引號標記出普通字符以免計算機混淆。打印多個變量時用逗號隔開。
注釋:一些用來解釋某一段程序的文字,也方便其他程序員了解這段程序。注釋的內容并不會被當作程序執行。
- 單行注釋:用#開頭。
- 多行注釋:用兩組三個雙/單引號。
代碼地址:https://gitee.com/sibyltui/learn_programming_from_python