原文:http://www.altdevblogaday.com/2012/04/26/functional-programming-in-c/
作者:John Carmack
-潘宏 譯
-2013年1月
-email:
popyy@netease.com
-weibo.com/panhong101
研究研究你程式碼程式庫中的一些別太簡單的函數,跟蹤它們會觸及到的各種外部狀態,以及它們會修改的各種資料。就算你沒有對代碼做任何修改,單把這些研究結果寫成注釋就讓你得到了一份不錯的文檔。如果再有某個函數可以通過渲染系統對螢幕進行更新,那麼你就可以舉手宣布代碼中都有哪些機制超出了人類的理解範圍。
下一步要做的,就是從頭思考這些函數到底怎樣工作。收集程式的輸入,然後把它們傳入一個純函數中,最後取得並處理那些結果。
調試代碼的同時,警惕狀態變化以及隱含參數,它們往往會掩蓋程式啟動並執行實際情況。
修改一些工具對象代碼,把改變對象自身的函數改成返回結果拷貝。試試給每個用到的非迭代器對象前面加上const修飾符。
參考文獻:
http://www.haskell.org/haskellwiki/Introduction
http://lisperati.com/
http://www.johndcook.com/blog/tag/functional-programming/
http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
http://channel9.msdn.com/Shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1
http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf
http://www.cs.cmu.edu/~crary/819-f09/Backus78.pdf
http://fpcomplete.com/the-downfall-of-imperative-programming/