作者 | Rhea Moutafis
译者 | 苏本如,责编 | 夕颜
头图 | CSDN 下载自视觉中国
出品 | CSDN(ID:CSDNnews)
如果Julia对你来说仍是个谜,别担心。
不要误会我的意思。Python的流行仍然受到计算机科学家、数据科学家、人工智能专家,以及他们组成的稳固社区的坚定支持。
但是,如果你曾经和这些人一起共进过晚餐,那么你就应该知道他们对于Python的弱点有多少抱怨。从速度缓慢到需要过多的测试,再到尽管进行了先前的测试仍然会产生很多运行时错误 - 这些已经足够让人恼火了。
这就是为什么越来越多的程序员开始采用其他语言的原因,这些语言中最受欢迎的是Julia、Go和Rust。Julia非常适合数学和技术任务,Go非常适合模块化程序,而Rust是系统编程的首选。
由于数据科学家和人工智能专家需要处理许多数学问题,因此Julia成为他们的赢家。即使经过严格的审视,Julia仍然具有Python无法战胜的优势。
当人们创建一种新的编程语言时,他们这样做的目的是希望保留旧语言中的好特性,并修复其坏特性。
从这个意义上讲,Guido van Rossum在20世纪80年代后期创建Python的目的是为了改进ABC(Abstract Base Class - 抽象基类)。后者对于编程语言来说简直太完美了 - 尽管其刚性使其易于学习,但在现实生活中却很难使用。
而Python则相反,它非常实用。你可以在下列Python的禅中看到这一点,它反映了创造者的意图:
优美胜于丑陋(Python 以编写优美的代码为目标)。
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)。
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)。
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)。
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)。
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)。
可读性很重要(优美的代码是可读的)。
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
[...]
Python仍然保留了ABC的良好特性:例如可读性、简单性和对初学者的友好性。但是Python比ABC更加健壮,更加适应现实生活。
ABC为Python铺平了道路,而Python也为Julia铺平了道路。
从同样的意义上说,Julia的创造者们希望保留其他语言的优点,而摒弃其缺点。但是Julia的野心要大得多:它不是想取代一种语言,而是想打败所有语言。
Julia的创造者是这样说的:
我们很贪婪:我们想要更多。我们想要一种拥有自由许可的开源语言。我们想要C的速度和Ruby的活力。我们想要的语言是同调的(homoiconic),具有像Lisp这样的真实宏,但又具有类似Matlab这样的显而易见的熟悉的数学符号。我们想要的语言像Python一样适用于通用编程,像R一样适用于统计,像Perl一样自然地处理字符串,像Matlab一样具有强大的线性代数处理能力,像Shell一样易于将程序粘合在一起。我们想要一些简单易学的,但却能让最严肃的黑客开心的东西。我们希望它是交互式的,我们希望它也是可编译的。
Julia希望融合目前存在的语言的所有优势,而不是用其他语言的劣势来平衡。尽管Julia是一门年轻的语言,但它已经实现了它的创造者设定的许多目标。
多功能性
Julia可以用于从简单的机器学习应用程序到巨大的超级计算机模拟的所有方面。在某种程度上,Python也可以做到这一点,但是Python不知何故发展成了这样。
相比之下,Julia正是为这个目的而生的。自下而上。
速度
Julia的创造者希望创造一种和C语言一样快速的语言 - 但是他们创造出来的语言速度更快。尽管近年来Python变得更容易加速,但是它的性能和Julia相比仍然相去甚远。
2017年,Julia甚至加入了Petaflop俱乐部,这是一个小型的编程语言俱乐部,Julia的峰值性能可以超过每秒1 petaflop的速度。除了Julia,目前只有C,C ++和Fortran进入了这个俱乐部。
社区
凭借其 30 多年的历史,Python 拥有一个非常庞大的支持社区。几乎任何与 Python 相关的问题在一次谷歌搜索中都能得到答案。
相比之下,Julia 社区非常小。虽然这意味着你可能需要进一步挖掘才能找到答案,但你可能会一次又一次地和同样的人联系在一起。这可能会变成超越价值的程序员关系。
代码转换
你甚至无需知道一条Julia命令,就可以在Julia中进行编码。你不仅可以在Julia中使用Python和C代码。甚至可以在Python中使用Julia!
不用说,这使得修补Python代码的弱点变得非常容易。或者在你还在学习Julia的时候保持高效。
库
拥有数量庞大且维护良好的库,仍然是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成为你的优势
四十年前,人工智能不过是一种小众技术。业界和投资者对其并不信任,许多技术既笨拙又难以使用。但是那些当时学会它的人都已成为当今的巨人 – 市场需求如此之高,以至于他们的薪水与一个职业橄榄球大联盟球员的薪水相当。
同样,Julia现在也很小众。但是,随着它的发展,最大的赢家将是那些早期采用它的人。
我并不是说,如果你现在选择Julia,你一定可以在十年内赚到很多钱。但是,你正在增加你赚钱的机会。
想想看:大多数程序员的简历上都有Python。在接下来的几年中,我们会在就业市场上看到更多的Python程序员。但是,如果企业对Python的需求放缓,那么Python程序员的前景观点就会暗淡。这个过程开始缓慢,但不可避免。
另一方面,如果你能够将Julia纳入自己的简历,你将拥有真正的优势。坦白讲,是什么让你有别于其他Python程序员呢?没有什么东西。但是,即使三年后,也不会有那么多的Julia程序员。
有了Julia的技能,你不仅证明了你自己对工作要求以外的兴趣。你也证明了你渴望学习,并且对成为一名程序员的含义有更广泛的了解。换句话说,你很适合这份工作。
你,和其他Julia程序员将是未来的摇滚明星,你知道的。或者,正如Julia的创造者在2012年所说的那样:
尽管我们认识到自己的贪婪是不可原谅的,但我们仍然想要拥有一切。大约两年半前,我们开始创造我们贪婪的语言。它还没有完成,但是现在到了发布1.0版本的时候了 - 我们创造的语言叫做Julia。它已经满足了我们90%的苛刻的要求,现在它需要其他人的苛刻的要求来进一步完善它。所以,如果你也是一个贪婪,不讲道理,要求苛刻的程序员,我们希望你能尝试一下。
Python仍然很受欢迎。但是如果你现在开始学习Julia,那么你就可能握有了未来的黄金入场券。从这个意义上你可以说:再见 Python!你好 Julia!
原文链接:
https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62
本文为CSDN翻译文章,转载请注明出处。
☞一文浓缩 60 年,程序员不可不知的开源秘史!
☞CSDN总部落户长沙,共建中国开发者产业中心城市!
☞AI 修复 100 年前晚清影像喜提热搜,有穿越内味儿了!
☞CycleGan人脸转为漫画脸,牛掰的知识又增加了!| 附代码
☞触发死锁怎么办?MySQL 的死锁系列:锁的类型以及加锁原理了解一下!
☞带血的战士| 吴忌寒传