快捷搜索:

重逢 Python,你益 Julia!

原标题:重逢 Python,你益 Julia!

作者 | Rhea Moutafis

译者 | 王强

策划&编辑 | 刘燕

Python 照样专门通走。但是,倘若你现在最先学习 Julia,它异日能够就是你的优等舱船票。

本文最初发布于 towards data science 博客,经原作者授权由 InfoQ 中文站翻译并分享。

望到这个标题请不要误会吾的有趣。Python 照样大受迎接,其炎度是由计算机科学家、数据科学家和 AI 行家构成的坚如磐石的社区撑首来的。

但倘若你曾与这些人坐下来聊过天,你也会晓畅他们对 Python 的弱点有多大仇言。速度缓慢,必要过多的测试,就算做过了测试也会冒出来运走时舛讹……让人头疼的事情实在太多了。

这就是为什么越来越多的程序员最先采用其他说话的因为所在——其中最特出的替代品包括 Julia、Go 和 Rust。Julia 专门正当数学和技术义务,而 Go 很拿手模块化程序,Rust 则是编制编程的首选。

由于数据科学家和 AI 行家必要处理许无数学题目,因此在他们眼中 Julia 是赢家。就算是在最严格的对比条件下,Julia 也具有很多 Python 无法比拟的上风。

Python 的禅意与 Julia 的贪婪

人们之因而要创建一栽新的编程说话,是由于他们既想保留旧说话的益处,又要修复其中的弱点。

正是基于这栽理念,Guido van Rossum 在 1980 年代后期创建了 Python,行为 ABC 的改进和替代。后者行为编程说话而言过于谋求完善了——它如此物化板,教学首来很容易,但在现实生活中却很难行使。

相背,Python 专门实用。你能够在"Python 的禅意"这篇文章(https://www.python.org/dev/peps/pep-0020/)中望到这一点,这篇文章响答了创建者的意图:

时兴胜于难望。显式胜于隐式。浅易胜于复杂。复杂胜于繁复。扁平胜于嵌套。稀奇胜于浓密。可读性很主要。稀奇情况还不及以打破规则。而实用性胜于纯度。[……]

时兴胜于难望。显式胜于隐式。浅易胜于复杂。复杂胜于繁复。扁平胜于嵌套。稀奇胜于浓密。可读性很主要。稀奇情况还不及以打破规则。而实用性胜于纯度。[……]

Python 照样保留了 ABC 的那些卓异特性:例如可读性、浅易性和对初学者友益的益处。但是 Python 比 ABC 更添雄壮,并且更正当现实生活。

睁开全文

ABC 为 Python 铺平了道路,后者又为 Julia 指明了倾向

从同样的角度来望,Julia 的生产者们也期待保留其他说话的益处,而摒舍它们的弱点。但是 Julia 的志向更为广大:与其只取代一栽说话,不如让所有说话都成为属下败将。

Julia 的生产者是如许说的:

吾们很贪婪:吾们想要更多。

吾们必要一栽具有解放允诺的开源说话。吾们期待有 C 的性能和 Ruby 的动态性。吾们必要一栽同调的说话,具有像 Lisp 如许的实在宏命令,但又有相通 Matlab 如许熟识又清晰的数学符号。吾们想要的说话答该像 Python 相通正当通例编程,又像 R 相通正当统计用途,像 Perl 相通能自然地处理字符串处理,也能像 Matlab 相通成为线性代数的重大工具,还能像 Shell 相通拿手将程序粘相符首来。这栽说话要专门浅易易学,却又能打动最专科的程序员。吾们期待它是交互式的,期待它是编译的。

吾们很贪婪:吾们想要更多。

吾们必要一栽具有解放允诺的开源说话。吾们期待有 C 的性能和 Ruby 的动态性。吾们必要一栽同调的说话,具有像 Lisp 如许的实在宏命令,但又有相通 Matlab 如许熟识又清晰的数学符号。吾们想要的说话答该像 Python 相通正当通例编程,又像 R 相通正当统计用途,像 Perl 相通能自然地处理字符串处理,也能像 Matlab 相通成为线性代数的重大工具,还能像 Shell 相通拿手将程序粘相符首来。这栽说话要专门浅易易学,却又能打动最专科的程序员。吾们期待它是交互式的,期待它是编译的。

吾们必要一栽具有解放允诺的开源说话。吾们期待有 C 的性能和 Ruby 的动态性。吾们必要一栽同调的说话,具有像 Lisp 如许的实在宏命令,但又有相通 Matlab 如许熟识又清晰的数学符号。吾们想要的说话答该像 Python 相通正当通例编程,又像 R 相通正当统计用途,像 Perl 相通能自然地处理字符串处理,也能像 Matlab 相通成为线性代数的重大工具,还能像 Shell 相通拿手将程序粘相符首来。这栽说话要专门浅易易学,却又能打动最专科的程序员。吾们期待它是交互式的,期待它是编译的。

Julia 期待将当下存在的所有上风都融相符在一首,同时还不及为了这些上风做出殉难,引入其他说话中的那些弱点。尽管 Julia 是一门年轻的说话,但它已经实现了生产者设定的很多现在的。

让 Julia 的开发人员入神的上风

多用途

从浅易的机器学习行使程序到周围重大的超级计算机仿真行使,Julia 无所不及。在某栽程度上来说,Python 也能够做到这一点——但 Python 是逐渐走进各个周围的。

相比之下,Julia 的多用途能力是先天的,从零最先打造而成。

速度

Julia 的生产者期待创建一栽与 C 相通快的说话——但他们的制品速度甚至比 C 更快。尽管近年来 Python 添速首来变得容易很多,但是它的性能照样与 Julia 相往甚远。

2017 年,Julia 甚至添入了 Petaflop 俱笑部——这是一个幼型编程说话俱笑部,其中的成员都能实现超过千万亿次每秒的峰值计算性能。除了 Julia,现在只有 C、C 和 Fortran 是这个俱笑部的成员。

社区

历经 30 多年的发展,Python 已经竖立首了一个重大的声援社区。马虎哪个与 Python 有关的题目,你都只必要谷歌一下就能得到答案。

相比之下,Julia 的社区专门幼巧。固然这意味着你能够必要深入发掘才能找到答案,但你能够会一次又一次遇到同样的友人。如许一来,程序员之间甚至能够发展出超越纯粹益处有关的友谊。

代码转换

你甚至不必要晓畅任何 Julia 命令也能行使 Julia 编程。你不光能够在 Julia 中行使 Python 和 C 代码,甚至能够在 Python 中行使 Julia。不必说,如许一来,产品展示开发人员就能镇静修缮本身 Python 代码的弱点。或者在学习 Julia 的过程中照样保持生产力程度。

库照样是 Python 的强项。

这是 Python 的强项之一——它的库数目重大且维护卓异。Julia 异国那么多库可用,用户还诉苦说现有的那点库维护得也不足益。

但是,当你考虑到 Julia 是一门专门年轻的说话,并且资源相等有限,你就会认识到它现有的库数目已经相等惊人了。Julia 库的数目还在添长,此外它还能够与 C 和 Fortran 中的库交互,以处理图外之类的义务。

动态和静态类型

Python 是 100%动态类型的。这意味着程序将在运走时确定变量是浮点数照样整数。

尽管这对初学者来说专门友益,但它也引入了很多湮没的舛讹。这意味着你必要在所有能够的场景中测试 Python 代码——这个过程相等愚昧,必要消耗大量时间。

由于 Julia 创作者也期待它易于学习,因此 Julia 十足声援动态类型。但与 Python 分歧的是,你能够按照必要引入静态类型——比如 C 或 Fortran 中的那些式样。

这能够为你撙节大量时间:你能够在必要的任何地方指定类型,用不着再绞尽脑汁躲避 测试 了。

数据:投资潜力股的意义

在 StackOverflow 上标记为 Julia(左)和 Python(右)的题目数目。

尽管所有这些益处听首来都很不错,但请务必仔细,与 Python 相比 Julia 照样是个复活儿。

一个相等不错的度量标准是 StackOverflow 上的题目数目:现在,Python 被标记的题目数目比 Julia 多二十倍!

这并意外味着 Julia 不受迎接——自然,它必要一些时间才能被程序员普及采用。

考虑一下——你是否真的想用另一栽说话编写所有代码?不,你情愿在异日的项现在中尝试一栽新说话。正因如此,每栽编程说话在发布和普及采用之间都会存在很长的时滞。

但是,倘若你现在就采用它(这很容易,由于 Julia 批准大量的说话转换),那么你就是在投资异日。当越来越多的人最先采用 Julia 时,你已经获得了雄厚的经验,足以成为请示他们的行家。另外,随着越来越多的 Python 代码被 Julia 取代,你的代码也会更添持久。

是时候向 Julia 外达一些爱善心了。

底线:试试 Julia,让它成为你的上风

四十年前,人造智能不过是一栽幼多玩物。当时的业界和投资者并不信任它,与它有关的很多技术都愚昧且难以行使。但当时就晓畅它的那些人成为了今天的大牛——市场对大牛的需求如此火炎,以至于他们的薪水足以匹敌 NFL 球员。

同样,Julia 现在也照样很幼多。但随着它的发展,那些早日采用它的人们会成为最大的赢家。

吾并不是说,倘若你现在就选择 Julia,就必定能够在十年内赚到很多钱。但如许做的话,你是在为本身创造机遇。

想想望,市场上的大无数程序员的简历上都带有 Python 的字样。在接下来的几年中,吾们将在就业市场上望到数目更多的 Python 程序员。但是,倘若企业对 Python 的需求没落,Python 程序员的比例也会消极。首初这栽趋势是很缓慢的,但也是不走反转的。

另一方面,倘若你能够把 Julia 纳入本身的简历,就会取得真实的上风。由于不客气地说,你与其他 Python 程序员又有何分歧呢?区别是很幼的。但即使在三年之后,市场上也不会有那么多的 Julia 程序员。

有了 Julia 的技能,你不光能够表明本身对编程的有趣超出了职位需求,还能让人晓畅你期待学习,并且对程序员这项事业有着更深切的理解。换句话说,你很正当这份做事。

你和其他 Julia 程序员相通,能够是异日的编程明星,并且你们很懂得这一点。或者,正如 Julia 的生产者在 2012 年所说的那样:

即使吾们认识到吾们的贪婪实在不走救药,吾们照样期待拥有所有这统统。大约两年半之前,吾们最先着手创建吾们的贪婪说话。它还不完善,但是时候发布 1.0 版本了——吾们创建的说话称为 Julia。它已经已足了吾们 90%的严格请求,现在它必要其他人的严格请求来进一步塑造和完善。因此,倘若你也是一位贪婪、疯狂、请求严格的程序员,吾们期待你尝试一下。

Python 照样专门通走。但是,倘若你现在最先学习 Julia,它异日能够就是你的优等舱船票。从这个层面来说:重逢 Python,你益 Julia!

作者介绍:

Rhea Moutafis,正在攻读“黑物质物理学”博士学位,他亲喜欢艺术、音笑和优雅的事物。

参考浏览:

https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62

InfoQ 读者交流群上线啦!各位幼友人能够扫描下方二维码,增补 InfoQ 幼助手,回复关键字“进群”申请入群。行家能够和 InfoQ 读者一首畅所欲言,和编辑们零距离接触,超值的技术礼包等你领取,还有超值运动等你参添,快来添入吾们吧!

点个在望少个 bug,

您可能还会对下面的文章感兴趣: