[bssd] functional programming matters...# Programming - 葵花宝典d*a2017-04-18 07:041 楼送一个开户的cde,checking account, 100块。3926430373201997 expire 02/26/2011
g*t2017-04-18 07:042 楼我个人的浅见,functional programming在现在的算法时代还是挺重要的吧,也许会越来越重要。并发什么的我不懂。举最简单的例子如下:假如你有一列数据,有一些坏点。你想查表求查表的结果。那先填坏点,再查表还是先查表,再填坏点结果是不一样的。现在你想两个办法都实验下。如果能写成纯函数,那就是f(g(x))还有g(f(x))即可。如果是打开写在loop里,那两个办法试一下还是比较麻烦。这种例子挺多的。尤其ann很多是从ee的信号流图来的思路。
x*42017-04-18 07:043 楼想太复杂了。fp对普通人最大的好处是ref transparent,aka结果在任何环境run都是一样的。这对理解复杂系统很有帮助。【在 g****t 的大作中提到】: 我个人的浅见,functional programming在现在的算法时代还是挺重要的吧,也许会越: 来越重要。并发什么的我不懂。: 举最简单的例子如下:: 假如你有一列数据,有一些坏点。你想查表求查表的结果。: 那先填坏点,再查表: 还是先查表,再填坏点: 结果是不一样的。: 现在你想两个办法都实验下。: 如果能写成纯函数,那就是: f(g(x))还有g(f(x))即可。如果是打开写在loop里,那两个办法试一下还是比较麻烦。
h*i2017-04-18 07:044 楼我的浅见,FP与其他的编程模式区别只在小处(日常小算法的实现),大处(程序体系结构)其实没有啥区别。FP强迫程序员把局部小问题也要想清楚才下手,我个人体会,这样写出来的代码要清楚明白得多,更容易维护,对其正确性要有信心得多。这个FP的“局部需要想更多“的特征,有人喜欢,有人不喜欢,确实是个人口味问题。对FP的爱好可能与个人喜不喜欢用debugger有负相关。比如我几乎从不用debuger,觉得FP这种想清楚再写的方式很好,反正我debug也是用想的。【在 g****t 的大作中提到】: 我个人的浅见,functional programming在现在的算法时代还是挺重要的吧,也许会越: 来越重要。并发什么的我不懂。: 举最简单的例子如下:: 假如你有一列数据,有一些坏点。你想查表求查表的结果。: 那先填坏点,再查表: 还是先查表,再填坏点: 结果是不一样的。: 现在你想两个办法都实验下。: 如果能写成纯函数,那就是: f(g(x))还有g(f(x))即可。如果是打开写在loop里,那两个办法试一下还是比较麻烦。
g*t2017-04-18 07:045 楼我和你习惯有点类似。可能是当年Mathematica写的比较多。debug不太会用.“A computation is a temptation that should be resisted aslong as possible.”— J. P. BoydFP和其他语言确实没有大区别。有的任务用FP一天能多试几个办法。因为FP容易写出来composable接口干净的代码。用一般语言就不是那么方便。【在 h*i 的大作中提到】: 我的浅见,FP与其他的编程模式区别只在小处(日常小算法的实现),大处(程序体系: 结构)其实没有啥区别。: FP强迫程序员把局部小问题也要想清楚才下手,我个人体会,这样写出来的代码要清楚: 明白得多,更容易维护,对其正确性要有信心得多。这个FP的“局部需要想更多“的特: 征,有人喜欢,有人不喜欢,确实是个人口味问题。: 对FP的爱好可能与个人喜不喜欢用debugger有负相关。比如我几乎从不用debuger,觉: 得FP这种想清楚再写的方式很好,反正我debug也是用想的。
d*c2017-04-18 07:046 楼我用R的时候,因为想尽量用vectorized operation,就要求尽量用已有的函数,同时尽量避免手工写for loop。不是所有时候都能避免for loop,但有的时候确实可以避免。用已有函数实际可能还是在用循环,但是是用一个经过证明的可靠函数,作一件比较简单确定的事,相比直接去写一个复杂的for loop或者if else,这样的结构比较可靠。另外尽量从vector角度去思考,有时也是有好处的。这种方式有局限,但能用的时候好处很多。