百科问答小站 logo
百科问答小站 font logo



什么是函数式编程,它解决什么问题? 第1页

  

user avatar   catchen 网友的相关建议: 
      

那要看你说的是多么纯粹的函数式编程了。

函数式编程的核心是,程序函数如同数学函数一样具备不变性,相同的输入必然会导致相同的输出,不会因为函数以外的信息影响。最简单的 f(x)=x,对于任何一个 x 都只有一个确定的 f(x),不会发生昨天 f(x) 和今天 f(x) 不一样的情况。(也就不会发生昨天好好的代码今天出 bug 了的情况。)

举一个具体的例子,函数式编程可以用一个函数表示界面上按钮该显示成什么样子。这个函数的输入包括鼠标是否在按钮上按下了、按钮是否禁用了等信息,输出就是按钮应该显示的样子。对于任何确定的输入,输出都是恒定不变的。这体现出了一种人们常说的函数式编程特性:描述 what 而不是 how。例如说,在上面这个例子里,函数式编程只描述了按钮应该显示成什么样子,但没有具体提供把按钮从当前样子重绘成新的样子需要的步骤。具体的步骤是函数式编程语言底层为你处理的事情。

描述 what 而无需描述 how 能够提升程序的可靠性,这是函数式编程的一个好处。尽管计算机底层运作还是需要一条一条指令地执行,但因为函数式语言的底层提供了可靠的翻译,比你自己去写某个操作的每一个步骤要可靠。

与此同时,描述 what 的代码往往比描述 how 的代码更精简,例如说把大象放进冰箱里的三个步骤需要三句话,但说明此时此刻大象已经在冰箱里只需要一句话。函数式语言的底层自己想办法把大象搞进冰箱里,不需要你操心。




  

相关话题

  花一晚上也无法理解非递归遍历二叉树,我该继续学下去吗? 
  教育部:将编程教育等纳入中小学相关课程,对此你怎么看? 
  有什么在线的编程游戏? 
  设计闭包(Closure)的初衷是为了解决什么问题? 
  为什么好多编程“牛人”不喜欢用 Microsoft Visual Studio? 
  晚上脑子里也想着bug,睡不好怎么办? 
  低代码开发以后有前景么?会不会最后一地鸡毛? 
  仅仅从好玩程度考虑,做编译器或操作系统哪个更有趣味? 
  作为一个有理想的程序员,必读的书都有哪些? 
  为什么前端代码会被设计成允许用户在浏览器中看到,而客户端代码却不能? 

前一个讨论
英伟达 RTX 3080 Ti 是智商检测卡吗?
下一个讨论
勒芒是个怎样的赛道?为什么要用 24h 这种赛制?





© 2025-04-16 - tinynew.org. All Rights Reserved.
© 2025-04-16 - tinynew.org. 保留所有权利