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



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

  

user avatar   catchen 网友的相关建议: 
      

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

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

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

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

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




  

相关话题

  JavaScript(V8,Node) 的开发效率比 Java(JVM,Vert.x) 高在哪里? 
  有没有人开发自我监测统计软件? 
  为什么现在大多数手机开机后不能直接使用指纹? 
  有哪些算法惊艳到了你? 
  骑马与砍杀游戏中文件修改的作弊原理是什么? 
  什么是 Agile Software Development(敏捷软件开发)? 
  如何评价 Ant Design 这个项目(一个设计语言)? 
  如何看待国内地图行业更新政策商用api每年需支付5w元? 
  setTimeout 真的有用吗? 
  国内的理工生想要去麻省理工读研究生的打算是不是不可能? 

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





© 2025-01-03 - tinynew.org. All Rights Reserved.
© 2025-01-03 - tinynew.org. 保留所有权利