跳至主要内容

Julia 与 Python——您该学哪一个?

我们呈现 Python 与 Julia 之间的差异,帮助您简化决策流程,从而尽快开始推进或提升您的职业发展。
Kurtis Pykes
Kurtis Pykes

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续继续即表示您接受我们的 使用条款,我们的 隐私政策 ,并且您的数据存储在美国。

数据科学与机器学习领域让机器能够从经验中学习,并对事物与人类的运作方式得出惊人的洞见。然而,要释放这些技术的潜力,需要具备一定的技术能力。为此,人们开发了许多工具,以简化数据科学和机器学习项目中的各类流程。例如,请查看2022 年数据科学家最常用的编程语言。

起初,关于初学者在数据科学与机器学习中该学习哪种编程语言的讨论,多围绕 Python 与 R 展开(您可以在另一篇文章中了解Python 与 R 在数据科学中的区别)。如今,情况开始发生变化;毫无疑问,Python 一直是近年来最受欢迎的编程语言之一。根据 2022 年 11 月的 TIOBE 指数,Python 位居流行度榜首,但也有一款新工具崭露头角,名为 Julia。  

随着 Julia 持续升温,许多有经验的数据科学与机器学习从业者会思考是否值得提升这方面技能,而初学者则在自问:“我该学 Python 还是 Julia?”本文将介绍 Python 与 Julia 之间的差异,帮助您简化决策过程,从而尽快开始推进或增强您的职业发展。 

什么是 Python? 

大多数技术领域的人都听说过 Python——它多年来一直深受开发者欢迎,尤其是在数据科学与机器学习兴起之后。该语言由 Guido van Rossum 构思,并于 1991 年首次发布,作为ABC 编程语言的后继者。 

Python 是一种高级、解释型、面向对象且具动态语义的编程语言——这意味着其变量是动态对象。Python 解释器及其随语言附带的丰富标准库均可自由分发,并提供源代码或二进制形式。 

“其高级的内置数据结构结合动态类型和动态绑定,使其非常适合快速应用开发,也可作为脚本或胶水语言来连接现有组件。” 

[来源:Python 文档]

谁在使用 Python?

Python 是一门通用语言。因此,您可以在多种硬件配置和操作系统上,用它构建涵盖广泛应用领域的软件。 

示例领域包括: 

查看我们的文章Python 用来做什么?7 个真实用例,更深入了解 Python 的使用场景。 

Python 的优势

多种因素促成了 Python 的极高人气。以下是其中几点: 

  • 易用性:Python 的语法几乎贴近自然语言,便于其他开发者阅读和理解。因此,由于语言极其简单,开发者可以更快地构建和改进项目。 
  • 多功能性:Python 是通用语言,意味着它能完成并创建多种不同的事物,从机器学习到日常任务的脚本与自动化。
  • 开源:Python 在经 OSI 批准的开源许可下开发。因此,无论是商业用途还是其他目的,均可免费使用与分发。Python 的免费分发与日益增长的人气相结合,促成了强大的语言社区,用户在需要支持时可以随时求助。
  • 库生态:库是能显著提升开发效率的有力工具。截至撰写时,已有超过 137,000 个 Python 库,可用于在各个领域创建应用。 

Python 的劣势

尽管 Python 优势众多,但也因以下原因招致不少质疑: 

  • 速度:对 Python 的主要批评之一是速度。作为动态类型的解释型语言,Python 相比 C 和 Java 等编译型语言更慢(Java 也可视为解释执行,因为它是混合型语言)。 
  • 内存消耗:Python 对数据类型较为灵活,导致内存消耗较大。
  • 移动端环境:尽管在服务器和桌面应用开发方面表现出色,但由于内存消耗高、处理速度慢于其他编程语言,Python 并不适合移动端开发。
  • 运行时错误:Python 是动态类型语言,意味着数据类型与值而非变量相关联。许多 Python 用户抱怨这种设计会引发各种问题。例如,程序中赋给变量的值可随时更改,这意味着变量的数据类型也可能变化,从而在运行时导致错误。 

什么是 Julia?

在 2022 年初、即其十周年之际,Julia Computing 宣布该编程语言已被下载近 3500 万次,几乎是三年前累计下载总量的五倍。正是这种增长势头,使得Julia走进了众多开发者的视野。

注:通过 Introduction to Julia 课程提升您的 Julia 编程技能。 

Julia 的创始人——Jeff Bezanson、Alan Edelman、Stefan Karpinski、Viral B. Shah——有一个明确目标:改进其他编程语言的不足,同时融入它们独特且理想的特性。在题为我们为何创造 Julia的博文中,作者直言不讳地写道:“我们很贪心:我们想要更多”,随后列举了他们希望 Julia 具备的多项理想且雄心勃勃的特性。

“我们想要一门开源、许可证宽松的语言。我们想要 C 的速度与 Ruby 的动态性。我们想要像 Lisp 一样同像并拥有真正宏功能的语言,但又具备像 Matlab 那样直观、熟悉的数学记号。我们想要一门像 Python 一样适合通用编程、像 R 一样易做统计、像 Perl 一样自然处理字符串、像 Matlab 一样强大的线性代数能力、并且像 shell 一样擅长把程序粘合在一起的语言。它应该非常容易学习,却能让资深黑客也满意。我们希望它既可交互又能编译。(我们是否提过,它应当快得像 C?)”

[来源:我们为何创造 Julia]

到 2018 年发布 Julia 1.0.0 时,他们在六年前许下的承诺已兑现了 90%。 

但 Julia 究竟是什么? 

最好的理解方式是:它是一门高级、动态、快速且易用的编程语言,具备非常适合数值分析与计算科学的特性。您可以在另一篇文章中进一步了解Julia 的崛起。 

谁在使用 Julia?

Julia 的主要目标之一,就是让开发者能像书写数学公式那样,编写简洁、高层、通用且抽象的代码,同时还能快速生成静态语言常见的底层机器码。 

尽管 Julia 在设计时就专为技术与科研用户考虑,但它也被视为通用语言,这意味着它在应用领域上广泛适用,且并不具备过于专门化的特性。 

这些特性使得 Julia 对涉及以下领域的开发者极具吸引力: 

  • 数值计算 
  • 机器学习
  • 统计
  • Web 开发

查看我们的文章Julia 用来做什么?Julia 编程的 10 个应用,更深入了解 Julia 的使用场景。 

Julia 的优势

  • 速度:Julia 的主要吸引力之一,无疑是速度。Julia 很快。它使用即时编译(JIT),意味着减少了多次解释代码的机会,从而降低开销。此外,在基准测试中,Julia 一贯优于 Python、R 和 Matlab 等现有的数据编程语言,其根本原因在于 Julia 是编译型语言,而非解释型。 
  • 易用性:Julia 语法清晰——比 C++ 更简洁——易于使用与学习。它是动态类型语言,一般比静态类型语言更为精炼。
  • 目标明确:Julia 的创造者们日常工作多涉及科学计算、机器学习、数据挖掘、大规模线性代数、以及分布式与并行计算。因此,Julia 在设计时就以科学计算为核心,并配备了强大的软件包选择,进一步支持科学、数学、统计与机器学习等领域的用例。 

Julia 的劣势

尽管 Julia 的出场颇为亮眼,但它远非完美,目前仍存在一些显著限制。 

  • 年龄:Julia 是一门新语言。因此,它的流行度与支持度不及 Python 和 R 等其他语言。
  • “首次绘图耗时”问题:Julia 的 JIT 编译器仍存在一些问题,导致首次运行某些包的代码时会出现明显延迟。作者指出:“由于 Julia 的底层工作方式,这一问题并不容易解决,但过去几年在缩短编译时间方面已取得很大进展。”【来源:Julia 文档】。  
  • 生态较小:正如新技术常见的情况,Julia 的社区与生态仍处于早期阶段。尽管 Julia 拥有大量独特的解决方案与软件包,但与 Python 和 R 的生态相比仍相形见绌——后两者的生态已发展逾 20 年。 

Python vs. Julia:关键差异

Python 拥有成熟且庞大的社区,不断为语言做出贡献并支持其他 Python 开发者。该语言也极为多才多艺,拥有多种使用场景,不负“通用编程语言”之名。相对而言,尽管 Julia 也被视为通用编程语言,但其多样性明显不及 Python——不过,它是科学编程的优秀工具。 

令 Julia 极具吸引力的关键因素之一是其速度;在速度与性能上,Julia 胜过 Python。这是因为 Julia 自身就是编译型语言,而 Python 是解释型语言,需要对每一行代码重复处理,导致执行更慢。   

特性 

Python

Julia

发布年份

1991

2012

类型 

解释型 

编译型

库数量

137000+

7400+

TIOBE 指数排名(2022 年 12 月)

第 1 名

第 24 名

社区

Python 拥有庞大且成熟的社区

Julia 的社区更新且远小于 Python

数组索引

从 0 开始

从 1 开始

速度

部分领域较慢

部分领域更快

难度

容易

容易到中等

Julia vs Python——应该选择哪一个? 

现在下结论说 Julia 将在数据科学、机器学习等特定领域取代 Python 还为时过早。尽管两者都具备易读、易学的语法,但各有长处。比如,Python 拥有庞大且成熟的社区以及海量框架和库,同时极具通用性。相较之下,Julia 则是科学计算的利器,因其速度而日益流行。 

对于资深专业人士而言,如果某门语言的优势足够显著,那么学习一门新语言可能是值得的投资;但获取这项技能需要时间,可能会影响生产效率。刚踏上旅程的初学者应关注招聘平台,了解市场需求的技能,并据此武装自己。 

另一种选择语言的方式,是考虑您打算构建的程序类型。对于规模不算很大的程序,由于解释执行而非编译,Python 可能比 Julia 更快产出结果。然而,如果您计划构建需要大量 CPU 计算的程序,则更应该偏向选择 Julia。   

主题