写点什么

再见 Python,你好 Julia!

  • 2020-06-18
  • 本文字数:3715 字

    阅读完需:约 12 分钟

再见Python,你好Julia!

本文最初发布于 towards data science 博客,经原作者授权由 InfoQ 中文站翻译并分享。


看到这个标题请不要误会我的意思。Python 依旧大受欢迎,其热度是由计算机科学家、数据科学家和 AI 专家组成的坚如磐石的社区撑起来的。


但如果你曾与这些人坐下来聊过天,你也会知道他们对 Python 的缺陷有多大怨言。速度缓慢,需要过多的测试,就算做过了测试也会冒出来运行时错误……让人头疼的事情实在太多了。


这就是为什么越来越多的程序员开始采用其他语言的原因所在——其中最优秀的替代品包括 Julia、Go 和 Rust。Julia 非常适合数学和技术任务,而 Go 很擅长模块化程序,Rust 则是系统编程的首选。


由于数据科学家和 AI 专家需要处理许多数学问题,因此在他们眼中 Julia 是赢家。就算是在最苛刻的对比条件下,Julia 也具有很多 Python 无法比拟的优势。

Python 的禅意与 Julia 的贪婪

人们之所以要创建一种新的编程语言,是因为他们既想保留旧语言的长处,又要修复其中的缺陷。


正是基于这种理念,Guido van Rossum 在 1980 年代后期创建了 Python,作为 ABC 的改进和替代。后者作为编程语言而言过于追求完美了——它如此死板,教学起来很容易,但在现实生活中却很难使用。


相反,Python 非常实用。你可以在"Python 的禅意"这篇文章(https://www.python.org/dev/peps/pep-0020/)中看到这一点,这篇文章反映了创建者的意图:


美丽胜于丑陋。

显式胜于隐式。

简单胜于复杂。

复杂胜于繁复。

扁平胜于嵌套。

稀疏胜于密集。

可读性很重要。

特殊情况还不足以打破规则。

而实用性胜于纯度。

[……]


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



ABC 为 Python 铺平了道路,后者又为 Julia 指明了方向


从同样的角度来看,Julia 的创造者们也希望保留其他语言的优点,而摒弃它们的缺点。但是 Julia 的志向更为远大:与其只取代一种语言,不如让所有语言都成为手下败将。


Julia 的创造者是这样说的:


我们很贪心:我们想要更多。

我们需要一种具有自由许可的开源语言。我们希望有 C 的性能和 Ruby 的动态性。我们需要一种同调的语言,具有像 Lisp 这样的真实宏命令,但又有类似 Matlab 这样熟悉又明显的数学符号。我们想要的语言应该像 Python 一样适合常规编程,又像 R 一样适合统计用途,像 Perl 一样能自然地处理字符串处理,也能像 Matlab 一样成为线性代数的强大工具,还能像 Shell 一样擅长将程序粘合起来。这种语言要非常简单易学,却又能打动最专业的程序员。我们希望它是交互式的,希望它是编译的。


Julia 希望将当下存在的所有优势都融合在一起,同时还不能为了这些优势做出牺牲,引入其他语言中的那些缺陷。尽管 Julia 是一门年轻的语言,但它已经实现了创造者设定的许多目标。

让 Julia 的开发人员着迷的优势

多用途

从简单的机器学习应用程序到规模庞大的超级计算机仿真应用,Julia 无所不能。在某种程度上来说,Python 也可以做到这一点——但 Python 是逐渐走进各个领域的。


相比之下,Julia 的多用途能力是天生的,从零开始打造而成。

速度

Julia 的创造者希望创建一种与 C 一样快的语言——但他们的成品速度甚至比 C 更快。尽管近年来 Python 加速起来变得容易许多,但是它的性能依旧与 Julia 相去甚远。


2017 年,Julia 甚至加入了 Petaflop 俱乐部——这是一个小型编程语言俱乐部,其中的成员都能实现超过千万亿次每秒的峰值计算性能。除了 Julia,目前只有 C、C++和 Fortran 是这个俱乐部的成员。

社区

历经 30 多年的发展,Python 已经建立起了一个庞大的支持社区。随便哪个与 Python 相关的问题,你都只需要谷歌一下就能得到答案。


相比之下,Julia 的社区非常小巧。虽然这意味着你可能需要深入挖掘才能找到答案,但你可能会一次又一次遇到同样的伙伴。这样一来,程序员之间甚至可能发展出超越纯粹利益关系的友谊。

代码转换

你甚至不需要了解任何 Julia 命令也能使用 Julia 编程。你不仅可以在 Julia 中使用 Python 和 C 代码,甚至可以在 Python 中使用Julia。不用说,这样一来,开发人员就能轻松修补自己 Python 代码的缺陷。或者在学习 Julia 的过程中依旧保持生产力水平。



库仍然是 Python 的强项


这是 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,让它成为你的优势

四十年前,人工智能不过是一种小众玩物。那时的业界和投资者并不信任它,与它相关的许多技术都笨拙且难以使用。但当时就了解它的那些人成为了今天的大牛——市场对大牛的需求如此火热,以至于他们的薪水足以匹敌NFL球员


同样,Julia 现在也还是很小众。但随着它的发展,那些早日采用它的人们会成为最大的赢家。


我并不是说,如果你现在就选择 Julia,就一定可以在十年内赚到很多钱。但这样做的话,你是在为自己创造机遇。


想想看,市场上的大多数程序员的简历上都带有 Python 的字样。在接下来的几年中,我们将在就业市场上看到数量更多的 Python 程序员。但是,如果企业对 Python 的需求衰退,Python 程序员的比例也会下降。起初这种趋势是很缓慢的,但也是不可逆转的。


另一方面,如果你可以把 Julia 纳入自己的简历,就会取得真正的优势。因为不客气地说,你与其他 Python 程序员又有何不同呢?区别是很小的。但即使在三年之后,市场上也不会有那么多的 Julia 程序员。


有了 Julia 的技能,你不仅可以证明自己对编程的兴趣超出了职位需求,还能让人知道你渴望学习,并且对程序员这项事业有着更深刻的理解。换句话说,你很适合这份工作。


你和其他 Julia 程序员一样,可能是未来的编程明星,并且你们很清楚这一点。或者,正如 Julia 的创造者在 2012 年所说的那样:


即使我们意识到我们的贪婪实在无可救药,我们仍然希望拥有所有这一切。大约两年半之前,我们开始着手创建我们的贪婪语言。它还不完整,但是时候发布 1.0 版本了——我们创建的语言称为 Julia。它已经满足了我们 90%的苛刻要求,现在它需要其他人的苛刻要求来进一步塑造和完善。因此,如果你也是一位贪婪、疯狂、要求苛刻的程序员,我们希望你尝试一下。


Python 仍然非常流行。但是,如果你现在开始学习 Julia,它将来可能就是你的头等舱船票。从这个层面来说:再见 Python,你好 Julia!

作者介绍

Rhea Moutafis,正在攻读“暗物质物理学”博士学位,他热爱艺术、音乐和美好的事物。


原文链接:https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62


2020-06-18 07:005050
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 553.9 次阅读, 收获喜欢 1978 次。

关注

评论

发布
暂无评论
发现更多内容

为什么美国服务器是业务国际化的首选?深入探讨其关键优势

一只扑棱蛾子

美国服务器

Axure RP授权码 附汉化包下载 兼容M/intel

Rose

Axure RP 9汉化 Axure RP 9授权码 Axure RP 10 汉化版 mac破解软件下载 mac原型设计软件

TiDB Placement Rule实战总结

TiDB 社区干货传送门

实践案例 6.x 实践 大数据场景实践 7.x 实践

TiDB是如何在国有大银行实现数据库业务“一换三”的

TiDB 社区干货传送门

7.x 实践

强大的跟踪和动画软件:Boris FX Mocha Pro 2023破解下载

胖墩儿不胖y

Mac软件 动画软件 Mac好用的软件推荐

【行云流水线】满足你对工作流编排的一切幻想~skr

京东科技开发者

赛迪顾问发布最新中国大数据市场报告,腾讯云稳居领导者行列

腾讯云大数据

大数据

英特尔的2023:以强大执行力推进产品、技术创新

E科讯

DePIN:去中心化基础设施的新篇章

TechubNews

区块链 web3 DePIN

一篇文章彻底搞懂TiDB集群各种容量计算方式

TiDB 社区干货传送门

监控 管理与运维 TiDB 源码解读 TiKV 源码解读

【火热报名中】TiDB 社区活动在北京:1月7日(周日)新年围炉茶会,来唠唠嗑,回顾过去一年,展望未来

TiDB 社区干货传送门

Mac值得推荐SSH终端工具mac securecrt-支持M1/M2

Rose

mac软件下载 SecureCRT下载 SecureCRT Mac破解版 ssh终端工具下载 SecureCRT 安装教程

传统架构VS云原生:如何更好的选择搭配

膨胀

#技术人的2023总结

基于图神经网络的动态物化视图管理

KaiwuDB

KaiwuDB 物化视图管理

恭喜神州数码集团,荣获“TiDB 社区最佳贡献企业”

TiDB 社区干货传送门

一个 39.3T 的集群从TiDB v3.1.0迁移升级到 TiDB v7.1.2 的实践

TiDB 社区干货传送门

迁移 实践案例 版本升级 大数据场景实践 7.x 实践

TiDB-Server 常用 API

TiDB 社区干货传送门

管理与运维

D-Night桌研社北京首店12月30日正式开业,学生和新客特价2.5折起

科技热闻

作为铭文跨链赛道龙头,SoBit 有何突出之处?

西柚子

国产化系统中遇到的视频花屏、卡顿以及延迟问题的记录与总结 | 主赛道

利用全面预算管理,构建企业数智化管理体系

智达方通

数智化转型 全面预算管理

面试官:说一下MySQL主从复制的原理?

王磊

Java 面试

冲突管理最佳实践

俞凡

管理 最佳实践 沟通

1688商品列表数据接口(1688.item_search)丨1688API接口

tbapi

1688API接口 1688商品数据接口 1688商品列表数据接口 关键词搜索1688商品数据

什么是爬虫,为什么爬虫会导致服务器负载跑满

德迅云安全杨德俊

三掌柜的2023年国产AI体验之路

三掌柜

年终总结 2023 2023年 年度

再见Python,你好Julia!_AI&大模型_Rhea Moutafis_InfoQ精选文章