为什么说 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 * 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 翻译,转载请注明来源出处。

为了助力对抗疫情,减少线下人员流动和聚集,CSDN与 PyCon 官方授权的 PyCon中国社区合作,举行「Python开发者日」在线系列峰会。通过精彩的技术干货内容、有趣多元化的在线互动活动等,让您足不出户便可与大咖学习交流,共同渡过抗疫攻坚期。

活动咨询,可扫描下方二维码加入官方交流群哈!戳一戳!!!

热 文 推 荐

和疫情赛跑 30 天,湖北武汉的程序员们怎么样了?

2020年,云游戏将爆发?各大科技公司云游戏布局大曝光!

斯坦福博士退学,在 3 个领域改变世界,科技狂人马斯克的巅峰之路

我们为什么需要远程办公?

官宣了!受疫情影响,程序员可免费领这些!

破 14 亿,Python 分析我国存在哪些人口危机!

你点的每个“在看”,我都认真当成了喜欢

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值