写点什么

再见 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:005017
用户头像
刘燕 InfoQ高级技术编辑

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

关注

评论

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

Zebec社区上线ZIP-2(地平线升级行动)提案,海量激励将被释放

威廉META

CorelDRAW2023序列号及安装下载教程

茶色酒

CorelDraw2023

详解Apache Sentry->Ranger平滑升级方案

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

for循环中声明变量的一个问题回顾

老王同学

c++

人肉智能#003:为什么 Instagram 曾经值得尊敬

光毅

facebook Instagram

FL Studio2023中文电脑版本下载

茶色酒

FL Studio2023

Python电影售票系统

漫步桔田

如何使用开源构建可信赖的人工智能

开源雨林

人工智能 开源

Zebec社区上线ZIP-2(地平线升级行动)提案,海量激励将被释放

鳄鱼视界

精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南

洛神灬殇

数据结构 延时队列 算法框架 DelayedQueue 时间轮(TimeWheel)

Zebec社区上线ZIP-2(地平线升级行动)提案,海量激励将被释放

西柚子

2023-02-25:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420SP格式文件,YUV420P不要转换成YUV420SP。

福大大架构师每日一题

golang ffmpeg 福大大

架构实战营-模块三作业

🐢先生

架构实战营

EasyRecovery Photo16最新版本有哪些新功能?

茶色酒

EasyRecovery Photo16

Java 数据类型(全网最全)

kcodez

Java 后端

JVM课程作业

追随哆咪

FL Studio21水果最新完整版音乐编曲软件

茶色酒

FL Studio 21 FL Studio21

秒懂算法 | 回归算法中的贝叶斯

TiAmo

算法 贝叶斯公式 贝叶斯算法

数字孪生在智慧物流中的应用价值

申扬科技

智慧物流 数字孪生

Zebec社区上线ZIP-2(地平线升级行动)提案,海量激励将被释放

股市老人

EasyRecovery16操作简单的电脑数据恢复软件

茶色酒

EasyRecovery16

Amazon S3 服务15岁生日快乐!

亚马逊云科技 (Amazon Web Services)

数据库 云计算

三天吃透MySQL八股文(2023最新整理)

程序员大彬

Java MySQL 数据库

引领下一代操作系统技术方向 第一届OpenHarmony技术峰会成功召开

Geek_2d6073

你知道CleanMyMac是什么吗软件?好用吗

茶色酒

CleanMyMac X2023

time_point 的基本用法举例

老王同学

C++11

PHP Windows 下 XAMPP 的 xdebug 配置

HoneyMoose

零基础解读ChatPGT:对人类未来工作是威胁还是帮助?

华为云开发者联盟

人工智能 华为云 ChatGPT 企业号 2 月 PK 榜 华为云开发者联盟

推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】

汀丶人工智能

自然语言处理 推荐系统 推荐算法 推荐引擎算法

EasyRecovery16和谐版手机数据恢复软件下载

茶色酒

EasyRecovery16

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