大佬 Python 对阵新秀 Julia ,谁能问鼎机器学习和数据科学?

2017 年 12 月 27 日 CSDN Serdar Yegulalp

点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

【CSDN 编者按】在数据科学领域,你最常用的编程语言是哪种?对此,不同职业背景下的开发者答案各尽不同,一般来说,Python 和 R 语言是需要重点掌握的,但是如今有一枝独秀悄然而至,其创作理念是像 Python 一样通用、像 R 语言一样适用于统计、像 Perl 一样适用于字符串处理、像线性代数 Matlab 一样强大、像 Shell 一样擅长粘合程序,且可以像 C 语言一样高效,它的名字叫做——Julia。如今,在面对 Python 俨然已成为数据科学和机器学习领域的中流砥柱的窘境之下,Julia 以何种优势与之抗衡,接下来,本文将带你一探究竟。

以下为译文:

在 Python 涵盖的众多领域中,数据分析应当是应用最广同时最为重要的。Python 通过加载大量的库、工具和应用程序,使得科学计算和数据分析工作变得快速便捷。

Julia 语言(https://julialang.org/) 专门针对科学计算、机器学习、数据挖掘、大规模线性代数、分布式和并行计算,在 Julia 的使用者眼里,Python 不够快也不够方便。此消彼长,当它擅长某一项工作时,肯定会忽略其他部分。

Julia 语言简介

Julia 由一个四人组成的团队于 2009 年创建,在 2012 年正式对外发布,旨在解决用于科学计算和数据处理的编程语言(比如 Python)和应用程序的缺陷。团队成员追求完美和极致,他们表示:

我们需要一个开放源码且拥有自由许可证的语言。我们希望兼具 C 语言的速度与 Ruby 的动态性。我们希望编程语言具有同像性,既有 Lisp 这样真正的宏,又有 Matlab 这样带有明显的、为人熟知的数学符号。我们希望它像 Python 一样可以用于一般编程,又像 R 语言一样适用于统计学,能够像 Perl 那样自然地用于字符串处理,就可以像 Matlab 那样强力支持线性代数,此外还能像 shell 一样做程序的粘合剂。它能够让初学者轻松入门,又能给资深开发者提供高级特性。我们希望它具有很强的交互性,同时又属于编译型语言。

为了实现这些想法,Julia 遵循了如下策略:

  • 为了更快的速度,定义为编译型语言,而不是解释型。Julia 使用 LLVM 编译器框架进行即时编译(JIT)。在某些情况下,Julia 可以接近甚至达到 C 语言的速度。

  • 采用直接但有用的语法。Julia 语法的简洁程度可以与 Python 媲美,虽然简洁,但是表现力很强。

  • 动态类型。你可以指定变量的类型,如“无符号的32位整数”。但是,你也可以创建类型的层次结构以允许处理特定类型变量,例如编写一个接受整数的函数,通常不指定整数长度。最后如果在特定的上下文中不需要,你可以不用完全输入。

  • 可以调用 Python、C 和 Fortran 编写的库。Julia 可以直接调用 C 语言和 Fortran 编写的外部库。也可以通过 PyCall 库与 Python 代码进行交互,此外, Python 和 Julia 之间的数据可以共享。

  • 元编程。Julia 程序可以生成其他的 Julia 程序,甚至可以修改自己的代码,就像 Lisp 这样的语言一样。

Julia 相比 Python 的优势

Julia 从一开始就是为科学和数值计算而设计的。因此,Julia 在此领域具有众多优点也就不足为奇。它的优点如下:

  • 速度更快。Julia 的 JIT 编译和类型声明意味着它可以比“纯粹的”、未被优化的 Python 快几个数量级。虽然 Python 可以通过 PyPy 或者 Cython 等方式进行速度优化,但 Julia 从设计之初就具有天然的速度优势。

  • 友好的数学语法。Julia 的主要目标受众是科学计算语言和 Matlab、R、Mathematica、Octave 等环境的用户。Julia 的数学运算语法看起来更像计算机世界之外的普通数学公式,它使得非程序员很容易掌握。

  • 自动内存管理。像 Python 一样,Julia 不需要用户太多关注分配和释放内存的细节,它提供了一些针对垃圾回收的手动控制方法。这样的好处在于,假设你从 Python 转投 Julia,你依然可以享有 Python 一样的便利。

  • 并行性。只有充分利用机器上可用的全部资源(特别是多核),数学和科学计算领域才能够蓬勃发展。Python 和 Julia 都支持并行运算。但是,在并行计算方面,Julia 的语法比 Python 更简单,这样就降低了并行运算的使用门槛,使其能够得到更广泛的应用。

Python 相比 Julia 的优势

Python 是一种易于学习的通用计算语言,已经发展成为科学计算领域的主力军。Python 之所以能够在数据科学领域占据重要地位,得益于它的下列优势:

  • Julia 数组索引从 1 开始。Julia 的这个特性表面上看问题不大,但是我们不能排除它潜在的风险。在大多数语言中,包括 Python 和 C 语言,数组的第一个元素通常用 0 来访问,例如,string[0] 表示 Python 字符串中的第一个字符。但是 Julia 则使用 1 作为数组中的第一个元素,它这样做的原因是为了迎合一些数学和科学应用(比如Mathematica)的用户。虽然默认情况下 Julia 采用1索引,但是可以通过其他手段(https://docs.julialang.org/en/latest/devdocs/offset-arrays/) 让其支持 0 索引,毕竟用 1 作为第一个元素索引的方式违背程序员的编程习惯。

  • Julia 还很年轻。Julia 语言自2009年以来一直处在开发阶段,并且一路上增减了多种功能。尽管开发者一直宣称开发接近尾声(https://github.com/JuliaLang/julia/milestone/4),但实际上它仍然没有发布1.0版本。

  • Python 拥有更丰富的第三方软件包。Python 数量庞大且实用的第三方软件包是它能够吸引大量开发者的杀手锏。而年轻的 Julia 语言的生态系统稍显薄弱,它使用了很多现有的 C 和 Python 库,但是开发 Julia 自己软件包的任务依然迫在眉睫。

  • Python 具有庞大的社区优势。如果编程语言没有一个强大、活跃的社区支持,那么它的根基是不扎实的。Python 现在正拥有着一个强大的社区。虽然 Julia 的社区发展迅猛,但是和 Python 社区的规模相比依然不值一提。

总结

一个是经过 8 年开发的新秀 Julia,一个是圈内公认的标榜 Python,两种编程语言在数据科学领域各有千秋,综合以上的优劣对比,你会更倾向选择哪种编程语言入门呢?

原文:Julia vs. Python: Julia language rises for data science

链接:https://www.infoworld.com/article/3241107/python/julia-vs-python-julia-language-rises-for-data-science.html

作者:Serdar Yegulalp

译者:安翔

责编:苏宓

登录查看更多
3

相关内容

Python是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
255+阅读 · 2020年6月10日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
227+阅读 · 2020年5月21日
算法与数据结构Python,369页pdf
专知会员服务
160+阅读 · 2020年3月4日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
211+阅读 · 2020年2月21日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
136+阅读 · 2020年2月16日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
172+阅读 · 2020年1月1日
Julia 对决Python:谁能在2019年称霸机器学习编程?
七月在线实验室
3+阅读 · 2019年1月13日
开发 | 用 Python 做机器学习不得不收藏的重要库
AI科技评论
5+阅读 · 2019年1月8日
数据科学、机器学习IDE概览
论智
8+阅读 · 2018年11月12日
吃鸡手游竟然是Python写的?
机器学习算法与Python学习
6+阅读 · 2018年9月11日
那个学Python的同龄人,也许已经抛弃了你
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
Python数据科学超强阵容书单
图灵教育
6+阅读 · 2018年3月26日
用于数学的 10 个优秀编程语言
算法与数据结构
11+阅读 · 2018年1月5日
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Meta-Learning with Implicit Gradients
Arxiv
13+阅读 · 2019年9月10日
Arxiv
8+阅读 · 2019年2月15日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
10+阅读 · 2017年12月29日
VIP会员
相关VIP内容
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
255+阅读 · 2020年6月10日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
227+阅读 · 2020年5月21日
算法与数据结构Python,369页pdf
专知会员服务
160+阅读 · 2020年3月4日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
211+阅读 · 2020年2月21日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
136+阅读 · 2020年2月16日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
172+阅读 · 2020年1月1日
相关资讯
Julia 对决Python:谁能在2019年称霸机器学习编程?
七月在线实验室
3+阅读 · 2019年1月13日
开发 | 用 Python 做机器学习不得不收藏的重要库
AI科技评论
5+阅读 · 2019年1月8日
数据科学、机器学习IDE概览
论智
8+阅读 · 2018年11月12日
吃鸡手游竟然是Python写的?
机器学习算法与Python学习
6+阅读 · 2018年9月11日
那个学Python的同龄人,也许已经抛弃了你
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
Python数据科学超强阵容书单
图灵教育
6+阅读 · 2018年3月26日
用于数学的 10 个优秀编程语言
算法与数据结构
11+阅读 · 2018年1月5日
相关论文
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Meta-Learning with Implicit Gradients
Arxiv
13+阅读 · 2019年9月10日
Arxiv
8+阅读 · 2019年2月15日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
10+阅读 · 2017年12月29日
Top
微信扫码咨询专知VIP会员