054 Python程序設計思惟

1、單元開篇

  • 計算思惟與程序設計
  • 計算生態與Python語言
  • 用戶體驗與軟件產品
  • 基本的程序設計模式

2、計算思惟與程序設計

2.1 計算思惟

2.1.1 第3種人類思惟特徵

  • 邏輯思惟:推理和演繹,數學爲表明,A->B B->C A->C
  • 實證思惟:實驗和驗證,物理爲表明,引力波<-實驗
  • 計算思惟:設計和構造,計算機爲表明,漢諾塔遞歸

2.1.2 抽象和自動化

  • 計算思惟:Computational Thinking
  • 抽象問題的計算過程,利用計算機自動化求解
  • 計算思惟是基於計算機的思惟方式

2.1.3 計數求和:計算1-100的計數和

邏輯思惟(數學家高斯的玩兒法):算法

\[ S=\frac{(a_1+a_n)n}{2} \]編程

計算思惟(現代人的新玩兒法):設計模式

s = 0
for i in range(1, 101):
    s += i

2.1.4 圓周率的計算

邏輯思惟:瀏覽器

\[ \pi = \sum_{k=0}^\infty[\frac{1}{16^k}(\frac{4}{8k+1}-\frac{2}{8k+4}-\frac{1}{8k+5}-\frac{1}{8k+6})] \]安全

計算思惟:架構

054-Python程序設計思惟-01.jpg?x-oss-process=style/watermark

2.1.5 漢諾塔問題

邏輯思惟(\(2^n-1\)):模塊化

054-Python程序設計思惟-02.jpg?x-oss-process=style/watermark

計算思惟:函數

count = 0
def hanoi(n, src, dst, mid):
    … (略)
hanoi(3, "A", "C", "B")
print(count)

2.1.6 天氣預報

054-Python程序設計思惟-03.jpg?x-oss-process=style/watermark

2.1.7 量化分析

054-Python程序設計思惟-04.jpg?x-oss-process=style/watermark

2.1.8 抽象問題的計算過程,利用計算機自動化求解

  • 計算思惟基於計算機強大的算力及海量數據
  • 抽象計算過程,關注設計和構造,而非因果
  • 以計算機程序設計爲實現的主要手段

2.2 計算思惟與程序設計

編程是將計算思惟變成現實的手段學習

054-Python程序設計思惟-05.jpg?x-oss-process=style/watermark

3、計算生態與Python語言

3.1 計算生態

從開源運動提及…

054-Python程序設計思惟-06.jpg?x-oss-process=style/watermark

開源生態逐步創建

  • 1991, Linus Torvalds發佈了Linux內核
  • 1998, 網景瀏覽器開源,產生了Mozilla

054-Python程序設計思惟-07.jpg?x-oss-process=style/watermark

開源思想深刻演化和發展,造成了計算生態

計算生態以開源項目爲組織形式,充分利用「共識原則」和「社會利他」組織人員,在競爭發展、相互依存和迅速更迭中完成信息技術的更新換代,造成了技術的自我演化路徑。

054-Python程序設計思惟-08.jpg?x-oss-process=style/watermark

沒有頂層設計、以功能爲單位、具有三個特色

054-Python程序設計思惟-09.jpg?x-oss-process=style/watermark

3.2 計算生態與Python語言

  • 以開源項目爲表明的大量第三方庫:Python語言提供 >13萬個第三方庫
  • 庫的建設通過野蠻生長和天然選擇:同一個功能,Python語言2個以上第三方庫
  • 庫之間相互關聯使用,依存發展:Python庫間普遍聯繫,逐級封裝、
  • 社區龐大,新技術更迭迅速:AlphaGo深度學習算法採用Python語言開源

API != 生態

3.3 計算生態的價值

創新:跟隨創新、集成創新、原始創新

  • 加速科技類應用創新的重要支撐
  • 發展科技產品商業價值的重要模式
  • 國家科技體系安全和穩固的基礎

3.4 計算生態的運用

刀耕火種 -> 站在巨人的肩膀上

  • 編程的起點不是算法而是系統
  • 編程如同搭積木,利用計算生態爲主要模式
  • 編程的目標是快速解決問題

4、用戶體驗與軟件產品

4.1 用戶體驗

實現功能 -> 關注體驗

  • 用戶體驗指用戶對產品創建的主觀感覺和認識
  • 關心功能實現,更要關心用戶體驗,才能作出好產品
  • 編程只是手段,不是目的,程序最終爲人類服務

4.2 提升用戶體驗的方法

4.2.1 方法1:進度展現

  • 若是程序須要計算時間,可能產生等待,請增長進度展現
  • 若是程序有若干步驟,須要提示用戶,請增長進度展現
  • 若是程序可能存在大量次數的循環,請增長進度展現

4.2.2 方法2:異常處理

  • 當得到用戶輸入,對合規性須要檢查,須要異常處理
  • 當讀寫文件時,對結果進行判斷,須要異常處理
  • 當進行輸入輸出時,對運算結果進行判斷,須要異常處理

4.2.3 其餘類方法

  • 打印輸出:特定位置,輸出程序運行的過程信息
  • 日誌文件:對程序異常及用戶使用進行按期記錄
  • 幫助信息:給用戶多種方式提供幫助信息

軟件程序 -> 軟件產品

用戶體驗是程序到產品的關鍵環節

5、基本的程序設計模式

5.1 從IPO開始…

  • I:Input 輸入,程序的輸入
  • P:Process 處理,程序的主要邏輯
  • O:Output 輸出,程序的輸出

  • 肯定IPO:明確計算部分及功能邊界
  • 編寫程序:將計算求解的設計變成現實
  • 調試程序:確保程序按照正確邏輯可以正確運行

5.2 自頂向下設計

  • I:Input 輸入,程序的輸入
  • P:Process 處理,程序的主要邏輯
  • O:Output 輸出,程序的輸出

5.3 模塊化設計

  • 經過函數或對象封裝將程序劃分爲模塊及模塊間的表達
  • 具體包括:主程序、子程序和子程序間關係
  • 分而治之:一種分而治之、分層抽象、體系化的設計思想

  • 緊耦合:兩個部分之間交流不少,沒法獨立存在
  • 鬆耦合:兩個部分之間交流較少,能夠獨立存在
  • 模塊內部緊耦合、模塊之間鬆耦合

5.4 配置化設計

054-Python程序設計思惟-10.jpg?x-oss-process=style/watermark

  • 引擎+配置:程序執行和配置分離,將可選參數配置化
  • 將程序開發變成配置文件編寫,擴展功能而不修改程序
  • 關鍵在於接口設計,清晰明瞭、靈活可擴展

5.5 應用開發的四個步驟

從應用需求到軟件產品

054-Python程序設計思惟-11.jpg?x-oss-process=style/watermark

  • 1 產品定義:對應用需求充分理解和明肯定義:產品定義,而不只是功能定義,要考慮商業模式
  • 2 系統架構:以系統方式思考產品的技術實現:系統架構,關注數據流、模塊化、體系架構
  • 3 設計與實現:結合架構完成關鍵設計及系統實現:結合可擴展性、靈活性等進行設計優化
  • 4 用戶體驗:從用戶角度思考應用效果:用戶至上,體驗優先,以用戶爲中心

6、單元小結

  • 計算思惟:抽象計算過程和自動化執行
  • 計算生態:競爭發展、相互依存、快速更迭
  • 用戶體驗:進度展現、異常處理等
  • IPO、自頂向下、模塊化、配置化、應用開發的四個步驟
相關文章
相關標籤/搜索