沉迷面向对象编程不可自拔?函数式编程了解一下( 二 )

这是完整的函数式 。它比较短,也更快,因为我们不需要迭代太多的数组元素 。如果你理解 filter, map 和 reduce 如何工作,代码也就不难理解了 。
这并不意味着所有的函数代码都使用 map、reduce 等 。这也不意味着你需要函数式编程来理解 map 和 reduce 。只是当你抽象循环时,这些函数会弹出很多 。
1.Lambda函数
在谈到函数式编程的历史时,许多人都是从lambda函数的发明开始的 。尽管 lambda 是函数式编程毫无疑问的基石,但它们并不是根本原因 。
Lambda 函数是可用于使程序起作用的工具 。但是,我们也可以在面向对象的编程中使用lambda 。
2.静态类型
上面的示例虽然不是静态类型的,但是它依然是函数式的 。
即使静态类型为我们的代码增加了一层额外的安全保护,但是其函数正常也并非必不可少 。不过,这可能是一个不错的补充 。
有些编程语言的函数式编程越来越强1.Perl
Perl 对副作用的处理方法与大多数编程语言截然不同 。它包含了一个神奇的参数 $。Perl 确实有它的优点,但我不会用它进行函数式编程 。
2.Java
如果你在用 Java 进行函数式编程,那我只能祝你好运了 。因为你的程序有一半是由静态关键字组成的,而且其他 Java 开发人员也会把你的程序视为耻辱 。
这并不是说 Java 有多糟糕,而是因为它并不是为那些用函数式编程解决问题而设计的,比如数据库管理或机器学习应用程序 。
3.Scala
有趣的是:Scala 的目标是统一面向对象和函数式编程 。如果你觉得这有点奇怪,那你不是一个人,因为所有人都这么觉得:函数式编程的目标是完全消除副作用,而面向对象编程是把副作用保留在对象内部 。
尽管如此,很多开发人员认为 Scala 是一种帮助他们从面向对象编程过渡到函数式编程的语言 。或许在未来几年里,它们会更容易全面发挥作用 。
4.Python
Python 鼓励函数式编程 。一个事实就能看到这一点:每个函数在默认情况下至少有一个输入self 。这很像Python的禅:显式比隐式好!
5.Clojure
据它的创建者说,Clojure 大约有 80% 是函数式编程 。默认情况下,所有值都是不可变的,就像在函数式编程中需要它们一样 。但是,我们可以通过在这些不可变的值周围使用可变值包装器来解决这个问题 。当你打开这样一个包装,你得到的东西又是不变的 。
6.Haskell
这是为数不多的纯函数式和静态类型的语言之一 。虽然在开发过程中这看起来像是一个时间消耗器,但在调试程序时,Haskell会付出巨大的代价 。它不像其他语言那么容易学,但绝对值得投资!
 
大数据时代带来了函数式编程与面向对象编程相比,函数式编程仍然是一个新生儿 。但是如果在 Python 和其他语言中包含函数式编程原理,具有不一样的意义,那么函数式编程就有可能获得关注 。
函数式编程对于大型数据库、并行编程和机器学习非常有用 。在过去的十年里,所有这些都在蓬勃发展 。
虽然面向对象代码有着不可估量的优点,但函数代码的优点却不容忽视 。只需要学习一些基本原理,就足以让我们成为一名开发人员,并为未来做好准备 。
 
--END--
本文作者:Rhea Moutafis,原文链接:https://towardsdatascience.com/why-developers-are-falling-in-love-with-functional-programming-13514df4048e
喜欢本文的同学记得转发+点赞~
更多内容,欢迎大家关注我们的公众号:为AI呐喊(weainahan)

【沉迷面向对象编程不可自拔?函数式编程了解一下】


推荐阅读