看過mooc上的闞道巨集的c++課程,感覺講語法方面基本上是照本宣科,但是談到的幾個程式思維讓人眼前一亮。
後續有新的感悟將不定期跟新。
結合自己的理解,記錄如下:
1.關於遞推 recursion 和遞迴 regression
兩者是相反的思維,recursion是已知問題n,由解決問題1開始,不斷由簡到繁一直到n。
遞迴regression是把問題轉化為問題n-1,不斷轉化一直到問題1。利用解決問題1之後的結果再解決高階問題,整個流程是先降階再回歸。
從cs的角度來說,regression 占用的記憶體更多,因為每呼叫一次自身,記憶體中的棧都要載入乙個棧幀。
但是,只要recursion 能解決的問題 regression 都能解決,反之則不然。這也是regression的優勢所在。
2.關於面向過程 process-oriented(p-o) 和物件導向 object-oriented(o-o)
先假設 程式 program = data+algorithm
p-o的實質是algorithm 模組化,data 不分離。這樣在大型工程開發時碼農可以各自為戰開發 submodule,同時資料用extern 處理。
開發的時候尚可,後期更迭修改的時候就會有問題,就是改動乙個資料需要跟著修改多個函式,牽一髮而動全身。
o-o應運而生,實質就是將全部data 和所有algorithm 都分離,然後將有關係的data和algorithm 組合在一起,相當於使用者自定義的類,在整體開發的時候,有人負責造類,有人負責用類例項化物件。
freeBSD中的一些設計思想
指導性架構設計原則 下面的指導性設計原則描述了我們的設計理念 摘自 scheifler gettys x window system 安全的設計方法 編寫安全的應用程式要帶著謹慎和略有悲觀的生活觀點。程式應該本著 最小特權 的原則執行,這樣就不會有帶著大於足夠能完成其功能的許可權的程序在執行。預先測...
Meet in the middle思想的一些應用
meet in the middle 有時候也叫作split and merge 是一種用以獲取足夠高效解決方案的靈巧的思想。和分治思想非常類似,它將問題分割成兩個部分,然後試著合併這兩個子問題的結果。好處在於通過使用一點額外的空間,你可以解決兩倍規模的原來可以解決的問題。4和問題 流行的面試問題 ...
演算法的一些思想
目錄 0.總1.乘除法慢與加減法 2.窮舉演算法思想 3.遞推演算法思想 4.遞迴演算法思想 5.分治演算法思想 6.概率演算法思想 7.貪心演算法思想並不貪婪 追求最優求解,但不一定是能找到最優解 8.試探法演算法思想是一種委婉的做法 也叫回溯法 9.迭代演算法 輾轉法 10.動態規劃 五種基本演...