为什么函数式编程正在上升
编程范例是一个术语,用于描述编写命令的方法。 语言的真正思想是建立在其编程范例之上的。 最著名的三种范例是面向对象的程序设计,命令式程序设计和函数式程序设计。 任何一种意识形态都不会比另一种更好,因为通常它是关于使用正确的工具完成工作的。
函数式编程是大多数软件工程师至少对此不太熟悉的概念。 实际上,有史以来写给程序计算机的第二种编程语言Lisp完全在功能范式内。 通过简化的定义编程,函数式编程将数据的不变性和数学计算作为优先事项,而不是传统上修改存储在类构造函数中的部分对象。 在现代函数式编程中,这个想法有些冗长,不一定是一件坏事。 函数语言的可变性带来了更多实用性,我敢说:
功能性
功能编程。 考虑到这一点,函数式编程不限于函数式语言。 例如,Python具有功能特性。 尽管从传统上讲,函数式编程已经有了令人难以置信的不同,但是函数式和面向对象的范例似乎与大多数用于数据科学的语言有点相似。
大多数功能语言的标题均带有"统计"字样。 这很方便,因为数据科学家非常像统计学家,只需要具备编程和机器学习技能即可。 函数式语言通常可以更快,而对于数据科学家而言,最重要的是更容易。
相信我,您不想浏览C代码,因为您的准确性有点低。 大多数功能语言都是完全可读的,并且很容易键入和掌握。 对于某些人来说,知道函数式编程是许多Inte.NET上最古老的大数据管道的基础,可能会令人感到意外。 实际上,随着机器学习和统计计算的兴起,函数式编程实际上变得越来越流行。
有许多很酷的统计语言,其中许多语言具有与其他更传统的特征交织在一起。 在函数式编程语言下,我非常喜欢很多很酷的语言。
Julia很容易成为我一直以来最喜欢的语言。 尽管Julia确实是功能性的,但它确实包含一些可变的和面向对象的属性,使其编程起来更加方便。Julia作为这样一种高级语言的速度非常快。 它易于键入,键入正确时,它可以与C一样快,同时比R和Scala易于阅读。 通常,不需要花费太多时间就可以在Julia中建立模型并对其进行训练,并且由于语言简单易行且ML速度快,这增加了使用Julia的好处。 在某些情况下,例如在我的ML包Lathe中,机器学习可以用更少的行完成,并且构造函数的属性可以使用参数多态性更轻松地进行突变。
尽管Lisp不一定以其数据科学领域而闻名,但它仍然是一种非常酷的语言。 Lisp和Julia一样,使编程变得非常容易和方便。 Lisp的宏和Julia的宏是一个真正值得注意的属性。 宏本身是一项主要的功能性功能,如果正确使用,可以使笔记本编码真正容易。 应该注意的是,Lisp已将自己分为多种语言,包括Scheme,Clojure和(通用)Lisp。 很难理解或估计第二种高级语言及其功能的影响,但是范围肯定很大。
现在,我们迎接我们的好朋友R. R传统上是一种面向函数的语言,但是像大多数其他语言一样(或已经成为)多范式,这意味着它从每个特定的编程范式中进行选择。 很好,因为它使R具有可变性的优点。 R起源于S语言,并且一直专注于统计计算。
Haskell与我上面提到的多种范式语言完全不同,Haskell以纯粹的功能而自豪。 我无法代表Haskell,与清单上的其他语言不同,我从未使用过。 但是据我所知,Haskell当然是一种很酷的语言。 我对学习Haskell的关注纯粹是局限性。 正如我所讨论的那样,大多数现代语言都是多范式的,这使它们可以有效地压缩需要压缩的任何错误,而无需创建新的代码库。
我的大部分时间都花在函数式语言(主要是Julia)上,如Github上的笔记本资料库所显示的那样,其中主要包含Julia笔记本。 我喜欢函数式编程,因为对于我所做的事情,它非常适合该规则。 当然,有时候Python构造函数(类)可能对某个特定的工作会更好,但是总的来说,Julia可以完成工作,而且键入的方式对我来说非常流畅和高效。 对于其他人而言,功能语言可能无法实现其目标,并且对于一生都使用面向对象语言的人来说可能很难学习。 归根结底,语言是一种选择,大多数语言都有开发人员,大多数语言都有优缺点。