http://www.altdevblogaday.com/2012/04/26/functional-programming-in-c/
这个在《程序员》杂志上有译文,也很不错。
functional programming is good
卡马克根据自己的实践得出的结论是,软件开发过程中的很大一部分的不足来自开发者对于自己程序将会运行于哪些可能的状态(state)认识不足,而这样的认识不足导致的问题在多线程并行环境中会被扩大化。
而过程式编程倾向于将程序中的state明显化,这样我们就更容易有充足的认识,相比而言,OO编程则很容易把state的转换给封装起来,让我们对state的控制和认识变得更难。
c++并不鼓励functional programming,但是也不禁止,而且还赋予了我们很多底层编程能力,这也是c++黑很多,但是绝大多数的高品质游戏还是由c++写的原因所在。
Pure Function
carmack定义了一个pure function,这是一个很有意义的抽象(尽管它不存在),pure function只关注传入的参数,然后返回一个或多个基于参数的结果。
并且它:
- 不维护自己的内部状态
- 不和全局数据做交互(读或者写),不做IO
- 不修改参数
- 易于重用
- 易于测试---由于不依赖很多东西,传入一个值,那么返回值是一定的
- 易于维护和理解
本文探讨了软件开发中状态管理的重要性,通过对比过程式编程与面向对象编程,强调了纯函数在提高代码质量和可维护性方面的优势。同时介绍了纯函数的特点及其在实际编程中的应用。
485

被折叠的 条评论
为什么被折叠?



