什么是函数编程

来源:互联网 发布:淘宝宝贝描述图片素材 编辑:程序博客网 时间:2024/04/28 11:31

第一章  绪论

 

这一章主要回答有关 F# 和函数编程的一些问题。

 

什么是函数编程?

 

函数编程(FP,Functional programming)是三大编程范式中最古老的。第一个函数编程语言 IPL,是1955年发明,大约比Fortran 早一年;第二个是 LISP,1958 年发明的,比Cobol 早一年。

Fortran 和 Cobol 是命令语言,也叫过程语言。他们在科学计算、事务处理上的立刻成功,使命令语言的优势地位超过 30 年。1970 年代,出现了面向对象(OO,object-oriented)范式,随着面向对象语言的成熟,使得面对对象编程成为今天最流行的范式。

尽管强大的函数编程语言进行了连续开发,比如SML、Objective Caml(OCaml)、APL、Clean等,尤其是类函数编语言(Erlang、Lisp 和 Haskell)已有成功的应用。但是,自1950 年代以来,函数编程一直维持在学术研究阶段,直到最近。命令语言早期的商业成功奠定了它几十年的统治地位。直到企业需要解决复杂计算时,面向对象语言才逐步得到广泛接受。如今,大家终于认识到,函数编程不仅可以解决简单问题,更能解决复杂问题。

纯函数编程把所有程序视为函数的集合,函数接收参数,返回值。它不像命令语言、面向对象编程那样,无副作用,用递归代替循环迭代。函数式程序中的函数与数学上的函数非常类似,因为它们不能改变程序的状态。简单说来,标识符一旦赋值,就不再改变,函数不改变参数值,返回的结果是一个全新的值。其典型的底层实现是这样的:值一旦分配了内存中的一片区域,就不再改变,要计算结果,函数会复制一份,放在另一片区域,然后对复制区域中的值进行操作,而原来的值不受影响,还可以给其他函数使用。直到最终不需要时,值才会被舍弃(这就是垃圾回收机制的雏形)。

纯函数编程的数学基础非常优雅,因此,解决问题,也很优美、简洁。但是,无状态、递归使它在处理许多常见任务时不如其他编程范式方便。F# 最大的优势在于,可以混合使用多种范式,以你自己能用的最方便的方式来解决问题。

 

0 0
原创粉丝点击