31

Python 是前浪,Julia 是后浪?

 4 years ago
source link: https://www.leiphone.com/news/202005/vIan91sd9ZudqUbq.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

6zeyq2Z.png!web

【 雷锋网注:图片来源: Pixabay 所有者:Devanath 】

随着 Python 的停滞不前,一个新的热门竞争对手出现了。

不要误解。Python 的受欢迎程度,仍然得到计算机科学家、数据科学家和人工智能专家的坚实支持。但是,如果你曾经和这些人一起共进晚餐,你也会知道他们对 Python 的弱点有多不满。从运行缓慢,到要求过多的测试,到不顾之前的测试而产生运行时错误——这些都足以让你恼火。这就是越来越多的程序员采用其他语言的原因——顶尖的程序员是 Julia,Go 和 Rust。Julia 擅长数学和技术性的任务,而 Go 擅长模块化程序,Rust 是系统编程的首选。由于数据科学家和人工智能专家要处理许多数学问题,Julia 是他们之中的赢家。即使经过严格的审查,Julia 也有 Python 无法超越的优点。

Python 的禅与 Julia 的贪婪

当人们创建一种新的编程语言时,他们这样做,是因为他们想保留旧语言好的特性并修复坏的特性。从这个意义上说,生于 1956 年的吉多·范罗苏姆(Guido van Rossum)在 20 世纪 80 年代后期创造了 Python 来改进 ABC 语言。后者对于一种编程语言来说太完美了——虽然它的特性使它易于教学,但在现实生活中却很难使用。相比之下,Python 相当实用。您可以在 Python 的禅宗思想中看到这一点,它反映了创作者的意图:

美丽胜于丑陋。

显性比隐性好。

简单总比复杂好。

复杂总比难懂好。

平的比嵌套的好。

稀疏总比密集好。

可读性很重要。

特例不足以打破规则。

尽管实用性胜过纯粹。

QFFreu2.jpg!web

【 雷锋网注:图片来源: Pixabay 所有者:Prawny 】

Python 仍然保留了 ABC 的良好特性:例如可读性、简单性和初学者友好性。但是 Python 比 ABC 更健壮,更适应现实生活。

从同样的意义上说,Julia 的创造者希望保留其他语言的优点,摒弃不好的部分。但是

Julia 的创造者是这样说的:

我们贪婪:我们想要更多。我们想要一种开源的语言,一种自由的许可。我们想要有红宝石般活力的速度。我们想要一种同象语言,有像 Lisp 那样的真正的宏,但是有像 Matlab 那样明显的、熟悉的数学符号。我们想要像 Python 一样可用于一般编程,像 R 一样容易用于统计,像 Perl 一样自然用于字符串处理,像 Matlab 一样强大用于线性代数,像 shell 一样善于将程序粘在一起。有些东西非常简单易学,却能让最严肃的黑客高兴。我们希望它是交互式的,我们希望它被编译。

Julia 想融合现有的所有优势,而不是用其他语言的劣势来交换。尽管 Julia 是一门年轻的语言,但它已经实现了创作者设定的许多目标。

Julia 的开发者喜欢什么

从简单的机器学习应用到巨大的超级计算机模拟,多才多艺的 Julia 可以用于任何事情。从某种程度上来说,Python 也可以做到这一点——但是 Python 不知何故逐渐发展成了这样。相比之下,Julia 正是为这种东西而生。自下而上。

Julia 的创造者希望创造一种和 C 语言一样快的语言——但是他们创造的速度更快。尽管近年来 Python 变得更容易加速,但它的性能仍然远远不如 Julia。

2017 年,Julia 甚至加入了“亿次浮点运算俱乐部”,这是一个小型的语言俱乐部,在巅峰状态下,它的速度可以超过每秒 10 亿次。除了 Julia,现在俱乐部里只有 C、C++ 和 Fortran。

社区

凭借其 30 多年的历史,Python 拥有一个庞大的支持性社区。几乎任何与 Python 相关的问题在一次谷歌搜索中都能得到答案。相比之下,Julia 社区非常小。虽然这意味着你可能需要进一步挖掘才能找到答案,但你可能会一次又一次地和同样的人联系在一起。这可能会变成超越价值的程序员关系。

代码转换

你甚至不需要知道一个单一的 Julia 命令来编码 Julia。你不仅可以在 Julia 中使用 Python 和 C 代码。你甚至可以在 Python 中使用 Julia!

不用说,这使得修补您的 Python 代码的弱点变得非常容易。或者在你还在了解 Julia 的时候保持高效。

UBzuQfR.jpg!web

【 雷锋网注:图片来源: Pixabay 所有者:izoca 】

这是 Python 的最大优点之一——它有无数维护良好的库。Julia 没有很多库,用户抱怨它们没有得到令人惊讶的维护。

但是当你考虑到 Julia 是一门非常年轻的语言,资源有限,他们已经拥有的库的数量相当可观。除了 Julia 的库数量正在增长这一事实之外,它还可以与 C 语言和 Fortran 语言的库进行接口,例如处理图。

动态和静态类型

Python 是 100% 动态类型的。这意味着程序在运行时决定变量是浮点型还是整数型。

虽然这非常适合初学者,但它也引入了一大堆可能的错误。这意味着您需要在所有可能的场景中测试 Python 代码——这是一个相当愚蠢的任务,需要花费很多时间。

由于 Julia 的创造者也希望它易于学习,朱莉娅完全支持动态编译。但是与 Python 不同的是,如果你愿意,你可以引入静态类型——比如,以它们在 C 或 Fortran 中的方式。

这可以为你节省大量时间:你可以在任何有意义的地方指定类型,而不是为不测试你的代码寻找借口。

在小的时候投资

niQRBfJ.png!webI3MZnev.png!web

【雷锋网注:StackOverflow 上问题数量的对比和趋势】

虽然所有这些听起来都很棒,但重要的是要记住,与 Python 相比,Julia 仍然很小。一个很好的衡量标准是 StackOverflow 上的问题数量:此时,Python 被标记的次数比 Julia 多 20 倍!

这并不意味着 Julia 不受欢迎——相反,被程序员接受自然需要一些时间。想想看——你真的想用不同的语言来写你的整个代码吗?不,你宁愿在未来的项目中尝试一种新的语言。这就造成了每种编程语言从发布到被采用之间的时间差。

但是如果你现在采用它——这很容易,因为 Julia 允许大量的语言转换——你是在投资未来。随着越来越多的人接受 Julia,你已经获得了足够的经验来回答他们的问题。此外,随着越来越多的 Python 代码被 Julia 取代,您的代码将会更加持久。

mMNVVve.jpg!web

【 雷锋网 (公众号:雷锋网) 注:图片来源: Pixabay 所有者:Omni Matryx 】

底线:让 Julia 成为你的优势

四十年前,人工智能只不过是一种利基现象。该行业和投资者并不相信它,许多技术既笨重又难以使用。但是那些在那时学会的人是今天的巨人——那些要求如此之高,以至于他们的工资与一个美国国家橄榄球联盟的球员相当。同样,Julia 现在仍然是非常合适的选择。但是当它成长时,最大的赢家将是那些早期采用它的人。

我并不是说,如果你现在接受 Julia,你肯定能在十年内赚一大笔钱。但是你在增加几率。

想想看:大多数程序员的简历上都有 Python。在接下来的几年里,我们会在就业市场上看到更多的 Python 程序员。但是如果企业对 Python 的需求放缓,Python 程序员的前景将会暗淡。开始很慢,但不可避免。

另一方面,如果你能在简历中加入 Julia,你就有了真正的优势。因为老实说,是什么让你有别于其他任何一个 Python 程序员?没什么东西。但是即使三年后,也不会有那么多的 Julia 程序员。

有了 Julia 技能,你不仅表现出你对工作要求以外的兴趣。你也证明了你渴望学习,你对成为一名程序员意味着什么有了更广泛的理解。换句话说,你适合这项工作。

你——和其他 Julia 程序员——是未来的摇滚明星,你知道的。或者,正如 Julia 的创造者在 2012 年所说:

即使我们认识到我们不可原谅的贪婪,我们仍然想要拥有一切。大约两年半前,我们开始创造我们贪婪的语言。它还没有完成,但现在是 1.0 版本的时候了——我们创造的语言叫做 Julia。它已经满足了我们 90% 不礼貌的要求,现在它需要别人不礼貌的要求来进一步塑造它。所以,如果你也是一个贪婪、不讲道理、苛刻的程序员,我们希望你试一试。

Python 仍然非常受欢迎。但是如果你现在学习 Julia,那可能是你以后的黄金入场券。从这个意义上可以说:再见 Python。你好 Julia!

本文作者为瑞亚·莫将(Rhea Moutafis),他正在攻读物理学博士学位,热爱艺术、音乐和美丽的事物。

来源: Towards Data Science

相关文章:

美联储加持的小众语言 Julia ,能否成为机器学习的明日之星?

雷锋网原创文章,未经授权禁止转载。详情见 转载须知

qiMNbeq.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK