解決問題流行的方式有兩種。
- 想出第一步要做什麼,然後開始做、做完再想下一個。
- 是把大問題切成數個小問題一直切到夠小,然後再一個一個做。第一個 叫做命令式程式設計、第二個 叫做宣告式程式設計。第一個 想要回答「怎麼做」、第二個 想要回答「做什麼」。
第一個 是工程師做的事、第二個是設計師做的事。第一個 叫做敏捷式開發流程、第二個 叫做瀑布式開發流程。第一個 叫做 connecting the dots、第二個叫做 設計研究。第一個 叫貪婪演算法、第二個叫分治演算法。第一個 叫活在當下、第二個叫有遠見。第一個 把問題序列化、第二個把問題 心智圖化。用第一種的人想出了外掛 - 設計模式 (design pattern)。用第二種的人想出了外掛 - 狀態機和不變資料 (state machine + immutable data)。還記得大二演算法排序的作業,標準解法是先做第二個 (qsort)、然後問題變小了就接第一個 (shell sort)。各有各的使用時機,冷靜分析後我從函數式編程的信仰者回到無神論者了。第一個適合許多未知、經常變動的問題。
第二個適合有固定答案、行為可預測的問題。嗯嗯 不過當然用 react 還是比其他好 XD --- 目標努力 iterative 的 functional programming~ => 每次用第一個方法切一小塊問題,用第二個方法解。