强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

Julia 教程 / Julia 简介与环境搭建

Julia 简介与环境搭建

1. Julia 诞生背景与发展历程

Julia 由 MIT 的 Jeff Bezanson、Stefan Karpinski、Viral B. Shah 和 Alan Edelman 于 2012 年首次发布,旨在解决科学计算领域长期存在的 “双语言问题”(two-language problem)——研究者先用 Python/MATLAB 原型验证,再用 C/Fortran 重写以获得性能。

Julia 的设计目标:

  • 像 Python 一样易学易用
  • 像 C 一样快(JIT 编译到 LLVM IR)
  • 原生支持并行与分布式计算
  • 多重派发(multiple dispatch)作为核心范式

版本里程碑

年份事件
2012Julia 首次公开发布(v0.1)
2018Julia 1.0 正式发布,承诺向后兼容
2021Julia 1.6 — 长期支持版本(LTS)
2022Julia 1.8 — 编译延迟显著改善
2023Julia 1.9 — 包预编译大幅提速
2024Julia 1.10 — 并行垃圾回收改进
2025Julia 1.11 — 持续优化启动时间

2. Julia vs Python / MATLAB / R 对比

特性JuliaPythonMATLABR
执行方式JIT 编译解释JIT (有限)解释
原生速度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
多重派发✅ 核心特性S3/S4 有限支持
并行计算原生支持multiprocessingParallel Computing Toolboxparallel 包
类型系统强类型、动态动态动态动态
包管理Pkg (内置)pip/conda内置CRAN
开源✅ MIT❌ 商业✅ GPL
学习曲线中等中等
生态成熟度中等极成熟成熟统计领域成熟
元编程强大(宏)有限有限

💡 提示: Julia 不是 Python 的替代品,而是科学计算的补充选择。数据预处理仍可用 Python,但核心数值算法在 Julia 中可获得原生速度。


3. 安装方式

方式一:juliaup(推荐)

juliaup 是官方推荐的版本管理工具,类似 Rust 的 rustup

# Linux / macOS 一键安装
curl -fsSL https://install.julialang.org | sh

# 查看已安装版本
juliaup status

# 安装特定版本
juliaup add 1.10

# 切换默认版本
juliaup default 1.10

# 更新所有已安装版本
juliaup update

方式二:官方二进制

# 下载对应平台的二进制包
wget https://julialang-s3.julialang.org/bin/linux/x64/1.10/julia-1.10.2-linux-x86_64.tar.gz

# 解压
tar -xzf julia-1.10.2-linux-x86_64.tar.gz

# 添加到 PATH
export PATH="$HOME/julia-1.10.2/bin:$PATH"

# 验证安装
julia --version

方式三:系统包管理器

# Ubuntu / Debian
sudo apt install julia

# Arch Linux
sudo pacman -S julia

# macOS (Homebrew)
brew install julia

# Fedora
sudo dnf install julia

⚠️ 注意: 系统包管理器的版本通常滞后,建议使用 juliaup 获取最新稳定版。


4. REPL 模式切换

Julia REPL(Read-Eval-Print Loop)是交互式编程的核心工具,支持四种模式:

默认模式(Julia 模式)

julia> 1 + 2
3

julia> println("Hello, Julia!")
Hello, Julia!

julia> ans    # 上一次计算的结果
3

Shell 模式(;

julia> ;                  # 进入 shell 模式
shell> ls -la
shell> pwd
/home/user

shell> echo "from julia shell"
from julia shell

# 也可以在一行中使用
julia> run(`echo "inline command"`)

帮助模式(?

julia> ?                  # 进入帮助模式
help> println
help> rand
help> @time

# 快捷方式:直接在默认模式输入 ?
julia> ?println

包管理模式(]

julia> ]                  # 进入包管理模式
(@v1.10) pkg> status
(@v1.10) pkg> add DataFrames
(@v1.10) pkg> rm DataFrames
(@v1.10) pkg> update

# 返回 Julia 模式
(@v1.10) pkg> <Backspace>
julia>

搜索模式(Ctrl+R

在 REPL 中按 Ctrl+R 可搜索历史命令,类似 Bash 的反向搜索。


5. 第一个 Julia 程序

REPL 交互

julia> # Fibonacci 数列
julia> function fib(n)
           n <= 1 && return n
           return fib(n - 1) + fib(n - 2)
       end
fib (generic function with 1 method)

julia> fib(10)
55

julia> [fib(i) for i in 1:10]
10-element Vector{Int64}:
  1
  1
  2
  3
  5
  8
 13
 21
 34
 55

脚本文件

创建 hello.jl

# hello.jl — 第一个 Julia 脚本

function main()
    name = "Julia"
    version = VERSION
    println("Hello from $name $version!")

    # 计算圆周率近似值(Leibniz 公式)
    n = 1_000_000
    pi_approx = 4.0 * sum((-1)^k / (2k + 1) for k in 0:n)
    println("π ≈ $pi_approx (误差: $(abs(pi - pi_approx)))")
end

main()

运行脚本:

julia hello.jl

6. 开发环境配置

VSCode + Julia 扩展

VSCode 是 Julia 社区推荐的主力 IDE。

安装步骤:

  1. 安装 VSCode
  2. 扩展市场搜索 “Julia”(由 julialang 团队发布)
  3. 扩展自动检测 Julia 路径,或手动设置 julia.executablePath

常用快捷键:

快捷键功能
Shift+Enter执行选中代码发送到 REPL
Ctrl+Enter执行当前代码块
Alt+Enter执行当前文件
Ctrl+Shift+PJulia: Start REPL启动 Julia REPL

Jupyter Notebook(IJulia)

julia> using Pkg
julia> Pkg.add("IJulia")

# 自动安装 Jupyter kernel
julia> using IJulia
julia> notebook()    # 启动 Jupyter Notebook
julia> jupyterlab()  # 启动 JupyterLab

Pluto.jl(响应式 Notebook)

julia> using Pkg
julia> Pkg.add("Pluto")

julia> using Pluto
julia> Pluto.run()   # 在浏览器中打开

💡 提示: Pluto 是响应式(reactive)Notebook,修改一个单元格后相关单元格自动重新计算,非常适合教学和探索性分析。


7. JuliaHub 包生态概览

JuliaHub 是 Julia 的官方包注册中心,截至 2026 年已有 9000+ 个注册包。

热门领域与代表包

领域包名说明
数据处理DataFrames.jl类似 pandas
可视化Plots.jl, Makie.jl绑定多后端
机器学习Flux.jl纯 Julia 的深度学习框架
微分方程DifferentialEquations.jlODE/SDE/DDE 求解器
优化JuMP.jl数学优化建模语言
统计Distributions.jl概率分布
图计算Graphs.jl图算法
WebGenie.jl全栈 Web 框架
并行Distributed.jl内置分布式计算
量子计算Yao.jl量子电路模拟

查找与安装包

# 在 JuliaHub 上搜索
# https://juliahub.com/

# 安装包
]add DataFrames Plots Flux

# 查看已安装包
]status

# 搜索关键词
]search "optimization"

8. 编译延迟(JIT Warm-up)问题

Julia 的 JIT(Just-In-Time)编译机制意味着首次调用函数时会触发编译,造成明显的延迟。这被称为 “time to first plot”(TTFP) 问题。

现象演示

julia> @time rand(1000, 1000) * rand(1000, 1000)
  0.582 seconds    # 首次:包含编译时间
# ...

julia> @time rand(1000, 1000) * rand(1000, 1000)
  0.015 seconds    # 第二次:纯执行时间
# ...

缓解方案

方案说明效果
PackageCompiler.jl预编译为系统镜像⭐⭐⭐⭐⭐
--compiled-modules=no禁用预编译(调试用)
Julia 1.9+ 延迟加载包按需加载⭐⭐⭐⭐
Revise.jl开发时自动加载修改⭐⭐⭐
# 使用 PackageCompiler 创建自定义系统镜像
using Pkg
Pkg.add("PackageCompiler")

using PackageCompiler
create_sysimage(
    [:DataFrames, :Plots, :Flux],
    sysimage_path="my_sysimage.so"
)

# 启动时加载自定义镜像
# julia --sysimage=my_sysimage.so

⚠️ 注意: Julia 1.9 起引入了延迟包加载(package extensions),TTFP 已大幅改善。对于长时间运行的计算任务(>10 秒),编译延迟通常可忽略不计。

💡 提示: 长期运行的服务(如 Web 后端)只需编译一次,后续请求享受 JIT 速度。这使 Julia 非常适合 科学计算微服务


9. 业务场景:为什么选择 Julia?

场景一:量化金融

  • Black-Scholes 模型蒙特卡洛模拟,Julia 比 Python 快 50-100 倍
  • 自动微分(ForwardDiff.jl)无需手写梯度
  • DifferentialEquations.jl 处理随机微分方程

场景二:气候与地球科学

  • 大规模数值模拟(大气、海洋模型)
  • 分布式计算天然支持多节点并行
  • 高维数据处理与可视化

场景三:机器学习研究

  • Flux.jl 支持自定义层、GPU 训练
  • Zygote.jl 提供源到源自动微分
  • 与 Python 生态互操作(PyCall.jl)

场景四:生物信息学

  • BioJulia 生态(BioSequences.jl, Phylogenetics.jl)
  • 高效处理基因组数据
  • 统计建模与贝叶斯推断

10. 快速上手小练习

# 练习 1:华氏温度转摄氏
fahrenheit_to_celsius(f) = (f - 32) * 5 / 9
fahrenheit_to_celsius(212)    # 100.0
fahrenheit_to_celsius(98.6)   # 37.0

# 练习 2:判断闰年
function is_leapyear(year)
    return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)
end
is_leapyear(2024)   # true
is_leapyear(2025)   # false

# 练习 3:矩阵乘法计时
using LinearAlgebra
A = rand(500, 500)
B = rand(500, 500)
@time A * B

扩展阅读


📌 本章小结: Julia 解决了科学计算的双语言问题,通过 JIT 编译实现接近 C 的性能。使用 juliaup 安装,VSCode + Julia 扩展是最佳开发环境。首次编译延迟可通过 PackageCompiler.jl 缓解,长期运行任务无需担忧。