为什么说 Julia 更优于 Python?
两大机器学习和统计编程中的常用语言 Julia 和 Python,究竟有何不同?
作者 | Emmett Boudreau
译者 | 弯月,责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
以下为译文:
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 * array2Julia -> 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 翻译,转载请注明来源出处。
为了助力对抗疫情,减少线下人员流动和聚集,CSDN与 PyCon 官方授权的 PyCon中国社区合作,举行「Python开发者日」在线系列峰会。通过精彩的技术干货内容、有趣多元化的在线互动活动等,让您足不出户便可与大咖学习交流,共同渡过抗疫攻坚期。