本文出处发表于 Towards Data Science 博客,经原作者 Emmett Boudreau 授权,InfoQ 中文站翻译并分享。
为什么 Julia 很快成了我最喜爱的数据科学编程语言。
引言
谈及 2020 年的数据科学,几乎任何事情都有很多选项可供选择。这样对数据科学家来说,既是一个积极的方面,因为科学家可以使用更多的工具工作、预测,同时也是一个消极的方面。因为有了如此多的选择,很难清楚地指出在某些情况下,哪种特定的工具能够工作,或者最适合解决某个问题。
当我在进行研究的时候,偶然接触到一种比较新的科技,那就是 Julia 编程语言。
那时,我一直在用 Python 编写基于 C 语言的后端模型,还有一些 Sklearn 和 Tensorflow 模型,我发现这些模型维护起来非常复杂。在我的特定方案中,当通过请求移动大量数据堆时,我发现自己总会遇到 Pythonic 超时的情况。
在类似这样的场景中,C 后端无疑已经证明了自己的地位,但同时也带来了一个问题。大多数 Python 模块都是用 C 语言编写的,而不是 Python,这些模块在速度方面与其他命令式语言的解决方案相竞争。对于我来说,这让整个系统变得更加令人恼火,开发软件并将其从高级 Python 前端转移到工作中。
说白了,这确实是一个明智的解决方案,C 语言可能是能够快速重复某些内容并使其可靠的最佳方法之一,因此最快的、行业标准的工具采用这个系统是有道理的。但是,要记住,虽然 Python 由 C 语言解释,但 C 是一种不同的语言;这意味着 C 的专有实现常常需要某种依赖系统。
Julia 是如何解决这些问题的
总结一下我对 Python 的失望之处,它是用于 C 语言的一种优秀工具,但由于它是声明性的且面向脚本的,因此通常很难设计出底层解决方案。也就是说,以 Python 的方式运行 Python 实际上会非常缓慢,并且肯定不适合机器学习或大数据操作。
Julia 是一种高级、多范式、高级的编程语言,最近才发布了 1.5 版本,如果你在这个行业,现在就去看看吧!
速度
Julia 是一种速度非常快的编程语言,每个使用它的人都可能是为了这个而学的。使用实时(Just-In-Time,JIT)编译不仅能快速编译,而且使用多态(polymorphic)和语法表达式编写也快得令人难以置信,这些表达式往往能够将完整的函数压缩到一行代码中。
依赖关系
对于依赖关系,Julia 也有一个非常有吸引力的方法。在 Julia 中,环境是以简单的文本数据的形式存储的,即.toml
文件,该文件保存了给定项目的所有依赖关系信息。这使得科学家们可以非常容易地彼此分享环境,并更高效地进行合作。它也使得部署模型就像把它放到一个文件夹里一样简单。要知道,Python 的 Pip 环境也有类似的模式,但 Julia 语言真正领先之处在于与预编译、文件管理和存储库的完美集成。
数据
对数据类型,Julia 有独特的处理方法,它使得探索不同类型的统计和科学数据变得更加容易,并使数据可以像在论文中一样表达。对于大数据狂人来说,有Big
类型,能够很好的保持浮点精度和整数精度。对于字典迷来说,任何数据类型都可以是一个包含符号的键,这意味着可以通过任意的数据表示形式调用字典键:我认为这比在很多时候使用整数或字符串更好。尤其是在科学研究领域更是如此。集合可以获得唯一的数据集,并且可以用于许多算法,在 Julia 语言中,还有许多类型非常有趣。
数据和代码的另一种扩展是元编程,感兴趣的用户可能会高兴地发现,Julia 语言非常适合元编程。
灵活性
最后,真正让我倾向于主要成为 Julia 程序员的是这门语言的灵活性。在 Julia 中,从经典的函数式编程到完全不同的范式,只需一行简单的代码,就可以轻松实现。Julia 中的表达式是令人难以置信的,只需一行代码就可以轻松地产生科学影响。
总结
总而言之,目前业界领先的解决方案都是很好的工具,但其中肯定也有不同的工具值得探讨。我碰巧真正爱上的工具是 Julia 及其相关的生态系统,它也在快速发展,这让我兴奋不已。作为一名数据科学家,不断更新最新、最棒的工具,甚至实验性工具,对你的行业来说可能都是至关重要的。Julia 是一门神奇的语言,我想任何想要在数据科学中使用它的人,都会喜欢它。无论这门语言能否会成为你代码库的主要贡献者,我认为它肯定是一种我乐于学习并从中学到许多东西的技能。
作者介绍:
Emmett Boudreau,数据科学家。
原文链接:
https://towardsdatascience.com/how-i-came-to-love-the-julia-language-948c32e2f9b0
评论