函数式编程:您应该说什么语言?

函数式编程:您应该说什么语言?
资料来源:Pexels.com

您准备好开始函数式编程之旅了吗? 您来对地方了。 我们将学习学习函数式编程语言的好处,以及技术巨头如何将函数式编程纳入其软件开发周期的示例。

但是在我们开始之前,什么是函数式编程?为什么还要了解它呢?

现实情况是,函数编程没有固定的定义,因为这不是一成不变的。 但是,当然可以将其视为一种“范例”,一种独特的方法或一种进行编程的“方式”。

*将其定义为计算机程序的“建筑结构和元素的样式” ,该计算机程序将计算视为对数学功能的评估,并避免更改状态和可变数据。 有道理吗?

法定人数定义使函数式编程定义为侧重于“计算结果”而不是执行操作的范例,因此更易于理解。 但是,定义功能程序并不容易,因为它实际上并不是确定的!

如果您正在努力编写大型应用程序,那么您并不孤单。 尽管可以使用其他方法来编写较小的功能应用程序或MVP,但是函数式编程是您用来简化大型,复杂项目的工具。

关键区别在于使用“声明式”方法,而不是其他编程方法中使用的“命令式”方法。 当务之急方法可能难以阅读和身边告诉软件如何做我们想做的事情,而不是告诉它围绕正是我们想要做的事。

这是命令式方法的示例:

函数式编程:您应该说什么语言?

(图片来源)

此代码是/确实是XYZ。 但是,看书有多难? 看起来笨拙,在理解所有内容的同时可能会耗尽您的大脑!

将此与函数式编程中使用的声明式样式进行比较:

函数式编程:您应该说什么语言?

(图片来源)

那很优雅。

上面的代码片段执行的功能与命令式代码片段的功能完全相同,即,将值增加三倍,并对给定数组中的每个项目求和。

然而,它是如此的干净,清晰和易于使用。 这就是为什么函数式编程可以授权和有效的原因。

话虽如此,函数式编程并非没有“神话”。 它们可以是真实的吗?

要了解有关函数式编程的更多信息,我们与技术巨头-Telstra,REA Group,Contino,ICM Consulting Pty Ltd和The Big Red Group接触了高层和领导层。

让我们深入。

关于函数式编程语言的神话

单一定义?

函数式编程中的一个神话是标准定义。 恐怕告诉你没有。

虽然可以将函数式编程粗略地定义为构建计算机程序基本组件的一种样式,但是对于什么是函数式编程以及如何定义函数式编程没有任何标准或广泛接受的理解。

大多数专业人士都同意,与其他类型的语言相比,功能语言使用不同的理念。 这意味着它们代表并重视查看软件结构的特定方式。

任何人都可以入门吗?

与流行的看法相反,即使您只是以软件开发人员起家,也不是不可能学习函数式编程。 函数式编程是一项新技能,当您学习它时,您会感觉像是新手程序员。 但是,就像任何新技能一样,从一开始就总是很难理解,但是随着学习规则,您将开始变得更加舒适。

Telstra大数据分析总经理马克·莫洛尼(Mark Moloney)启发道:“一个神话是,函数式编程很难或过于学术化。 这只是学习的另一项技能。 掌握它需要时间和实践,这与80年代末90年代初开发人员学习面向对象编程的过程没有什么不同。 技术在不断发展。 这是我喜欢软件的原因之一。 学习如何学习与您所知道的一样重要。”

几种主要学习语言的分类

如果您想为一家伟大的高科技公司工作,最好的学习语言是什么?

Haskell是一种很好的语言选择,因为它已在许多科技公司中广泛使用。 它当然不是最容易学习的语言,但它是一种纯粹的功能编程语言。 作为一种语言 ,它也是“懒惰的” ,因为在没有明确指示要向您显示结果之前,它不会执行功能。

APL是最常用但也是最难学习的语言之一,它需要自己的独特键盘。 学习使用新型键盘的想法可能令人生畏!

那么,您可以学习哪些语言? 考虑以下一些强有力的竞争者:

  • Clojure
  • 长生不老药
  • 榆树
  • F#
  • 哈斯克尔
  • 伊德里斯
  • 斯卡拉

马克·莫洛尼(Mark Moloney)分享了更多有关他在整个职业生涯中使用的语言的信息。 “一旦开发人员可以选择一种语言(例如C#或Java),并在该生态系统内履行其作为软件开发人员的角色,情况就可能如此。 今天需要一种多语言方法。 换句话说,根据任务使用多种语言。

“例如,用于Web应用程序的JavaScript,用于本地移动应用程序的Swift或Android(Java),用于后端服务的Java,Scala等,以及用于深度学习的Python。 从工艺角度来看,学习多种语言是有价值的。 通过首先在JavaScript应用中应用功能技术的经验,使我学习Scala等功能语言的道路变得更加容易。”

Contino的工程副总裁Yun Zhi Lin凭借15年的经验提供了他的见解:“我一直偏爱于汇编语言和强类型语言。 我已经从基于Java的高层次,基于VM的语言,Groovy和Scala迁移到了诸如golang和C ++的更简单,更低层次和静态编译的语言。”

REA Group软件开发商Jack Low也看到了Scala,Haskell和Idris的好处。 “我对学习使用强大的类型系统在编译时检测尽可能多的潜在错误的方法感兴趣。 到目前为止,这已经使我学习了Scala,Haskell和Idris等语言。 特别是Idris,及其依存类型系统,对我来说非常着迷。 我认为它的成功将由将来流行到主流语言的概念数量来衡量。 函数式编程语言最近影响了许多主流语言,我希望这种情况会持续下去。”

考虑到所有这些-最困难的编程语言是什么?

您可能已经猜到了,答案很大程度上取决于您解决问题和访问Internet上可用资源的能力。

好消息是,由于专业的合作性质,学习编程语言可以相对较快地完成。

当前如何使用功能的示例

Moloney支持Scala,Python和JavaScript(视情况而定)。 “鉴于我在大数据和数据科学领域工作,Scala是一种通用语言。 Apache Spark是最流行的分布式数据处理框架,Spark用Scala编写。 该语言涉及较少的类型输入以完成工作,同时保留了与Java紧密互操作的能力而来的所有库和集成选项。 对于机器学习等(尤其是深度学习),Python也是一种关键语言。 要使用前端构建端到端系统,掌握JavaScript(或诸如Typescript,Elm等的编译器)仍然很重要。”

掌握语言的专业提示

Moloney分享了他最喜欢的两个资源GithubCoursera 他阐述道:“ Github是因为辅助项目使我能够尝试和尝试新语言。 您学习的每种新语言都会变得更加容易,因为更多的学习是从以前的语言中转移过来的。

“ Coursera的“ Scala中的函数式编程原理”很好地介绍了Scala和函数式编程。”

ICM咨询公司的首席技术官Brendan Bates分享了一些实用建议:“我喜欢在个人项目上练习自己的技能-大多数我从没完成过,有些我做过,但是再也没有看过。 过去,我曾经喜欢在Euler项目上解决一些问题。”

From: https://hackernoon.com/functional-programming-what-language-should-you-be-talking-313dd8bc379b