我所理解的函数式编程

来源:互联网 发布:身体域纳米网络 编辑:程序博客网 时间:2024/06/15 06:12

第一次听说函数式编程应该是至少一年前的事情了,那时候也仅仅是知道有这么个东西,一点也不了解它具体是什么意思。函数式编程本身也不是什么新鲜事物,早在很久以前就已经出现了。而这些日子函数式编程变得越来越受关注,最新推出的Java1.8也加入了函数式编程的特性,于是这些天就认真了解了一下有关函数式编程的内容,这篇文章就总结一下我这几天的所学和我对函数式编程的理解。也希望其他对函数式编程有兴趣的新手同学能从这里了解到有用的信息。

接下来就步入正题吧,函数式编程,维基百科上是这么解释的:函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念。所以,这里的函数不同于我们学过的C++语言中的函数或是Java中的方法,这里函数的意思更接近于我们数学课中学过的函数。这种函数有多种好处,比如:

  1. 对于确定的输入,函数的输出也是确定的,不会收到程序运行状态的影响。并行运行也不需同步。
  2. 函数没有副作用,所有功能就是返回一个新的值,没有其他行为。尤其是不会修改外部变量的值。
  3. 这样的函数便于理解,方便开发。代码逻辑封装成了函数后,相当于给每个相对独立的程序逻辑取了个名字,于是代码具有自解释性。
  4. 函数也是变量,可以传递给其它函数或者赋值给其它变量。于是就形成了高阶函数。

举个例子,我们要计算(1 + 9) * 9 - 3的值,用函数式写法可以写成:

sub(multiply(add(1,9), 9), 3);

可见,函数式编程直接把函数传递给另一个函数,而不需要借助多余的外部变量,而且这种形式也非常易于理解。

其实计算机程序设计,归根结底还是数学的应用,最近这两天看了吴军博士的《数学之美》,使我对数学和计算机科学的联系有了更深刻的认识,更让我意识到了理论和工程实践相结合的重要性。计算机只不过是可以做计算,编程不过是让计算机按照我们的意愿去做计算,而这个意愿说到底就是所谓的数学模型,函数式编程更接近于数学语言,可以更容易的表达出这个意愿,我想最近函数式语言的兴起也正是编程领域在数学本质上的回归吧。

0 0
原创粉丝点击