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



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

  

user avatar   catchen 网友的相关建议: 
      

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

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

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

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

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




  

相关话题

  GitHub 或者其他的开源平台中是否有一些适合初学者的 C++ 项目? 
  有什么行为习惯昭示着你是个编程大佬? 
  学会了 C 语言真的可以开发出很多东西吗? 
  js中一元表达式问题(++和--)? 
  如何理解 “c++缺少对象级别的消息发送机制” 这句话? 
  【C#】this 关键字限定本地类型的成员? 
  能否通过逻辑编程消灭程序BUG? 
  函数式编程(Functional Programming)相比面向对象编程(Object-oriented Programming)有哪些优缺点? 
  关于后端程序员写前端用什么框架更好? 
  <<深度探索c++对象模型>>中的虚继承看着蛋疼,感觉这在实际中也没多大用,需要继续深究吗? 

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





© 2024-05-19 - tinynew.org. All Rights Reserved.
© 2024-05-19 - tinynew.org. 保留所有权利