Julia 为 Python 的王冠而来!

HelloGitHub

共 3074字,需浏览 7分钟

 ·

2021-07-21 07:30

转自:新纪元

编辑:LRS

Python 在数据科学、AI 领域里龙头老大的位置毋庸置疑。
 
但如果和一些计算机科学家、数据科学家和人工智能专家深入交流过的话,你就会知道他们是多么痛恨 Python 的缺点。
 
它缓慢的运行速度,需要过多的测试来保证代码的正确性 ,再到尽管已经进行了测试但仍然会产生运行时错误,这些都足以让人时常产生抛弃 Python 的想法。
 
这也是为什么越来越多的程序员开始使用其他语言的原因ーー顶尖的程序员通常使用 Julia、 Go 和 Rust。Julia 是一门开源的编程语言,它擅长数学和技术任务,而 Go 则擅长模块化程序,Rust 是系统编程的首选。
 
 
由于数据科学家和人工智能专家处理大量的数学问题,Julia 也是他们的首要备选语言,Julia 也有 Python 无法比拟的优点。 


Python之禅 vs Greedy of Julia


当人们创建一种新的编程语言时,他们这样做是因为他们想保留旧语言的好特性,并修复那些不好的特性。
 
从这个意义上讲,Guido van Rossum在20世纪80年代末创建了 Python,当时创造Python的原因是改进ABC。
 
ABC语言对于一门编程语言来说太完美了,它固定的编码模式使得教学变得容易,但在现实应用中却很难使用。
 
相比之下,Python 是相当务实的。Python 之禅也反应了创作者的意图:
 
 
Python 仍然保留了 ABC 的良好特性: 例如可读性、简单性和对初学者很友好。但是 Python 比 ABC 更加健壮,更加适应现实生活。
 
在同样的意义上,Julia 的创造者希望保留其他语言中好的部分,而丢弃坏的部分。但Julia 的野心要大得多: 她不是要取代一种语言,而是要打败所有的语言。
 
Julia的作者们在2012年2月14日发了一篇文章,开篇即说明,Julia是一个贪心的语言,要把所有的好处都包揽下来。
 
我们是贪婪的: 我们想要更多。我们想要一个开源的语言,一个自由的许可证。我们需要 c 的速度和 Ruby 的活力。我们需要一种具有同源标志性的语言,像 Lisp 这样的真正的宏,但是又像 Matlab 这样显而易见的、熟悉的数学符号。我们需要一些像 Python 一样可用的东西,像R 一样易于统计,像 Perl 一样自然的字符串处理,像 Matlab 一样强大的线性代数,像 shell 一样擅长把程序粘合在一起。一些非常简单易学的东西,却能让最严肃的黑客高兴。我们希望它是互动的,我们希望它被编辑。
 
 
Julia想要融合当前存在的所有优点,而不是用其他语言的缺点来交换它们。尽管 Julia 是一门年轻的语言,但它已经实现了创作者设定的许多目标。
 
从简单的机器学习应用到巨大的超级计算机模拟,Julia可以用于任何事情。在某种程度上,Python 也可以做到这一点。
 
相比之下,Julia被创造的时候就是为这些事情而生。
 
Julia的创造者想要创造一种和 c 语言一样快的语言ーー但是他们创造的语言比C更快。尽管近年来 Python 变得更容易加速,但它的性能仍然远远不及 Julia。
 
2017年,Julia甚至成功加入了 Petaflop 俱乐部——这是一个语言小俱乐部,考察每个语言在最佳表现时,速度可以超过每秒一个 Petaflop。除了Julia,现在只有 c、 c + + 和 Fortran 还在俱乐部中。
 
 
作为有着超 30 年历史的语言 Python,Python 拥有一个庞大的支持性社区。几乎没有一个与 Python 相关的问题不能在一次 Google 搜索中找到答案。
 
相比之下,Julia的社区非常小。虽然这意味着你可能需要进一步挖掘才能找到答案,但是你可能会一次又一次地与同样的人联系在一起,这可能会变成超越程序员的关系。
 
除此之外,你甚至不需要知道一个 Julia 命令就可以在 Julia 中编码。您不仅可以使用 Python 和 c 在 Julia 中编码,甚至可以在 Python 中使用 Julia!
 
 
只需要先 pip 一下:sudo pip3 install julia

然后再import一下:import julia as jljl.install()


 
即可在 Python 中使用 Julia 代码,提升速度。这使得修补 Python 代码运行速度慢的缺点变得非常容易。或者在你了解Julia的同时保持工作效率。
 
Python 的库也要比 Julia 更多,这是 Python 最强大的地方之,它有数不胜数的维护良好的库。而 Julia 没有太多的库,部分库也被用户抱怨说它们没有得到有效的维护。
 
但是如果考虑到 Julia 是一种非常年轻的语言,利用有限的资源已经开发了相当多的库。除了 Julia 的库数量不断增长之外,它还可以与 c 和 Fortran 的库接口来处理绘图工作。
 
Python是100% 动态类型的,这意味着程序在运行时决定一个变量是浮点数还是整数。
 
虽然这对初学者非常友好,但它也引入了一整套可能的 bug。这意味着需要在所有可能的场景中测试 Python 代码ーー这是一项相当愚蠢的任务,需要花费大量时间。
 
由于 Julia 的创建者也希望它易于学习,所以 Julia 完全支持动态类型。但与 Python 不同的是,如果开发者愿意,也可以引入静态类型ー例如,就像在 c 语言或 Fortran 中一样。
 
这可以为你节省大量的时间: 与其找借口不测试你的代码,你可以在任何有意义的地方指定类型。
 
 
虽然所有这些特性听起来都很棒,但重要的是要记住,与 Python 相比,Julia 仍然是很小众的语言。一个很好的度量标准就是 StackOverflow 上的问题数量: Python 被标记的次数比 Julia 多二十倍!
 
但这并不意味着Julia不受欢迎ーー相反,被程序员广泛使用需要一些时间。
 
考虑一下吧ーー你真的想用另一种语言编写整个代码吗?不,你宁愿在未来的项目中尝试一种新的语言。这就造成了每种编程语言从发布到采用之间的时间滞后,但是现在就使用Julia也很容易,因为Julia允许大量的语言转换,即在其他宿主语言中使用Julia。
 
四十年前,人工智能只是一个小众行业,这个行业内的投资者都不相信它,而且许多技术都很笨拙,难以使用。但那些在当时学到这一点的人才是今天的巨人ーー他们的薪水需求如此之高,以至于可以与美国橄榄球联盟的球员相媲美。
 
 
相比之下,如果早点学习Julia,那么你的简历上除了Python还会比别人多一项技能。
 
学起来吧!管他的,先学了再说。
- END -

关注后第一时间收到推送

浏览 57
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报