大佬 Python 对阵新秀 Julia,谁能问鼎机器学习和数据科学?

关键时刻,第一时间送达!

【CSDN 编者按】在数据科学领域,你最常用的编程语言是哪种?对此,不同职业背景下的开发者答案各尽不同,一般来说,Python 和 R 语言是需要重点掌握的,但是如今有一枝独秀悄然而至,其创作理念是像 Python 一样通用、像 R 语言一样适用于统计、像 Perl 一样适用于字符串处理、像线性代数 Matlab 一样强大、像 Shell 一样擅长粘合程序,且可以像 C 语言一样高效,它的名字叫做——Julia。如今,在面对 Python 俨然已成为数据科学和机器学习领域的中流砥柱的窘境之下,Julia 以何种优势与之抗衡,接下来,本文将带你一探究竟。

以下为译文:

在 Python 涵盖的众多领域中,数据分析应当是应用最广同时最为重要的。Python 通过加载大量的库、工具和应用程序,使得科学计算和数据分析工作变得快速便捷。

Julia 语言(https://julialang.org/) 专门针对科学计算、机器学习、数据挖掘、大规模线性代数、分布式和并行计算,在 Julia 的使用者眼里,Python 不够快也不够方便。此消彼长,当它擅长某一项工作时,肯定会忽略其他部分。

Julia 语言简介

Julia 由一个四人组成的团队于 2009 年创建,在 2012 年正式对外发布,旨在解决用于科学计算和数据处理的编程语言(比如 Python)和应用程序的缺陷。团队成员追求完美和极致,他们表示:

我们需要一个开放源码且拥有自由许可证的语言。我们希望兼具 C 语言的速度与 Ruby 的动态性。我们希望编程语言具有同像性,既有 Lisp 这样真正的宏,又有 Matlab 这样带有明显的、为人熟知的数学符号。我们希望它像 Python 一样可以用于一般编程,又像 R 语言一样适用于统计学,能够像 Perl 那样自然地用于字符串处理,就可以像 Matlab 那样强力支持线性代数,此外还能像 shell 一样做程序的粘合剂。它能够让初学者轻松入门,又能给资深开发者提供高级特性。我们希望它具有很强的交互性,同时又属于编译型语言。

为了实现这些想法,Julia 遵循了如下策略:

为了更快的速度,定义为编译型语言,而不是解释型。Julia 使用 LLVM 编译器框架进行即时编译(JIT)。在某些情况下,Julia 可以接近甚至达到 C 语言的速度。

采用直接但有用的语法。Julia 语法的简洁程度可以与 Python 媲美,虽然简洁,但是表现力很强。

动态类型。你可以指定变量的类型,如“无符号的32位整数”。但是,你也可以创建类型的层次结构以允许处理特定类型变量,例如编写一个接受整数的函数,通常不指定整数长度。最后如果在特定的上下文中不需要,你可以不用完全输入。

可以调用 Python、C 和 Fortran 编写的库。Julia 可以直接调用 C 语言和 Fortran 编写的外部库。也可以通过 PyCall 库与 Python 代码进行交互,此外, Python 和 Julia 之间的数据可以共享。

元编程。Julia 程序可以生成其他的 Julia 程序,甚至可以修改自己的代码,就像 Lisp 这样的语言一样。

Julia 相比 Python 的优势

Julia 从一开始就是为科学和数值计算而设计的。因此,Julia 在此领域具有众多优点也就不足为奇。它的优点如下:

速度更快。Julia 的 JIT 编译和类型声明意味着它可以比“纯粹的”、未被优化的 Python 快几个数量级。虽然 Python 可以通过 PyPy 或者 Cython 等方式进行速度优化,但 Julia 从设计之初就具有天然的速度优势。

友好的数学语法。Julia 的主要目标受众是科学计算语言和 Matlab、R、Mathematica、Octave 等环境的用户。Julia 的数学运算语法看起来更像计算机世界之外的普通数学公式,它使得非程序员很容易掌握。

自动内存管理。像 Python 一样,Julia 不需要用户太多关注分配和释放内存的细节,它提供了一些针对垃圾回收的手动控制方法。这样的好处在于,假设你从 Python 转投 Julia,你依然可以享有 Python 一样的便利。

并行性。只有充分利用机器上可用的全部资源(特别是多核),数学和科学计算领域才能够蓬勃发展。Python 和 Julia 都支持并行运算。但是,在并行计算方面,Julia 的语法比 Python 更简单,这样就降低了并行运算的使用门槛,使其能够得到更广泛的应用。

Python 相比 Julia 的优势

Python 是一种易于学习的通用计算语言,已经发展成为科学计算领域的主力军。Python 之所以能够在数据科学领域占据重要地位,得益于它的下列优势:

Julia 数组索引从 1 开始。Julia 的这个特性表面上看问题不大,但是我们不能排除它潜在的风险。在大多数语言中,包括 Python 和 C 语言,数组的第一个元素通常用 0 来访问,例如,string[0] 表示 Python 字符串中的第一个字符。但是 Julia 则使用 1 作为数组中的第一个元素,它这样做的原因是为了迎合一些数学和科学应用(比如Mathematica)的用户。虽然默认情况下 Julia 采用1索引,但是可以通过其他手段(https://docs.julialang.org/en/latest/devdocs/offset-arrays/) 让其支持 0 索引,毕竟用 1 作为第一个元素索引的方式违背程序员的编程习惯。

Julia 还很年轻。Julia 语言自2009年以来一直处在开发阶段,并且一路上增减了多种功能。尽管开发者一直宣称开发接近尾声(https://github.com/JuliaLang/julia/milestone/4),但实际上它仍然没有发布1.0版本。

Python 拥有更丰富的第三方软件包。Python 数量庞大且实用的第三方软件包是它能够吸引大量开发者的杀手锏。而年轻的 Julia 语言的生态系统稍显薄弱,它使用了很多现有的 C 和 Python 库,但是开发 Julia 自己软件包的任务依然迫在眉睫。

Python 具有庞大的社区优势。如果编程语言没有一个强大、活跃的社区支持,那么它的根基是不扎实的。Python 现在正拥有着一个强大的社区。虽然 Julia 的社区发展迅猛,但是和 Python 社区的规模相比依然不值一提。

总结

一个是经过 8 年开发的新秀 Julia,一个是圈内公认的标榜 Python,两种编程语言在数据科学领域各有千秋,综合以上的优劣对比,你会更倾向选择哪种编程语言入门呢?

原文:Julia vs. Python: Julia language rises for data science

链接:https://www.infoworld.com/article/3241107/python/julia-vs-python-julia-language-rises-for-data-science.html

作者:Serdar Yegulalp

译者:安翔

责编:苏宓

本文来自企鹅号 - CSDN媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BestSDK

史无前例!Python将被加入高考科目

Python 将被纳入高考科目 2017年初消息: 浙江省信息技术新教材,即将在2017级(2017年9月入学)高中新生中开始使用。 据了解,与目前的选考(可以...

52170
来自专栏python+iOS学习交流

python入门 2018最新最全学习资料免费获取啦

是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?

12820
来自专栏程序人生

如何从零开始学一门程序语言?

今天一大早排队挂号给孩子看病,耽搁了,现在才发。 说实话,『能花钱的,就不要花时间』是篇即兴之作,本该随着时间被有限的听众渐渐淡忘。但没想到前有 @老赵 微博转...

35860
来自专栏web前端教室

【视频】如何用二个月学会WEB前端开发?

温馨提示:视频链接请点此观看 // 视频原文: 今天的话题,“一个零基础的人,如何通过自学,在二个月内学会前端开发?” 学习js,应该是三个阶段: 1,先搞...

225100
来自专栏编程

C语言编程怎么培养编程思维?没思路?我来带你找自己的思路

编程思维,可以说是一种感觉吧。培养编程思维,就是培养自己解决问题的能力,这种感觉可以帮助你更快找到问题点,对症下药。 1.要【会学】C语言 跟着老师或者自学学完...

38150
来自专栏程序员互动联盟

零基础如何成为代码高手

编程不是盗墓,不是请客吃饭,不是描画绣花,不能那样儒雅,那样闲庭信步,那样从容不迫。编程是一门技术,一门进行创造的技术。 绝大多数计算机专业的学生是零基础,其中...

36370
来自专栏Android开发实战

浮躁的社会浮躁的你,浮躁的程序员哪里才是你的归属地。

其实最开始听到这个词的时候我是拒绝的。因为我觉得我话挺多的,无论和谁,只要唠开了,就能滔滔不绝的唠下去:

13950
来自专栏杨建荣的学习笔记

Python实现的快速排序

今天看了下《算法新解》这本书,很薄的一本书,最开始吸引我的有两点,一个是里面的大量的图,内容相对来说比较清新,第二个是里面的代码是基于Python实现。尽管算法...

39470
来自专栏程序员互动联盟

为什么C++是最难学的编程语言?

很多已经做了几年的C++程序员已经很自信觉得这门编程语言算是熟悉阶段了,但是当重新对这门语言来个彻底大扫除的时候发现,又有新的语法出现,最糟糕的是之前掌握的很多...

30030
来自专栏大数据钻研

为什么程序员总是写糟糕的代码?这3个原因

我最近一直在想我们作为一个行业为什么总是产出糟糕代码的原因。 1.明显原因…… 我一下子想到的最明显的原因是,有好的程序员,也有不那么好的程序员,有的人技术水平...

33680

扫码关注云+社区

领取腾讯云代金券