什么是函数式编程?(functional programming?)

函数式编程是一种编程范式,其中计算的基础是表达式的求值。一些特点是使用高阶函数、引用透明和惰性计算。编程风格的优点包括程序易于阅读、非常可靠并且可以分解为组件。缺点是计算速度慢,并且样式和语法与其他常见编程样式完全不同。与计算机科学专业人员相比,函数式编程风格更受学术界的欢迎。...

函数式编程是一种编程范式,其中计算的基础是表达式的求值。一些特点是使用高阶函数、引用透明和惰性计算。编程风格的优点包括程序易于阅读、非常可靠并且可以分解为组件。缺点是计算速度慢,并且样式和语法与其他常见编程样式完全不同。与计算机科学专业人员相比,函数式编程风格更受学术界的欢迎。

Functional programming is identified by its clear inputs and outputs.

顾名思义,函数是这种编程范式的基本组成部分。函数可以嵌套在其他函数中,称为高阶函数,每个高阶函数可以分解为易于理解和调试的构建块函数。一些高阶函数的例子有Map和Nest。函数映射采用函数F和变量列表,例如(x,y,z),并在列表中给出结果:映射[F,(x,y,z)]=(F(x),F(y),F(z))。Nest接受函数F、变量x和迭代次数:Nest[F,x,3]=F(F(F(x))。

纯函数式编程在不改变变量状态的情况下接受输入并返回输出。换言之,具有相同输入的函数将始终给出相同的结果,而不管之前在程序中发生了什么。这称为引用透明性。由于数学函数是引用透明的,函数编程对许多数学家、工程师和科学家来说是直观的。

函数的引用透明性意味着函数求值的顺序并不重要。因此,在需要函数的结果之前,不需要对函数进行求值,这称为延迟求值。这与命令式编程完全不同,命令式编程是一个程序从第一个命令开始,一直运行到最后一个命令。惰性评估跳过程序中不符合逻辑或多余的部分,这会自动优化程序并减少计算时间。

与其他编程范例相比,函数式编程有许多优点。具有清晰输入和输出的功能易于阅读和理解。一旦一个函数被彻底调试,它就可以在其他应用程序中可靠地使用。多核机器可能能够并行计算独立评估的函数,从而大大提高程序的性能。

不幸的是,并不是所有的程序都适合并行计算,而计算功能程序可能相当慢。函数式程序严重依赖递归,这通常比使用传统循环或迭代方法效率低。事实上,函数式编程可能非常笨拙,也很难学习,因为它与其他更常见的范例(如面向对象编程)不同。

学术界倾向于支持函数式编程,因为它提供了一种清晰易懂的方法来编程复杂的现实世界问题。一些纯语言是Haskell和Erlang。Mathematica专攻符号数学,R专攻统计学,J专攻金融分析。Scala和F#等多模式语言支持函数式编程和其他编程风格。

  • 发表于 2021-12-13 16:35
  • 阅读 ( 132 )
  • 分类:互联网

你可能感兴趣的文章

声明的(declarative)和命令式程序设计(imperative programming)的区别

...式编程与命令式编程 5. 摘要 什么是声明式编程(declarative programming)? 声明式编程可以用一个真实的场景来解释。假设用户需要检查新邮件。一种方法是启用收件箱通知。用户只需启用一次通知,每次新邮件到达时,他都会自动...

  • 发布于 2020-10-16 09:49
  • 阅读 ( 556 )

函数式程序设计(functional programming)和命令式程序设计(imperative programming)的区别

...与表格形式的命令式编程 6.摘要 什么是函数式程序设计(functional programming)? 函数式程序设计是以数学为基础的。函数式编程背后的关键原则是,所有的计算都被看作是独立数学函数的组合。数学函数将输入映射到输出。假设有...

  • 发布于 2020-10-19 02:12
  • 阅读 ( 485 )

结构化的(structured)和非结构化编程(unstructured programming)的区别

结构化的(structured)和非结构化程序设计(unstructured programming)的区别 计算机程序是计算机执行用编程语言编写的任务的一组指令。编程范例可以根据语言特性对编程语言进行分类。结构化编程和非结构化编程是两种常见的编程...

  • 发布于 2020-10-24 05:09
  • 阅读 ( 493 )

你应该知道的5种函数式编程语言

... 什么是函数式程序设计(functional programming)? ...

  • 发布于 2021-03-20 18:46
  • 阅读 ( 626 )

为什么编程语言离不开函数

... 什么是反正是个函数(a function, anyway)? ...

  • 发布于 2021-03-26 09:26
  • 阅读 ( 179 )

什么是编程中的函数?

... 什么是函数(a function)? ...

  • 发布于 2021-03-29 16:35
  • 阅读 ( 269 )

功能(function)和程序(procedure)的区别

功能与程序 计算机编程是软件开发过程的一个阶段。它被认为是一门手艺、一门艺术和一门工程学科,可以为计算机用户遇到的问题创建一个有用的软件解决方案。在编写计算机程序时,程序员使用一种程序设计语言。程序设...

  • 发布于 2021-06-23 15:49
  • 阅读 ( 264 )

存储过程(stored procedure)和功能(function)的区别

...将在学生表中选择名为“Ann”的所有学生。 什么是功能(function)? 函数是执行特定任务的一组指令。几乎所有的编程语言,如C++、C、java和Python都允许程序员编写函数。一个函数允许重复使用同一组指令。此外,它组织整个代码...

  • 发布于 2021-06-30 23:16
  • 阅读 ( 1074 )

建造师(constructor)和方法(method)的区别

...写自己的构造函数,则不会使用默认构造函数。 Figure 1: Program with C***tructor 在上面的Employee类中,有一个名为Employee的构造函数。有两个实例变量id和name。在第8行中,有一个构造函数,它与类名同名。它初始化id和名称。在主程...

  • 发布于 2021-07-01 05:24
  • 阅读 ( 251 )

静止的(static)和C++中的常量函数(constant function in c++)的区别

... 静态函数,常数函数,C++ 什么是C++中的静态函数(static function in c++)? 用static关键字定义的函数是静态函数。通常,函数处理对象。程序员使用对象来调用这些函数。但是,它在静态函数中是不同的。它们在类级别工作,而不...

  • 发布于 2021-07-01 09:34
  • 阅读 ( 285 )
jvwsegxmejjz
jvwsegxmejjz

0 篇文章

相关推荐