作者 | Rhea Moutafis

译者 | 苏本如,责编 | 夕颜

头图 | CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

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

如果Julia对你来说仍是个谜,别担心。

不要误会我的意思。Python的流行仍然受到计算机科学家、数据科学家、人工智能专家,以及他们组成的稳固社区的坚定支持。

但是,如果你曾经和这些人一起共进过晚餐,那么你就应该知道他们对于Python的弱点有多少抱怨。从速度缓慢到需要过多的测试,再到尽管进行了先前的测试仍然会产生很多运行时错误 - 这些已经足够让人恼火了。

这就是为什么越来越多的程序员开始采用其他语言的原因,这些语言中最受欢迎的是Julia、Go和Rust。Julia非常适合数学和技术任务,Go非常适合模块化程序,而Rust是系统编程的首选。

由于数据科学家和人工智能专家需要处理许多数学问题,因此Julia成为他们的赢家。即使经过严格的审视,Julia仍然具有Python无法战胜的优势。

Python的禅与Julia的贪婪

当人们创建一种新的编程语言时,他们这样做的目的是希望保留旧语言中的好特性,并修复其坏特性。

从这个意义上讲,Guido van Rossum在20世纪80年代后期创建Python的目的是为了改进ABC(Abstract Base Class - 抽象基类)。后者对于编程语言来说简直太完美了 - 尽管其刚性使其易于学习,但在现实生活中却很难使用。

而Python则相反,它非常实用。你可以在下列Python的禅中看到这一点,它反映了创造者的意图:

  1. 优美胜于丑陋(Python 以编写优美的代码为目标)。

  2. 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)。

  3. 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)。

  4. 复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)。

  5. 扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)。

  6. 间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)。

  7. 可读性很重要(优美的代码是可读的)。

  8. 即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)

[...]

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

ABC为Python铺平了道路,而Python也为Julia铺平了道路。

从同样的意义上说,Julia的创造者们希望保留其他语言的优点,而摒弃其缺点。但是Julia的野心要大得多:它不是想取代一种语言,而是想打败所有语言。

Julia的创造者是这样说的:

我们很贪婪:我们想要更多。我们想要一种拥有自由许可的开源语言。我们想要C的速度和Ruby的活力。我们想要的语言是同调的(homoiconic),具有像Lisp这样的真实宏,但又具有类似Matlab这样的显而易见的熟悉的数学符号。我们想要的语言像Python一样适用于通用编程,像R一样适用于统计,像Perl一样自然地处理字符串,像Matlab一样具有强大的线性代数处理能力,像Shell一样易于将程序粘合在一起。我们想要一些简单易学的,但却能让最严肃的黑客开心的东西。我们希望它是交互式的,我们希望它也是可编译的。

Julia希望融合目前存在的语言的所有优势,而不是用其他语言的劣势来平衡。尽管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翻译文章,转载请注明原文信息及翻译信息。

推荐阅读

  • AI修复100年前晚清影像喜提热搜,这两大算法立功了

  • CycleGan人脸转为漫画脸,牛掰的知识又增加了 | 附代码

  • 一次对语音技术的彻底批判

  • 用大白话彻底搞懂 HBase RowKey 详细设计

  • 为什么黑客无法攻击公开的区块链?

  • 再见 Python,Hello Julia!

  • 百万人学AI 万人在线大会, 15+场直播抢先看!

  • 你点的每个“在看”,我都认真当成了AI

再见 Python,Hello Julia!相关推荐

  1. 再见, Python, 你好, Julia

    点击上方"Python高校",关注你的技术大学 来自:雷锋网公众号 随着 Python 的停滞不前,一个新的热门竞争对手出现了. 不要误解.Python 的受欢迎程度,仍然得到计算 ...

  2. Python:实现Julia集算法(附完整源码)

    Python:实现Julia集算法 import warnings from collections.abc import Callable from typing import Anyimport ...

  3. 在R、Python和Julia中常用的数据可视化技术

    俗话说"一图胜千言".通过各种图片和图形化展示,我们可以更清晰地表达很多抽象概念.理论.数据模式或某些想法.在本章中,我们首先解释为什么应该关心数据可视化.然后,我们将讨论几种在R ...

  4. python实现sql数据处理_再见Python, 你好SQL

    原标题:再见Python, 你好SQL 雄凌求职:专注求职内推.金融名企实习内推的教育平台.可内推投行部.研究部门.互联网.私募.基金.四大.咨询等实习和工作岗位.专注大学生背景提升.工作求职.留学申 ...

  5. julia python_如何让 Python 像 Julia 一样快地运行

    展开全部 Julia 与 Python 的比较 我是否应丢弃 Python 和其他语言,使用 Julia 执行技术计算?在看到 http://julialang.org/ 上的基准测试62616964 ...

  6. 再见Python!Yann LeCun警告:深度学习需要新编程语言

    整理 | 一一 出品 | AI科技大本营 尽管工程师们普遍定位 Python 是简单.优雅的编程语言,但它并非毫无缺点,比如人们一直吐槽它的执行速度不够快,线程不能利用多 CPU 等缺点,如今 AI ...

  7. loss下降auc下降_梯度下降算法 线性回归拟合(附Python/Matlab/Julia源代码)

    梯度下降 梯度下降法的原理 梯度下降法(gradient descent)是一种常用的一阶(first-order)优化方法,是求解无约束优化问题最简单.最经典的方法之一. 梯度下降最典型的例子就是从 ...

  8. 再见 Python!Yann LeCun 警告:深度学习需要新编程语言

    整理 | 一一 出品 | AI科技大本营 Python 全栈工程师系统学 https://edu.csdn.net/topic/ai30?utm_source=csdn_bw 尽管工程师们普遍定位 P ...

  9. matlab2019支持python_全方位对比:Python、Julia、MATLAB、IDL 和 Java (2019 版)

    引言 我们使用简单的测试用例来对各种高级编程语言进行比较.我们是从新手程序员的角度来实现测试用例,假设这个新手程序员不熟悉语言中可用的优化技术.我们的目的是突出每一种语言的优缺点,而不是宣称一种语言比 ...

最新文章

  1. Tomcat关闭日志catalina.out
  2. python windows系统调用_python日记第四章:python用os和sys模块进行系统调用
  3. 从直觉主义到量化分析 让大数据做主
  4. 机器人煮面机创始人_秋天的第一杯枸杞拿铁,由机器人冲泡
  5. 中石油训练赛 - Historical Maths(二分)
  6. httpurlconnect设置中文参数_CNC机床参数的设置及报警解除,赶紧收藏吧!
  7. 快克SEO站群搜狗提交工具
  8. Python模块之 __future__
  9. 关于前段与后端数据库的连接
  10. vs下qt的信号与槽实现
  11. java题角色信息管理,java题库专家信息管理系统
  12. HEVC(H265)播放器
  13. 游戏里的攻防-检测与反检测
  14. 理解两个函数乘积的导数的一种视角
  15. app个人隐私合规检测内容
  16. 从零开始学Snaker(一)- 官方项目运行
  17. python内置库求复数的辐角_皮肤与美容—医学专家如是说_中国大学MOOC(慕课)_章节测验答案...
  18. 十大干货安全议题,足以展望今年网络安全趋势
  19. Kitty代码生成器
  20. Semantic Segmentation--SegNet:A Deep Convolutional Encoder-Decoder Architecture..论文解读

热门文章

  1. MaxCompute助力OSS支持EB级计算力
  2. Magento如何使用和设置CookieSession
  3. CSS3支持IE6, 7, and 8的边框属性
  4. 添加Soap头来增加Web Service的安全性
  5. Jvm面试题及答案 100道(持续更新)
  6. MATLAB中subplot函数使用
  7. 密码学摘要算法之MD5
  8. Python 无法安装PyAudio问题
  9. 题解 UVA11354 【Bond】
  10. Java IO 4 : RandomAccessFile