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



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

  

user avatar   catchen 网友的相关建议: 
      

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

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

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

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

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




  

相关话题

  HTML、CSS、JavaScript 为什么不加个标明运行版本号的语法? 
  为什么欧美国家很多十几岁的少年已经可以独立开发软件或创建实业了? 
  英语好对软件开发好处不大,对吗? 
  Promise 不能被取消,真的算是它的缺点吗? 
  golang,告警业务,每个告警源都有不同的分发频率,告警源可能新增or删除,该如何设计? 
  什么是 Type Driven Development ? 
  计算机硕士不会编程怎么找工作? 
  为什么很多人喜欢 Python? 
  电脑点击“关机”后,电脑如何实现自动切断电源? 
  一般编程的时候,使用汇编能比使用高级语言(比如C,C++,java等)有更高的运行效率吗?高能高出多少呢? 

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





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利