跳至主要内容

从 MATLAB 进阶到 Julia

为有意转向 Julia 编程语言的 MATLAB 程序员准备的指南
Javier Canales Luna
Javier Canales Luna

创建您的免费账户

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

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

在充满颠覆的数据科学世界里,没有什么是一成不变的。每当有新工具和新软件出现,它们都有可能挑战既有的技术格局。这种动态在编程语言领域尤为明显。已有相当多适合数据科学的编程语言。尽管当下数据领域由少数非常流行的语言主导,其他据称更强大的新语言也在迅速崛起,其中最具前景的代表之一就是 Julia。

Julia 于 2012 年首次发布,可谓数据科学领域冉冉升起的新星。尽管问世不久,Julia 凭借高性能和难以匹敌的计算速度,已令数值计算领域刮目相看。多年来,Julia 日益成熟,如今常被称为数据科学和人工智能的“未来语言”。

开始学习 Julia 的理由很多。然而,如何过渡取决于您熟悉的编程语言。多数文章和课程关注如何从 MATLAB 转向两大热门数据科学语言 Python 和 R,但同样有必要为其他语言的用户提供转向 Julia 的资源。

本文旨在向 MATLAB 程序员介绍 Julia。我们将探讨两种语言的异同,并提供一些从 MATLAB 迁移到 Julia 以进行数据分析与可视化的建议。让我们开始吧!

MATLAB 用于做什么?

MATLAB 是一门专为数值计算设计的编程语言。自 1984 年推出以来,MATLAB(“MATrix LABoratory”的缩写)在学术界与科学研究中被广泛采用。尽管相对“资深”,它仍是一门极其流行的编程语言。到 2022 年 10 月,它在 PYPL 指数和 TIOBE 指数中均位列第 14 位。

MATLAB 在高层次计算任务方面表现出色,包括高级数学与统计运算。该语言还具备绘图与算法实现能力,使其成为数据科学的理想之选。

不过,MATLAB 也有一个重要的前提:它是专有工具。这意味着除非您的所属机构为您提供访问权限(学术环境中常见),否则您可能需要支付高额费用购买许可证。此外,由于用户无法访问其源代码,理解 MATLAB 某些功能的工作原理可能变得困难。

与可免费使用的其他编程语言相比,这些因素会使 MATLAB 的吸引力降低。

Julia 用于做什么?

每项创新背后,都是对改进或超越当时主导技术的渴望。这正是 Julia 的动力来源——它汲取了多种强大编程语言的灵感。正如语言的创始人 Jeff Bezanson、Stefan Karpinski、Alan Edelman 和 Viral B. Shah 在一篇阐述他们为何创造 Julia的文章中所说:

“我们希望一种开源、许可宽松的语言。我们想要 C 的速度与 Ruby 的动态性。我们想要一种同像性的语言,具备像 Lisp 那样真正的宏,同时又有像 Matlab 那样直观、熟悉的数学记法。我们希望它像 Python 那样适合通用编程,像 R 那样便于统计,像 Perl 那样自然地处理字符串,像 Matlab 那样在线性代数方面强大,并且像 shell 一样善于将程序粘合在一起。既要足够简单易学,又能让最挑剔的黑客满意。我们要它既可交互,又能编译。”

凭借这番“择优而取”的独特特性,Julia 正在迅速积累声势。

自其首个版本发布以来,Julia 的下载量已超过 4000 万次,社区为用户注册了超过 8,000 个 Julia 软件包,涵盖各种数学库、数据处理工具以及通用计算包。

就其在所有语言中的受欢迎程度而言,2022 年 10 月,Julia 在 PYPL 指数与 TIOBE 指数中分别位列第 25 与第 27。

Julia 是一门通用编程语言,可用于诸多软件开发任务,如 Web 和游戏开发,但它尤其适合机器学习与统计计算。确实,Julia 爱好者乐于将其称作数据科学领域 Python 与 R 的接班人。

话虽如此,Julia 要成为数据科学的默认语言仍有很长的路要走。刚踏入此领域的人仍很可能会优先学习 Python 和 R。然而,作为对既有编程技能的有益补充,Julia 是一个极佳选择。您可以在另一篇博文中进一步了解Julia 的应用场景。

MATLAB 用户需要了解的 Julia 要点

拥抱 Julia 的理由很充分。本节我们将仔细看看使 Julia 如此强大的主要特性,以及为何它是 MATLAB 用户转向 Julia 的理想候选。

MATLAB 与 Julia 的速度对比

Julia 的设计初衷是服务技术与科学用户。为解决业务问题并支持决策,数据从业者常需处理大型数据集与复杂技术,包括机器学习算法与人工神经网络。

这些活动不仅需要大量计算资源,还需要一门能在计算机上快速运行代码的编程语言,以免数据专业人士为等待结果而耗时过久。

然而,选择合适的编程语言并不容易。多数语言都要在性能与代码可读性之间取舍。

传统上,高性能的编程语言往往更难使用,反之亦然。比如流行的“高级”语言(如 MATLAB 和 Python)为灵活性与高度可读性牺牲了速度;而 C、C++、Fortran 等语言以速度见长,但语法复杂。

这意味着开发者需要更多时间,且往往需要更丰富的编程经验,才能用此类语言编写代码。

这正是 Julia 大显身手之处。Julia 既相对容易、快速地编写程序,又能非常迅速地运行代码与执行计算。凭借接近 C 的性能,Julia 已是史上最快的语言之一。与 MATLAB 相比,Julia 的性能显著更优。

为展示 Julia 无以匹敌的性能,下面的表格给出一个基准测试:在通过 for 循环从给定向量创建矩阵的任务中,Julia 与 MATLAB 的表现如何。有关该基准测试的更多细节见这篇文章。

N

Julia(单线程)

Julia(多线程)

MATLAB(单线程)

MATLAB(多线程)

1000

0.035s

0.007s

0.067s

0.0367s

2000

0.126s

0.031s

0.255s

0.034s

3000

0.289s

0.062s

0.543s

0.073s

4000

0.554s

0.116s

0.965s

0.123s

5000

0.831s

0.215s

1.510s

0.189s

6000

1.108s

0.274s

2.161s

0.268s

7000

1.489s

0.304s

2.936s

0.364s

8000

1.948s

0.402s

3.830s

0.478s

9000

2.460s

0.505s

4.847s

0.610s

10000

3.039s

0.616s

5.977s

0.753s

MATLAB 与 Julia 的语法对比

如上一节所述,Julia 终结了性能与可读性的两难。该语言语法近似英文、动态类型化,像 MATLAB 或 Python 一样易学易写;同时又是编译型语言,因而能达到 C 或 Fortran 等静态类型语言的速度。

更妙的是,如果您正考虑从 MATLAB 转向 Julia,有个好消息:从语法上看,两者非常相似。这并不令人意外——毕竟 MATLAB 是 Julia 创始人主要的灵感来源之一。

以下是 MATLAB 与 Julia 中一些基础操作的示例:

For 循环

% for loop in MATLAB
for i = 1:N
  % do something
end
# for loop in Julia
for i in 1:N
  # do something
end

If / else 语句

% if/else in MATLAB
if i <= N
  % do something
else
  % do something else
end
# if/else in Julia
if i <= N
  # do something
else
  # do something else
end

UDF 函数

% function in MATLAB
function out  = f(x)
  out = x^2
end
# function in Julia
function f(x)
  return x^2
end

尽管相似,但 Julia 并非 MATLAB 的克隆。两者在语法与功能上仍有重大差异。下一节我们将概述 MATLAB 与 Julia 的异同点。

Julia vs MATLAB:对比

下表总结了 Julia 与 MATLAB 的差异:

 

Julia

MATLAB

定位

专注于计算科学、数据分析和人工智能的语言

用于数据分析与数学计算的语言与科学平台

语言类型

高级、通用、编译型、动态语言

高级、领域特定、解释型、动态语言

是否开源

是

否

发布年份

2012

1984

实现语言

C、C++ 以及 Julia 本身

C、C++、Java 以及 MATLAB 本身

主要用户

以数据科学家与其他数据从业者为主

全球工程师、科学家、学者与数据从业者

生态系统

已注册 8,000+ 个软件包

以内置与自定义库为主

学习难度

Julia 语法贴近英文,语言简洁易学。

MATLAB 易于上手。

文件扩展名

保存的文件扩展名为“datacamp.jl”。

保存的文件扩展名为“datacamp.m”。

优点

  • 在不牺牲代码可读性的前提下实现高性能。
  • 易于使用。
  • 语言成熟、资源丰富。
  • 易于使用。

缺点

  • 作为新兴语言,Julia 的用户社区与学习资源仍有限。
  • MATLAB 为专有软件,许可成本较高。
  • 作为解释型语言,速度慢于编译型语言。

趋势

在 PYPL 与 TIOBE 指数中分别位列第 25 与第 27(2022 年 10 月)

在 PYPL 与 TIOBE 指数中均列第 14(2022 年 10 月)

从 MATLAB 进阶到 Julia

准备好开始了吗?以下步骤可帮助您从 MATLAB 进阶到 Julia:

学习 Julia 基础

学习一门新语言,写代码是最佳方式。入门 Julia 的资源很多,但我们强烈推荐查看我们的Julia 入门课程。

该课程为 Julia 新手以及更广泛的数据科学初学者打造,从语言最基础内容讲起,逐步覆盖更深入的要点。课程结束时,您将熟悉用 Julia 编程,理解数据类型与数据结构、函数与包的基础知识,并会使用 DataFrames 处理表格数据。

您也可以查看我们的Julia 新手教程以及实用的Julia 速查表。

在您的数据项目中使用 Julia

巩固所学并获得 Julia 实战经验的极佳方式,是用这门语言来完成您感兴趣的数据项目。在自己的项目中使用 Julia 有助于您发掘其全部潜力,并助您打造出色的数据科学作品集。

在您的工作项目中使用 Julia

当您熟悉 Julia 后,就可以在日常工作中加以利用。Julia 将高性能与可读性相结合,在专业环境中可带来颠覆式提升。从药物建模到航天任务规划,各行各业的专业人士都在使用 Julia 编程。它是助您将应用与数据科学任务提升到新水平的强大工具。

用 Julia 寻找下一份工作

现在是学习 Julia 的好时机。正如Ari Joury 在她的文章中所言,如果在 Julia 成为数据科学“新常态”之前开始学习,它可能就是您通往未来的“金钥匙”。越来越多全球公司正在将 Julia 应用于数据项目,这意味着他们会尽力吸引(目前仍相对稀缺的)资深 Julia 程序员。当您的技能足够成熟时,便可开始寻找同时需要 Julia 与 MATLAB 知识的岗位。

通过 DataCamp 的数据职位平台,发现用 Julia 开启的下一步职业机会。

结语

Julia 是数据领域的后起之秀。自首次发布十年来,这门语言日臻成熟,如今具备了少数语言才有的卓越特性。

尽管 MATLAB 仍表现不俗,但在快速演变的数据科学版图中,没有任何编程语言可以高枕无忧。今天的热门,明天也可能被更现代、更强大的工具所取代。

近年 Julia 的主要短板在于“年轻”。然而,如今它已是数据科学行业最令人兴奋的新语言之一。那么,值得学习 Julia 吗?能否从 MATLAB 进阶到 Julia?这两个问题的答案都是肯定的。

从 MATLAB 到 Julia 常见问答

什么是 MATLAB?

MATLAB 是一门专为数值计算设计的高级编程语言。

什么是 Julia?

Julia 是一门高级的编译型编程语言,其特性非常适合数值分析与计算科学。

Julia 是什么时候发布的?

Julia 的第一个版本发布于 2012 年。

Julia 的主要优势是什么?

Julia 的独特之处在于兼具高性能与高代码可读性。

我是否应该从 MATLAB 转向 Julia?

原因有很多,例如 Julia 的速度、开源属性以及快速发展的生态系统。开启之路的绝佳方式是我们的Julia 入门课程。

主题