第一章主旨思想
利用程序(procedure)來表達抽象的概念
- 利用簡單的思想整合成一個復合的概念.
- 清晰地分析出程序的邏輯,把一個復雜的程序拆分成獨立的部分.
- 從具體存在的(類似的)程序中提取出一個通用的概念并寫成程序.
程序的成分(elements)
程序有自己的名字(variable, argument)和操作符號(operator),除此之外就是條件語句,利用這三個部分有機結合就可以寫出一個完整的程序.
程序運行(evaluate)的過程
程序運行的過程最直觀的表現(xiàn)我覺得是使用程序框圖,這里有兩個結構需要留意,一個是回歸結構(recursive),一個是迭代結構(iteration).
這兩個結構牽扯出來的就是空間復雜度(growth of space)和步驟復雜度(growth of steps)的計算方法.
而對于寫程序而言,這兩種結構通瞅诳澹可以互換,回歸模型相對來說在空間復雜度上會更高一點. 一般對于涉及到回歸過程(recursive procedure)的程序,回歸過程(recursive process)會相對更容易實現(xiàn),因為我覺得相對比較直觀,然后通過一些轉(zhuǎn)換,可以講回歸過程轉(zhuǎn)變成迭代過程.
回歸過程
對于寫回歸模型我總結了一些自己的心得,在做題的時候找到一個通用思想,簡單來說就是把題目劃分成三個部分
- 可以重復利用的部分,或者說是循環(huán)引用的部分.
- 循環(huán)到底的底線情況,也就是最最最后一層循環(huán)的情況.
- 循環(huán)結果之間的關系,他們是如何整合的?相加亦或是別的.
迭代過程
迭代過程主要是如何將一個循環(huán)過程進行轉(zhuǎn)換,從而使用迭代模型.
這里的技巧在于引進一個可以保存結果的輔助函數(shù),輔助函數(shù)可以相對減少空間復雜度.
一般來說輔助函數(shù)和回歸過程的參數(shù)一致,但是多了一個記錄結果的參數(shù),有時還會有輔助計數(shù)器.
在思想上,回歸模型通常從起始層(迭代的最初層)開始,一步步直到問題的邊界情況出現(xiàn),然后再沿著模型的回歸邏輯,一步步回溯計算.
而迭代模型通常計算順序是和回歸模型相反,從邊界開始計算,一直到迭代最外層(表達不好這個,用詞還需要斟酌).
使用抽象概念編程(編寫抽象程序)
利用抽象概念編程主要是講程序作為參數(shù)帶入另一個程序,而且返回值還可以是其他的程序,利用Python的表達方式應該是這樣的.
主程序(參數(shù)程序1, 參數(shù)程序2)-->返回程序3
程序既可以作為參數(shù),也可以作為返回值.
lambda
lambda在抽象概念的應用上是一個方便的存在,lambda用于書寫匿名函數(shù),可以減少代碼量.但是需要注意的是在需要重復調(diào)用的程序上,lambda是無能為力的,這個時候要老老實實的寫出一個帶有名字的函數(shù)(procedure).例題1.46就是一個很好的例子.
第一章總結完了,我的github