当前位置:  开发笔记 > 编程语言 > 正文

函数式编程有哪些好处?

如何解决《函数式编程有哪些好处?》经验,为你挑选了6个好方法。

您认为函数式编程的好处是什么?它们如何适用于今天的程序员?

函数式编程和OOP之间最大的区别是什么?



1> Chris Wenham..:

函数式编程的风格是描述你想要的东西,而不是如何获得它.即:而不是创建一个带有迭代器变量的for循环,并通过一个数组行进到每个单元格,你会说相当于"这个标签指的是这个函数已经在所有的元素".

函数式编程将更基本的编程思想转移到编译器中,例如列表推导和缓存等思想.

函数式编程的最大好处是简洁,因为代码可以更简洁.函数程序不会创建迭代器变量作为循环的中心,因此从代码中消除了这种和其他类型的开销.

另一个主要好处是并发性,这对于函数式编程更容易,因为编译器正在处理过去需要手动设置状态变量的大多数操作(比如循环中的迭代器).

根据程序的编写方式,在单处理器的上下文中也可以看到一些性能优势,因为大多数函数式语言和扩展都支持惰性求值.在Haskell中,您可以说"此标签表示包含所有偶数的数组".这样的数组是无限大的,但你可以随时要求该数组的第100,000个元素而不必知道 - 在数组初始化时 - 你需要的最大值是什么.该值仅在您需要时计算,不再进一步计算.


我觉得你的第一段更接近于描述像Prolog这样的声明性关系编程而不是函数式编程.
@McPherrinM:函数式语言是声明性的,而不是命令式的.
似乎你[混淆DP与IP,程序与FP混淆](http://stackoverflow.com/questions/602444/what-is-functional-declarative-and-imperative-programming/8357604#8357604).FP通过强调功能组成,即分离确定性计算的子计算之间的依赖性来提供关注点分离.
@LieRyan不对.请参阅我之前评论中的链接

2> Kirk Strause..:

最大的好处是它不是你习惯的.选择一种像Scheme这样的语言,学会解决它的问题,你将成为一个更熟悉的语言程序员.这就像学习第二种人类语言.你假设其他人基本上是你自己的变种,因为你没有什么比较它.接触他人,特别是与你已经知道的无关的人,是有益的.


这是学习它的好处,而不是范式本身的好处
"这是学习它的好处,而不是范式本身的好处".范例将泄漏到您的其他OOP工作中,可以帮助简化您的开发.您可以通过"从此输入计算此输出"和"组合计算新数据的这两个函数"而不是"等待 - 那里的某些共享变量的状态是什么?"来解决问题.并且"我是否让这些程序以正确的顺序执行?".说真的,你可以从Python,C#,C++,Java中获得这些好处(从了解FP范例).
但它们真的是分开的吗?从原始提问者的角度来看,我会说不是 - 他们最有可能在寻求学习功能性语言的努力中获益.

3> Robert Harve..:

功能编程为何重要
http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf



4> sepp2k..:

因此,一个好的起点是尝试理解一些在命令式语言中不可能但在函数式语言中可能的事情.

如果你在谈论可计算性,那么在功能性而非命令式编程中当然没有任何可能性(反之亦然).

不同编程范式的关键不是让事情变得可能以前是不可能的,而是让事情变得容易,之前很难.

函数式编程旨在让您更轻松地编写简洁,无错误且可并行化的程序.



5> Samuel Jack..:

它不必是一个或另一个:使用像C#3.0这样的语言可以混合每个元素的最佳元素.OO可用于级别及以上级别的大型结构,方法级别的小型结构的功能式.

使用Functional样式允许编写代码,清楚地声明其意图,而不会与控制流语句等混淆.由于副作用自由编程等原则,更容易推理代码,并检查其正确性.



6> Bozhidar Bat..:

我认为功能编程需求的最实际例子是并发-功能程序自然是线程安全的,并且鉴于多核硬件的兴起,这是至关重要的。

函数式编程还提高了模块性-您经常会看到命令/函数太长了-您几乎看不到函数多于几行。而且由于一切都已解耦-重用性得到了极大改善,单元测试非常非常容易。

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有