在进行数据科学项目时,您在选择主流编程语言方面有很多选项。除了 Python、R 和 SQL 这样的重量级选手外,您还可以使用其他通用或专业化语言,如 MATLAB、C/C++ 和 Go。那么,作为后来者的 Julia 又如何呢?本文将介绍 Julia 的用途,以及为何值得学习它。
什么是 Julia?
Julia 是一门令人兴奋且相对较新的编程语言,旨在成为科学计算、机器学习和数据挖掘的理想语言。自 2012 年发布以来,Julia 迅速受到资深数据从业者的青睐。
Julia 的设计目标是兼具 C 的速度、Python 的通用编程能力以及 R 的统计能力。与许多其他语言相比,Julia 功能强大且相对容易上手。
迄今为止,Julia 的下载量已超过 4000 万次,社区已为该语言注册了 8000 多个软件包。截至 2022 年 10 月,Julia 分别位列 PYPL 指数第 25 位和 TIOBE 指数第 27 位。也就是说,尽管它的受欢迎程度尚不及 Python、R 或 MATLAB,但作为一颗冉冉升起的新星,Julia 的热度已经与 SAS 或 Scala 相当。
Julia 的优缺点
面对一门旨在带来变革的新语言,人们往往容易兴奋。然而,与所有语言一样,Julia 也有其优点与不足。下面我们概括了 Julia 的一些利弊。我们在“Julia 的崛起”一文中对此有更详细的探讨:
Julia 的优点
- 速度快。关于 Julia 速度的讨论很多。就微基准测试(衡量一系列常见代码模式的性能)而言,它的表现非常出色,尽管这些结果不包含编译时间。一次深入评测发现,Julia 的处理分隔文本数据的 CSV.jl 包在读取 CSV 数据时比 Python 的 pandas 包快 1.5 至 5 倍。
- 语法清晰。Julia 的语法借鉴了现有的数据编程语言。可以把它看作带有 Python、R 和 Ruby 若干优点的 MATLAB。
- 用途广泛。正如我们将看到的,Julia 的用途很多。其多重派发等特性使其适用于众多行业和各种项目。
Julia 的缺点
- 语言尚年轻。如前所述,Julia 进入该领域的时间较短。因此,它的普及度和支持度不及 Python 和 R 等语言。
- 生态较小(但在增长)。由于较新,社区与生态仍相对较小。虽然不断涌现出许多独特的解决方案和软件包,但与 Python 这类重量级相比,仍有很长的路要走。
- 存在一些编译问题。有多方指出,使用 Julia 的即时编译(JIT)器编译代码时会有延迟。JIT 会在运行前将所有代码编译为机器码。这种延迟会让快速脚本编写变得有些令人沮丧。
Julia 的用途
作为一门新兴语言,Julia 既有优点也有不足。那么,Julia 到底用来做什么?
Julia 诞生的主要目标之一,是让程序员能够编写清晰、高层次、通用且抽象、类似数学公式的代码,同时仍能生成通常见于静态语言中的快速、低层机器码。您可以通过我们的Julia 教程,看看这门语言的实际表现。
下面我们列出了该语言表现出色的几个领域。
1. 数值计算
Julia 程序员可以使用一系列软件包来执行数值计算任务。例如,线性代数相关任务可使用 LinearAlgebra.jl 模块;求根可用 NonlinearSolve;自动微分可用 ForwardDiff 或 Enzyme。
2. 机器学习
同样,Julia 在设计时就考虑了机器学习,尤其是科学机器学习,后者侧重于来自科学数据集的挑战与洞见。作为为并行性而生的编译型语言,Julia 在某些机器学习任务上可以提供极高的速度。例如,在将机器学习模型部署到生产环境时,Julia 能显著缩短训练时间并降低成本。
随着社区的发展和众多新 ML 软件包的出现(其中许多都包含在 MLJ 框架中),Julia 在这一领域是一个很好的选择。Julia 在机器学习中的一个生动案例来自澳大利亚的一家公司,该公司负责维护全国的电力线路。通过创建 3D 地图并使用 Julia 的机器学习,他们识别网络故障与潜在故障的速度比以往快了 100 倍。
3. 统计学
Julia 的另一大功能是统计与统计分析。例如,StatsKit 元包包含用于基本统计函数的 Julia 软件包,以及处理 DataFrames 表格数据、概率分布、多元统计分析、假设检验等工具。
4. 通用编程
作为一门通用编程语言,Julia 能够构建各类软件与功能。例如,Blink 包可用于构建 Electron 图形界面应用,GameZero 为初学者引入游戏开发,Miletus 则允许您在 Julia 中构建金融合约。
我们已提到,Julia 由于语法简洁,编写程序相对容易且高效。同时,它的代码运行与计算性能也非常出色。
5. Web 开发
Julia 提供多种优秀的 Web 开发工具。例如 Genie.jl 和 Dash.jl。Genie 允许用户在 Web 上以 Julia 处理数据。它是一个全栈 Web 框架,为用户提供精简高效的 Web 应用开发工作流。Dash.jl 是通往 Dash 生态的 Julia 接口,允许您用 Julia 创建 Web 应用。
Julia 在各行业的案例
了解了 Julia 的广义用途后,我们再来看一些行业案例。Julia 官网列举了该语言的诸多应用,我们在此精选了几个重点:
6. 制药建模与研发
Julia 在医学领域应用广泛。研究人员使用 Julia 来识别与测试新药、优化治疗方案,以及用于诊断与治疗。诸如 BioJulia(生物信息学基础设施)与 Pumas(药代动力学建模,即对药物试验信息进行定量分析的科学)等软件包十分常见。比如,制药巨头辉瑞就使用 Julia 加速了新疗法的模拟。
7. 并行超级计算
Julia 速度优势的典型案例之一出现在天文学领域,常用的 AstroLib.jl 提供了天文学与天体物理学的一系列例程。
Julia 在天文学中的一个实例是 Celeste 项目:由天文学家、物理学家、计算机工程师与统计学家组成的研究团队,使用 Julia 开发了一种全新的并行计算方法。经过三年开发,他们用该方法在仅 14.6 分钟内生成了最精确的 1.88 亿个天体目录,性能提升超过 1000 倍。
8. 金融建模与管理
Julia 的性能与灵活性使其成为金融领域的有力工具。业内人士使用该语言开发模型与预测,以辅助金融决策。热门软件包之一是 JuliaFin,专注于资产管理、风险管理、算法交易、回测,以及其他计算金融领域(包括金融合约建模)。
9. 机器人学
麻省理工学院的机器人研究人员使用 Julia 来编程机器人,例如训练其行走、爬楼梯,以及穿越复杂或危险地形。业界专家再次将 Julia 在该领域的优势归功于其灵活性与通用代码,因为这使研究者能够编写清晰的函数并在多种数据类型上运行。
该领域中受欢迎的包集合之一是 JuliaRobotics,其中包含诸如 MotionCaptureJointCalibration.jl 等 Julia 包,可基于动作捕捉数据为机器人提供运动学标定。
10. 网络安全
Cisco 的网络专家使用 Julia 的 Flux.jl 包来改进网络安全并用于机器学习。在该领域使用 Julia 的主要好处之一,是能够在单一语言中编写高效代码。
开始学习 Julia
显然,Julia 的用途相当广泛。尽管它离立即取代数据科学领域中已相当成熟的 Python 或 R 还有距离,但它无疑有潜力拓展您的技术版图。若您有兴趣学习 Julia,不妨从我们的 Introduction to Julia 课程入手,了解这门快速发展的语言的关键特性。您也可以查看我们的 Julia 速查表,便于随时查阅 Julia 的基础知识。
在进行数据科学项目时,您在选择主流编程语言方面有很多选项。除了 Python、R 和 SQL 这样的重量级选手外,您还可以使用其他通用或专业化语言,如 MATLAB、C/C++ 和 Go。那么,作为后来者的 Julia 又如何呢?本文将介绍 Julia 的用途,以及为何值得学习它。
什么是 Julia?
Julia 是一门令人兴奋且相对较新的编程语言,旨在成为科学计算、机器学习和数据挖掘的理想语言。自 2012 年发布以来,Julia 迅速受到资深数据从业者的青睐。
Julia 的设计目标是兼具 C 的速度、Python 的通用编程能力以及 R 的统计能力。与许多其他语言相比,Julia 功能强大且相对容易上手。
迄今为止,Julia 的下载量已超过 4000 万次,社区已为该语言注册了 8000 多个软件包。截至 2022 年 10 月,Julia 分别位列 PYPL 指数第 25 位和 TIOBE 指数第 27 位。也就是说,尽管它的受欢迎程度尚不及 Python、R 或 MATLAB,但作为一颗冉冉升起的新星,Julia 的热度已经与 SAS 或 Scala 相当。
Julia 的优缺点
面对一门旨在带来变革的新语言,人们往往容易兴奋。然而,与所有语言一样,Julia 也有其优点与不足。下面我们概括了 Julia 的一些利弊。我们在“Julia 的崛起”一文中对此有更详细的探讨:
Julia 的优点
Julia 的缺点
Julia 的用途
作为一门新兴语言,Julia 既有优点也有不足。那么,Julia 到底用来做什么?
Julia 诞生的主要目标之一,是让程序员能够编写清晰、高层次、通用且抽象、类似数学公式的代码,同时仍能生成通常见于静态语言中的快速、低层机器码。您可以通过我们的Julia 教程,看看这门语言的实际表现。
下面我们列出了该语言表现出色的几个领域。
1. 数值计算
Julia 程序员可以使用一系列软件包来执行数值计算任务。例如,线性代数相关任务可使用 LinearAlgebra.jl 模块;求根可用 NonlinearSolve;自动微分可用 ForwardDiff 或 Enzyme。
2. 机器学习
同样,Julia 在设计时就考虑了机器学习,尤其是科学机器学习,后者侧重于来自科学数据集的挑战与洞见。作为为并行性而生的编译型语言,Julia 在某些机器学习任务上可以提供极高的速度。例如,在将机器学习模型部署到生产环境时,Julia 能显著缩短训练时间并降低成本。
随着社区的发展和众多新 ML 软件包的出现(其中许多都包含在 MLJ 框架中),Julia 在这一领域是一个很好的选择。Julia 在机器学习中的一个生动案例来自澳大利亚的一家公司,该公司负责维护全国的电力线路。通过创建 3D 地图并使用 Julia 的机器学习,他们识别网络故障与潜在故障的速度比以往快了 100 倍。
3. 统计学
Julia 的另一大功能是统计与统计分析。例如,StatsKit 元包包含用于基本统计函数的 Julia 软件包,以及处理 DataFrames 表格数据、概率分布、多元统计分析、假设检验等工具。
4. 通用编程
作为一门通用编程语言,Julia 能够构建各类软件与功能。例如,Blink 包可用于构建 Electron 图形界面应用,GameZero 为初学者引入游戏开发,Miletus 则允许您在 Julia 中构建金融合约。
我们已提到,Julia 由于语法简洁,编写程序相对容易且高效。同时,它的代码运行与计算性能也非常出色。
5. Web 开发
Julia 提供多种优秀的 Web 开发工具。例如 Genie.jl 和 Dash.jl。Genie 允许用户在 Web 上以 Julia 处理数据。它是一个全栈 Web 框架,为用户提供精简高效的 Web 应用开发工作流。Dash.jl 是通往 Dash 生态的 Julia 接口,允许您用 Julia 创建 Web 应用。
Julia 在各行业的案例
了解了 Julia 的广义用途后,我们再来看一些行业案例。Julia 官网列举了该语言的诸多应用,我们在此精选了几个重点:
6. 制药建模与研发
Julia 在医学领域应用广泛。研究人员使用 Julia 来识别与测试新药、优化治疗方案,以及用于诊断与治疗。诸如 BioJulia(生物信息学基础设施)与 Pumas(药代动力学建模,即对药物试验信息进行定量分析的科学)等软件包十分常见。比如,制药巨头辉瑞就使用 Julia 加速了新疗法的模拟。
7. 并行超级计算
Julia 速度优势的典型案例之一出现在天文学领域,常用的 AstroLib.jl 提供了天文学与天体物理学的一系列例程。
Julia 在天文学中的一个实例是 Celeste 项目:由天文学家、物理学家、计算机工程师与统计学家组成的研究团队,使用 Julia 开发了一种全新的并行计算方法。经过三年开发,他们用该方法在仅 14.6 分钟内生成了最精确的 1.88 亿个天体目录,性能提升超过 1000 倍。
8. 金融建模与管理
Julia 的性能与灵活性使其成为金融领域的有力工具。业内人士使用该语言开发模型与预测,以辅助金融决策。热门软件包之一是 JuliaFin,专注于资产管理、风险管理、算法交易、回测,以及其他计算金融领域(包括金融合约建模)。
9. 机器人学
麻省理工学院的机器人研究人员使用 Julia 来编程机器人,例如训练其行走、爬楼梯,以及穿越复杂或危险地形。业界专家再次将 Julia 在该领域的优势归功于其灵活性与通用代码,因为这使研究者能够编写清晰的函数并在多种数据类型上运行。
该领域中受欢迎的包集合之一是 JuliaRobotics,其中包含诸如 MotionCaptureJointCalibration.jl 等 Julia 包,可基于动作捕捉数据为机器人提供运动学标定。
10. 网络安全
Cisco 的网络专家使用 Julia 的 Flux.jl 包来改进网络安全并用于机器学习。在该领域使用 Julia 的主要好处之一,是能够在单一语言中编写高效代码。
开始学习 Julia
显然,Julia 的用途相当广泛。尽管它离立即取代数据科学领域中已相当成熟的 Python 或 R 还有距离,但它无疑有潜力拓展您的技术版图。若您有兴趣学习 Julia,不妨从我们的 Introduction to Julia 课程入手,了解这门快速发展的语言的关键特性。您也可以查看我们的 Julia 速查表,便于随时查阅 Julia 的基础知识。