Python小心!Julia 为你的王冠而来

共 4321字,需浏览 9分钟

 ·

2021-07-18 07:47



  新智元报道  

来源:TNW

编辑:LRS

【新智元导读】Python是一个老少皆宜的编程语言,尤其在数据科学领域更是坐头把交椅。但这种现象还会持续多久?会不会有一个新语言打破这种垄断?Julia也许是一个选择,它完美克服了Python的所有缺点,提前布局,你就是Julia元老级开发者!

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 之禅也反应了创作者的意图:
 
 
Beautiful is better than ugly.优美优于丑陋,
Explicit is better than implicit.明了优于隐晦;
Simple is better than complex.简单优于复杂,
Complex is better than complicated.复杂优于凌乱,
Flat is better than nested.扁平优于嵌套,
Sparse is better than dense.稀疏优于稠密,
Readability counts.可读性很重要!
Special cases aren't special enough to break the rules.即使实用比纯粹更优,
Although practicality beats purity.特例亦不可违背原则。
Errors should never pass silently.错误绝不能悄悄忽略,
Unless explicitly silenced.除非它明确需要如此。
In the face of ambiguity, refuse the temptation to guess.面对不确定性,拒绝妄加猜测。
There should be one-- and preferably only one --obvious way to do it.任何问题应有一种,且最好只有一种,显而易见的解决方法。
Although that way may not be obvious at first unless you're Dutch.尽管这方法一开始并非如此直观,除非你是荷兰人。
Now is better than never.做优于不做,
Although never is often better than *right* now.然而不假思索还不如不做。
If the implementation is hard to explain, it's a bad idea.很难解释的,必然是坏方法。
If the implementation is easy to explain, it may be a good idea.很好解释的,可能是好方法。
Namespaces are one honking great idea -- let's do more of those!命名空间是个绝妙的主意,我们应好好利用它。
 
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还会比别人多一项技能。
 
学起来吧!管他的,先学了再说。



参考资料:

https://thenextweb.com/news/watch-out-python-julia-programming-coding-language-coming-for-crown-syndication


-往期精彩-




浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报