当前位置: 首页 > 科技观察

有人说Julia比Python好,并给出了5个理由

时间:2023-03-22 01:59:51 科技观察

Julia是一种用于机器学习和统计编程的多范式函数式编程语言。尽管Python通常被认为是一种面向对象的编程语言,但它也是一种用于机器学习的多范式编程语言。需要注意的是,Julia语言更多地基于函数范式。此外,虽然Julia语言不如Python流行,但在数据科学中使用Julia具有显着优势,使其在许多情况下成为更好的编程语言选择。下面将从五个方面介绍Julia的优势。速度首先也是最重要的,它是Julia语言引以为豪的一个重要方面。与需要解释器来执行代码的Python不同,Julia主要依靠自身进行编译。另一方面,与C等其他编译型语言不同,Julia在运行时进行编译,而传统语言在执行前进行编译。如果Julia语言写得很好,它在速度上可以媲美甚至超过C。Julia语言使用即时(JIT)编译器,它的编译速度非常快,尽管它的编译更像是一种解释型语言,而不是像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语言中得到了很好的实现,也非常有用。多重分派Julia是一种非常独特的类型语言,具有自己的执行模式和特征,但其中一个非常酷的特性是它的多重分派。首先,Julia的多重分派非常快。此外,使用Julia的多态分派将函数定义应用为结构属性。这使得在Julia内部继承成为可能。不仅如此,使用Julia的多重分派可以实现功能扩展,这对于包扩展来说非常有用,因为无论何时显式导入方法,用户都可以更改它。因此,用户可以方便地显式导入自己的方法,并选择相应的结构,将其扩展成新的函数。与不适用于ML的Python不同,Julia语言旨在用于统计和机器学习领域。Python语言创建于1990年代初期,是一种面向对象的语言,此后发生了很大变化。尽管Python历史悠久且应用范围广泛,但使用专门为高级统计工作创建的语言有很大的好处。我认为Julia在线性代数方面优于Python。NativePython只能做线性代数很慢,而NativeJulia可以做的很快。这是因为Python最初并不是为了支持与机器学习相关的所有矩阵和方程运算而开发的。这并不意味着Python不好,尤其是在有NumPy扩展的情况下。但是Julia比导入额外的扩展库更适合这种数学运算。此外,与Python相比,Julia的操作数系统更类似于R。大多数线性代数运算都可以在Julia语言中更快速、更轻松地完成,如下代码所示: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,使用哪种语言并不重要。重要的是要知道每种语言都有其缺点,并且没有一种语言是完美的。特别是当你的程序有广泛的用途时(从机器学习到GUI再到API)。综上所述,Julia是我最喜欢的语言之一,还有Python。Python有更好的包,如果项目足够小,我会使用Python。但是对于具有数百万个观察值的数据集,使用Python读取数据就变得很痛苦。总而言之,我很期待Julia的未来。Julia写起来很有趣,并且可能在未来的数据科学中变得更有用。【本文为栏目组织《机器之心》微信公众号《机器之心(id:almosthuman2014)》原文翻译】点击此处查看作者更多好文