Julia 为何胜过 Python?

发表时间: 2020-02-08 10:36

两大机器学习和统计编程中的常用语言 Julia 和 Python,究竟有何不同?

作者 | Emmett Boudreau

译者 | 弯月,责编 | 屠敏

以下为译文:

Julia 是一种多范式、以函数式为主的编程语言,主要用于机器学习和统计编程。Python 是另一种用于机器学习的多范式编程语言,尽管人们通常认为 Python 是面向对象的编程语言。而 Julia 则主要是函数式。尽管 Julia 远不如 Python 流行,但在数据科学中使用 Julia 有很多优势,在许多情况下 Julia 甚至是比 Python 更好的选择。

速度

提起 Julia 就不得不谈论速度。Julia 最自豪的地方就是速度快。与解释型语言 Python 不同,Julia 是一种用自己的方式实现的编译语言。然而,与其他编译语言(如C)不同,Julia 是在运行时进行编译的,而传统语言则是在执行之前进行编译的。Julia 的速度有时甚至可能超越C(如果编写适当的话)。Julia 使用即时编译器(JIT),编译速度非常快,尽管它的编译更像一种解释型语言,而非 C 或 Fortran 等传统的低级编译语言。

多用途

你可能已经注意到,我说过就多用途而言,Python 比 Julia 更占优势。这是事实,很多 Python 可以做到的事情,而 Julia 却做不到。当然,这只是就语言本身而言的,因为我们现在讨论的多样性是语言的多功能性。而实际上,Julia 代码可以在 R、Latex、Python和C中执行。这意味着一般的数据科学项目理论上都可以仅编写一次,然后通过Julia,在其他语言的 wrapper 中原生地进行编译,或者也可以通过发送字符串的形式来编译。

PyCall 和 RCall 也非常有用。考虑到 Julia 的弱点就在于其软件包,因此能够随时随地调用 Python 和 R 真的很方便。Julia中很好地实现了 PyCall ,并且做得非常好且非常实用。

多重分派

Julia是一种非常独特的有类型语言,有自己的特性,但最棒的特性就是多重分派功能。首先,也是最重要的一点,那就是 Julia 的多重分派非常快。除此之外,Julia 的多态分派还可以将函数定义作为结构体的属性使用。当然,Julia 中的继承就是用这个实现的。

不仅如此,Julia 的多重分派还能让函数更具可扩展性。对于软件包扩展来说这一点非常有用,因为在需要明确地导入某个方法时,用户可以改变方法的名称。因此很容易明确地导入方法并进行扩展,方便构造体使用新的函数。

为机器学习量身打造

与 Python 不同,Julia 是为统计学和机器学习量身打造的。Python 诞生于于九十年代前期,是一个简单的面向对象语言,尽管后来发生了许多变化。考虑到 Python 的发展史以及各种各样的用途,Julia 作为一项专为高层次统计学打造的语言有许多优势。

我认为其优势之一就是线性代数。原始的 Python 很难进行线性代数运算,但原始的 Julia 做线性代数非常方便。这是因为 Python 从来没有考虑过支持机器学习所需的矩阵和方程等。尽管这并不是 Python 的缺点,特别是在有了 NumPy 之后,但从不需要额外软件包的角度来看,Julia 感觉更适合这类数学运算。Julia 的操作符系统更类似于 R,这也是非常大的优势。绝大多数线性代数操作都非常快且容易。下面是一个点乘的例子:

Python -> y = np.dot(array1,array2)
R -> y <- array1 * array2
Julia -> y = array1 .* array2

包管理器

也许我是第一个这样说的人:Julia 的 pkg 包管理器远胜于 Python 的 pip包管理器。你可以利用 pkg 自带 REPL 构建、添加、删除和初始化 Julia 包。pkg 非常方便,因为它绑定了 Git。更新也很容易,添加包非常容易,整体而言,Pkg 比 Python pip 更方便。

总结

不论你选择 R、Julia、Python 还是 Scala,这都不重要。重要的是你需要注意到每种语言都有缺点,并没有一种“完美的语言”。在进行多种编程活动时这一点尤为明显,比如你需要做机器学习,也需要做 GUI、API等。尽管如此,Julia 仍然是我最喜欢的语言之一,Python 也是。Python 的软件包更好,而且如果项目很小,我更倾向于使用 Python,但对于拥有几百万观测点的数据集而言,Python 读取数据都会有困难。

总体来说,我更看好 Julia 未来的发展趋势。使用Julia 编程非常愉悦,这门语言很可能在数据科学中有更好的发展前景

原文:
https://towardsdatascience
.com
/5-ways-julia-is-better-than-python-334cc66d64ae

本文为 CSDN 翻译,转载请注明来源出处。