2015年11月20日 星期五

程式設計法與人生 (Programming Paradigm and Life)

解決問題流行的方式有兩種。
  1. 想出第一步要做什麼,然後開始做、做完再想下一個。
  2. 是把大問題切成數個小問題一直切到夠小,然後再一個一個做。
第一個 叫做命令式程式設計、第二個 叫做宣告式程式設計。
第一個 想要回答「怎麼做」、第二個 想要回答「做什麼」。
第一個 是工程師做的事、第二個是設計師做的事。
第一個 叫做敏捷式開發流程、第二個 叫做瀑布式開發流程。
第一個 叫做 connecting the dots、第二個叫做 設計研究。
第一個 叫貪婪演算法、第二個叫分治演算法。
第一個 叫活在當下、第二個叫有遠見。
第一個 把問題序列化、第二個把問題 心智圖化。

用第一種的人想出了外掛 - 設計模式 (design pattern)
用第二種的人想出了外掛 - 狀態機和不變資料 (state machine + immutable data)

還記得大二演算法排序的作業,標準解法是先做第二個 (qsort)、然後問題變小了就接第一個 (shell sort)

各有各的使用時機,冷靜分析後我從函數式編程的信仰者回到無神論者了。
第一個適合許多未知、經常變動的問題。
第二個適合有固定答案、行為可預測的問題。

嗯嗯 不過當然用 react 還是比其他好 XD
---
目標努力 iterative 的 functional programming~ 
=> 每次用第一個方法切一小塊問題,用第二個方法解。

沒有留言:

張貼留言