温沧海▲还给出了5个理由,有人说Julia比Python好

选自medium
作者:EmmettBoudreau
机器之心编译
参与:杜伟、张倩、肖清
本文作者从速度、通用性、多重派发、适用于ML的程度和包管理器5个方面阐述了Julia语言相较于Python的优势所在 。
温沧海▲还给出了5个理由,有人说Julia比Python好
文章图片
Julia是一种多范式的函数式编程语言 , 用于机器学习和统计编程 。 尽管Python通常被认为是一种面向对象的编程语言 , 其实它也是用于机器学习的多范式编程语言 。 需要注意的是 , Julia语言更多地基于函数范式 。 此外 , Julia语言虽不如Python那么流行 , 但在数据科学中使用Julia具有很大的优势 , 从而使它在很多情况下成为更好的编程语言选择 。
下文将从五个方面介绍Julia的优势所在 。
速度
首先是速度 , 这是Julia语言引以为傲的一个重要方面 。 与Python需要解释器来执行代码不同 , Julia主要是依托自身实现编译 。 另一方面 , 与C语言等其他编译语言也不同的是 , Julia在运行时进行编译 , 而传统语言则是在执行前进行编译 。 如果Julia语言编写地非常好 , 它的速度与C语言相当、有时甚至可以超过C语言 。 Julia语言使用即时编译器JustInTime(JIT)compiler , 它的编译速度非常快 , 尽管它编译时更像是一种解释型语言而非C或Fortran等传统低级编译语言 。
通用性
我们都知道通用性是Python语言相较于Julia语言的一个优势 , 确实有很多通过Python语言编写的项目无法使用Julia来实现 。 当然以上仅针对编程语言本身而言 , 我们这里提到的通用性是指能够与其他语言混合编程 。 Julia代码普遍能够在R、Latex、Python和C等语言中直接运行 。 这意味着典型的数据科学项目具有一旦被编写完成并在Julia本地进行编译后 , 在其他编程语言中作为封装类或仅传递字符串使用的潜力 。
PyCall和RCall也是Julia语言的两大优势 。 考虑到Julia语言一大缺点在于包的丰富程度不及Python或R语言 , 利用PyCall和RCall在Julia代码中随时调用Python和R为用户提供了极大的便利 。 PyCall在Julia语言中得到了很好地实现 , 并且也非常有用 。
多重派发
温沧海▲还给出了5个理由,有人说Julia比Python好
文章图片
Julia是一种非常独特的类型化语言 , 具有自己的执行模式和特征 , 但其中一个非常酷的特征是它的多重派发 。 首先 , Julia的多重派发速度非常快 。 除此之外 , 使用Julia的多态派发能够将函数定义应用为结构属性 。 这使得继承(inheritance)在Julia内部可行 。 不仅如此 , 使用Julia的多重派发还可以实现函数的扩展 , 这对于包扩展来说好处多多 , 因为无论什么时候显式地导入method , 用户都可以对它进行更改 。 因此 , 用户可以很容易地显式导入自己的method , 并选择相应结构将它扩展为一个新的函数 。
适用于ML的程度
与Python不同 , Julia语言的目的是应用于统计学和机器学习领域 。 Python语言则创建于20世纪90年代早期 , 是一种面向对象的语言 , 并且自此之后也改变了很多 。 尽管Python具有很长的发展历史以及广泛的应用范围 , 但使用一种专门创建用于高级统计工作的语言能够带来很大的好处 。
我认为在线性代数中使用Julia要好于Python 。 原生的Python只能缓慢完成线性代数 , 而原生的Julia可以飞快地完成 。 这是因为 , Python最开始并不是开发来用于支持与机器学习相关的所有矩阵和方程运算的 。 这并不意味着Python不好 , 特别是当有了NumPy扩展库之后 。 但就不导入额外扩展库而言 , Julia更适合于这类数学运算 。 此外 , 与Python相比 , Julia的操作数系统与R语言的更为相近 。 使用Julia语言能够更快速、更容易地完成大多数线性代数运算 , 如以下代码所示:
Python->y=np.dot(array1,array2)R->y<-array1*array2Julia->y=array1.*array2