Skip to content

Latest commit

 

History

History
230 lines (131 loc) · 10.1 KB

3818.md

File metadata and controls

230 lines (131 loc) · 10.1 KB

我应该学习 Julia 吗?

原文:www.kdnuggets.com/2022/11/learn-julia.html

我应该学习 Julia 吗?

图片由作者提供

数据科学领域主要由 Python 和 R 编程语言主导。这些语言受欢迎的原因是语法简单、社区庞大以及开源贡献者的支持。即使在招聘网站上,你也会看到招聘人员寻找擅长 Python、SQL 和 R 的开发者和数据科学家。


我们的前三个课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业生涯。

2. Google 数据分析专业证书 - 提升你的数据分析技能

3. Google IT 支持专业证书 - 支持你所在组织的 IT 需求


但这是否很快会改变?有一个新的竞争者名为Julia,它是为了高性能科学计算而构建的。

排名 编程语言 评分
25 PL/SQL 0.52%
26 Lisp 0.44%
27 Julia 0.43%
28 Kotlin 0.43%
29 Scala 0.42%

TIOBE 指数 2022 年 10 月

目前,Julia 在 TIOBE 指数中排名第 27,但它具备成为前 10 的通用编程语言和前 5 的数据科学语言的所有属性。Julia 的稳定版本于 2018 年发布,创始人承诺的 90%已经实现。

创始人 Jeff Bezanson、Stefan Karpinski、Alan Edelman 和 Viral B. Shah 在开始时宣布 Julia 将会是:

  • 与 C 一样快

  • 动态性类似于 Ruby

  • 你可以编写类似 Matlab 的概念

  • 在宏方面类似于 Lisp

  • 与 Python 一样通用

  • 在统计友好性方面类似于 R

  • 它将采用类似 Perl 的简单字符串操作

  • 类似于 Hadoop 的分布式

  • 对线性代数非常强大

简而言之,你将获得所有世界上最好的东西。

“Python 不是机器学习的未来” - Jeremy Howard

YouTube 视频中,他讨论了 Python 在处理大数据集和机器学习应用时的挫折。为了实现高性能,我们必须使用用其他语言编写的库,并使用各种包来有效地实现并行计算。他还解释了 Julia 如何在几年内取代 Python。

在这篇文章中,我们将深入探讨 Julia,并将其与 Python 进行比较。此外,我们将了解 Julia 如何对你的职业生涯最有利,并查看一些最佳学习资源。

什么是 Julia?

Julia 是一种高层次的通用语言,允许研究人员和科学家更快地实现和执行。它专为高性能计算设计。

根据 Julia 的开发者说,“Julia 是为科学计算、统计分析、机器学习、数据挖掘、大规模线性代数、分布式和并行计算而构建的。”

你可以从官方网站 下载安装程序 并在几秒钟内安装。当前的稳定版本是 1.8.2,如果你正在从 R 和 Matlab 切换过来,你会觉得理解其语法和函数非常自然。

我应该学习 Julia 吗?

作者提供的图片

你可以使用 Pkg 安装包,如下所示,或者在 Repl 中输入“]”。

using Pkg
Pkg.add(["PyPlot", "CSV", "DataFrames"])

就像 Python 中的 pandas 一样,我们可以简单地将 CSV 文件加载为数据框,而无需额外工作。

在示例中,我们导入了 CSV 和 DataFrames 包,然后使用 CSV.read 读取 CSV 文件并将其转换为数据框。

using CSV
using DataFrames
df_raw = CSV.read("Heart_Disease_Dataset.csv", DataFrame)

我应该学习 Julia 吗?

注意: 你也可以使用与 Python 类似的 import 语法导入包。

Julia vs. Python

在这一部分,我们将把所有编程语言中的“王者”(Python)与 Julia 进行比较。

1. 语法

Julia 不是一种面向对象的编程语言。它是一种动态类型语言,帮助科学家和研究人员用更接近英语的方式编写代码。Julia 比 Python 更简洁,尤其是在科学计算方面。

你可以像在 Matlab 中一样编写多项式。在下面的示例中,我们绘制了一个多项式方程及其对数函数,并用蓝色标记。

我们使用 Pyplot 创建图表,这类似于 Matplotlib。

using PyPlot
PyPlot.svg(true)
x = range(-3,stop=3,length=20)
y = 2*x.² .+ 0.7

figure(figsize=(6,4.3))       #width and height, in inches
plot(x,y,linestyle="-",color="r",linewidth=1.0)
plot(x,log.(y),linestyle=":",color="b",linewidth=3.0)

我应该学习 Julia 吗?

就像 Python 的三元条件运算符一样,我们可以将 if-else 语句简化为一行。

x = 80; y = 43

if x > y
   println("$x is greater than $y")
end
>>> 80 is greater than 43

它比 Python 简单得多。

x > y && println("$x is greater than $y")
>>> 80 is greater than 43

2. 性能

Julia 发布的 基准测试 显示了 Julia 相比 Python 更优越的执行时间。

在一个示例中,他们模拟了 10 亿次掷硬币并将结果存储在一个数组中。结果是 Julia 比 Python 快了 62 倍。

语言 时间 (秒)
PYTHON 1804
JULIA 28.8

Julia 原生支持并行计算。执行速度接近 C。

3. 包生态系统

Julia 有 7000 个注册的 ,你可以找到各种数据分析、文件处理、机器学习、科学计算和数据工程的工具。

尽管包的数量远少于 Python,但使用 Julia 包的主要优点是大多数包都是 100% 使用 Julia 编写的。

你甚至可以在 Julia 中找到你喜欢的 Python 库,例如 Fast AI,它是建立在 flux.jl 之上的。

我应该学习 Julia 吗?

图片来自 FluxML/FastAI.jl

4. 社区

社区支持是编程语言的支柱。一个庞大而活跃的社区意味着更多的学习资源来解决问题。如你所知,Julia 是一种相对较新的语言,它有一个较小但充满热情的社区。如果你遇到独特的问题,与 Python 相比,你可能更难在网上找到最终的解决方案。

5. 并行性

Julia 和 Python 都可以并行运行操作。对于任何应用程序或解决方案,必须使用所有可用的资源(计算和内存)。Julia 天生支持并行计算和更好的数据管理。而在 Python 中,你必须使用各种库来实现高性能。简而言之,Julia 的并行化语法比 Python 更简单。

那么,你应该学习它吗?

简单的回答是“是的”。这完全取决于你的职业选择和时间问题。如果你是一个希望从事科学领域的学生,我建议你开始学习 Julia。

如果你刚开始数据科学的职业生涯,我建议你选择 Python。它是行业标准,公司会非常乐意雇用你。

Julia 也适合那些在该领域有专业知识并希望通过学习高性能语言来保持未来竞争力的数据科学家和工程师。

学习 Julia 的关键原因:

  • 这是一种动态类型语言,使得使用起来非常简单。

  • 它是开源的,代码可以在 GitHub 上找到。

  • Julia 允许你直接调用 Python、C 和 Fortran 库。

  • 你可以享受类似于 C 的性能,同时减少代码行数。

  • Julia 可以轻松处理复杂的数据分析任务。

  • 它具有用于更大和更复杂模型的原生机器学习和深度学习包。

  • 从 Python 和 C 转换代码是容易的。

如何开始学习 Julia?

如果你是 Julia 新手,我强烈建议你从 Julia 入门 课程开始你的学习之旅。课程包括互动编码练习和 16 个视频,涵盖了基本语法、数据结构、函数和包以及用于数据分析任务的 DataFrames。

学习过程永无止境,你可以通过阅读书籍、备忘单、博客和教程来进一步学习。此外,如果你在数据科学领域已是专家并且正在学习新语法,你可以开始从事数据分析项目。

额外资源:

  • 探索有关机器学习、数据科学、统计学等领域的 Julia 书籍

  • 免费的 Julia 教程 涵盖数据科学、科学计算和机器学习。

  • YouTube 上有大量的教程和课程播放列表。

  • 通过参考Julia 速查表来快速掌握 Julia 的语法和功能。

  • 阅读社区贡献的Medium博客。

Abid Ali Awan@1abidaliawan)是一位认证的数据科学专家,热衷于构建机器学习模型。目前,他专注于内容创作和撰写关于机器学习和数据科学技术的技术博客。Abid 拥有技术管理硕士学位和电信工程学士学位。他的愿景是利用图神经网络为正在经历心理问题的学生构建 AI 产品。

更多相关内容