AICon议程上新60%,阿里国际、360智脑、科大讯飞、蔚来汽车分享大模型探索与实践 了解详情
写点什么

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

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

关注

评论

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

WorkPlus行政单位内部即时通讯软件的最佳解决方案

WorkPlus

如何让 iPhone 无线投屏到 Mac 上呢?airserver mac专业投屏工具

Rose

如何追踪discord.js中删除消息的用户?

百度搜索:蓝易云

Linux 运维 云服务器 Discord.js messageDelete

网络安全知识点总结

知孤云出岫

网络安全

阿里巴巴面试经验!Java高级面试指南手册程序员必备系列

阿里、莫言

Java java面试 金三银四

Python里for循环要遍历的数据很多很大怎么办?

算法的秘密

深入学习 XML 解析器及 DOM 操作技术

小万哥

xml 程序人生 编程语言 软件工程 前端开发

《代码整洁之道》PDF

程序员李木子

WorkPlus Meet局域网视频会议软件的领先解决方案

WorkPlus

CAD如何与EXCEL数据关联

Geek_2d6073

未来经济世界里,理想的财务规划与分析团队

智达方通

全面预算管理 企业规划

SQL注入攻击有什么解决办法

德迅云安全杨德俊

散热利器来袭,TG Pro for Mac让你告别Mac过热问题!

Rose

path finder for mac 激活码 最好用的文件管理浏览器

Rose

ibatis与mybatis的区别

百度搜索:蓝易云

Java Linux 运维 mybatis iBatis

精美和令人震撼的3D动态桌面壁纸Mach Desktop 4K for Mac

Rose

【线上问题】记一次公司日志基础组件SPI使用不当导致业务中断

Disaster

bug java 并发

文心一言 VS 讯飞星火 VS chatgpt (216)-- 算法导论16.2 3题

福大大架构师每日一题

福大大架构师每日一题

Kubernetes反模式避坑指南

俞凡

Kubernetes 最佳实践

解开命运之"结",重拾现实自由——《1Q84》中的奇幻现实与人生哲学

少油少糖八分饱

读书笔记 命运 村上春树 小说推荐 1Q84

Waves12破解版安装教程 Mac版全套音频效果处理工具 支持M1/M2

Rose

共享盘迁移记录robocopy常用参数mklink

百度搜索:蓝易云

Linux 运维 windows robocopy mklink

Github每日热榜2024.03.16

天马行空的大杂烩

GitHub 程序员 码农 开源软件

华为云网站高可用解决方案引爆华为云开年采购季:助力多场景下业务高可用、数据高可靠

轶天下事

WorkPlus领先的IM厂家,为企业提供高质量的沟通解决方案

WorkPlus

ACCDB MDB Explorer for mac 专业的MDB和ACCDB数据库查看器

Rose

电源常用电路:采样电路

梦笔生花

驱动 ADC采样 电源

玩转数据-Python数据采集的方法-淘宝商品详情接口

技术冰糖葫芦

API 接口

SketchUp Pro2023中文集成破解版【含草图大师2023序列号和验证码】

Rose

兼容m1 Lightroom Classic 2021 for mac(lr 2021 中文大师版)

Rose

敢闯技术无人区 TCL实业斩获多项AWE 2024艾普兰奖

Geek_2d6073

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