再见蟒蛇。你好,朱莉娅

2020-05-04 16:08:35

随着Python生命周期的停滞,一个炙手可热的新竞争者正在涌现。

别误会我的意思。Python的受欢迎程度仍然得到了由计算机科学家、数据科学家和人工智能专家组成的坚如磐石的社区的支持。

但是,如果您曾经与这些人共进晚餐,您也会知道他们对Python的弱点有多么怨天尤人。从速度慢到需要过多的测试,再到尽管之前的测试都会产生运行时错误--已经够让人恼火的了。

这就是为什么越来越多的程序员正在采用其他语言--排名最靠前的是Julia、Go和Rust。Julia非常擅长数学和技术任务,而Go对于模块化程序来说非常棒,而Rust则是系统编程的首选。

由于数据科学家和人工智能专家处理许多数学问题,朱莉娅是他们的赢家。即使经过严格的审查,Julia也有Python无法比拟的优点。

当人们创建一种新的编程语言时,他们这样做是因为他们想保留旧语言的优点,修复缺点。

从这个意义上说,Guido van Rossum在20世纪80年代末创建了Python来改进ABC。后者对于编程语言来说太完美了-虽然它的刚性使得它很容易教授,但在现实生活中很难使用。

相比之下,Python相当实用。你可以在Python的禅宗中看到这一点,它反映了创作者的意图:

美丽总比丑陋好。显式比隐式好。简单总比复杂好。复杂总比复杂好。平面比嵌套好。稀疏比密集好。可读性很重要。特殊情况不够特殊,不足以违反规则。尽管实用胜过纯洁。[.]。

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

在同样的意义上,朱莉娅的创造者希望保留其他语言的优点,抛弃缺点。但朱莉娅要雄心勃勃得多:它想要击败所有语言,而不是取代一种语言。

我们贪婪:我们想要更多。我们想要一种具有自由许可的开源语言。我们想要C的速度和Ruby的活力。我们想要一种语言,它像Lisp一样具有真正的宏,但是像Matlab这样具有明显的、熟悉的数学符号。我们需要像Python一样可用于一般编程、像R一样易于统计、像Perl一样自然地处理字符串、像Matlab一样强大的线性代数、像shell一样善于将程序粘合在一起的东西。学起来非常简单,但又能让最严重的黑客高兴的东西。我们想要它的交互性,我们想要它的汇编。

Julia希望融合当前存在的所有优点,而不是用其他语言来换取缺点。尽管朱莉娅是一种年轻的语言,但它已经实现了创作者设定的许多目标。

朱莉娅可以用于从简单的机器学习应用到巨大的超级计算机模拟的一切。在某种程度上,Python也可以做到这一点--但是Python不知何故适应了这项工作。

朱莉娅的创造者想要创造一种和C一样快的语言--但他们创造的速度更快。尽管Python在最近几年变得更容易加速,但它的性能与Julia所能做到的还有很大差距。

2017年,朱莉娅甚至加入了petaflop Club-这是一个小型语言俱乐部,在峰值性能时可以超过每秒1petaflop的速度。除了朱莉娅,现在俱乐部里只有C、C++和Fortran。

拥有30多年历史的Python拥有一个庞大的支持社区。几乎没有一个与Python相关的问题不能在一次Google搜索中得到答案。

相比之下,朱莉娅社区相当小。虽然这意味着您可能需要进一步挖掘才能找到答案,但您可能会一次又一次地与相同的人联系。这可能会变成超出价值的程序员关系。

您甚至不需要知道任何Julia命令就可以在Julia中编码。您不仅可以在Julia中使用Python和C代码。您甚至可以在Python中使用Julia!

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

这是Python的强项之一-它的无数维护良好的库。Julia没有太多的库,用户抱怨说(到目前为止)维护得并不令人惊讶。

但是当你考虑到Julia是一种非常年轻的语言,资源有限,他们已经拥有的库的数量是相当令人印象深刻的。例如,除了Julia的库数量不断增加之外,它还可以与C和Fortran库交互来处理绘图。

Python是100%动态类型的。这意味着程序在运行时决定是否