传说中的函数式编程
Posted 不止代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传说中的函数式编程相关的知识,希望对你有一定的参考价值。
看到一个关于函数式编程(functional programming)的视频,平时也常听到这个词,总结一下。
函数式编程就是执行一些数学函数,并不局限于某种编程语言。函数是输入到输出的映射(mapping)。比如f(x)=x^2
、g(x, y) = f(x) + f(y)
、 h(x)=1 if x>0 else 0
等等。
函数f
不能修改输入值x
,即输入是不可变的(immutable),和计算机的变量很不一样。计数x=x+1
在函数式编程里是不存在的,循环for(i=0; i<10; i++)
也不行,因为它修改了循环变量i
的值。
函数式编程也叫没有变量的编程,它有其他的方式来实现计数和循坏。保证了输入的这种不可变性有什么好处呢?一是函数行为更确定,二是很适合分布式计算。
短短一行f(x)==f(x)
,可能true,可能false,还可能segfault,非常刺激,何解?两次调用f(x)
时变量x
的值可能会变,如果第一个函数把x
的内存释放了,第二个函数越界访问内存就会引发段错误(segfault)。函数式编程没变量,也无法释放内存,因此不存在这个问题,函数的行为更确定,更按套路出牌。
现在这年代,单核提速难,多核成为主流。两个核叫酷睿i3,四个核叫酷睿i7,成百上千个核叫云计算,数量一上去,如何协调就很重要了。函数式编程中的任意两个函数互不影响,一个大计算任务可以很容易地拆成小任务,这种隔离使函数可以方便地分布式运行。
以上是关于传说中的函数式编程的主要内容,如果未能解决你的问题,请参考以下文章