Julia 教程(中文版)
Julia 是一门高性能的动态编程语言,特别适合科学计算、数据分析、机器学习等领域。它结合了 Python 的易用性和 C 的速度。本教程从零基础开始,逐步带你掌握 Julia 的核心概念。
1. 安装 Julia
下载与安装
- 访问官网:https://julialang.org/downloads/
- 选择适合你操作系统的版本(Windows / macOS / Linux)
- 下载并安装
启动 Julia
- 命令行:打开终端,输入
julia进入 REPL(交互式环境) - 推荐编辑器:
- VS Code + Julia 插件(最推荐)
- Juno(基于 Atom)
- Jupyter Notebook(通过
IJulia)
2. 第一个程序:Hello World
println("Hello, Julia!")
在 REPL 中直接输入,或保存为 hello.jl 文件,然后运行:
julia hello.jl
3. 基本语法
变量与类型
x = 10 # 整型 Int64
y = 3.14 # 浮点型 Float64
name = "Julia" # 字符串
flag = true # 布尔值
# 显式指定类型
a::Int = 5
b::Float64 = 2.0
Julia 是动态类型,但支持类型注解以提升性能。
基本运算
5 + 3 # 8
10 / 3 # 3.333...
10 ÷ 3 # 3(整除,使用 ÷,即 \div + Tab)
10 % 3 # 1
2^3 # 8
字符串
s1 = "Hello"
s2 = "World"
greeting = "$s1, $s2!" # 字符串插值 → "Hello, World!"
# 多行字符串
poem = """
床前明月光,
疑是地上霜。
"""
4. 控制流
条件语句
x = 10
if x > 0
println("正数")
elseif x < 0
println("负数")
else
println("零")
end
循环
# for 循环
for i in 1:5
println(i)
end
# while 循环
i = 1
while i <= 5
println(i)
i += 1
end
5. 容器类型
数组(Array)
arr = [1, 2, 3, 4, 5]
matrix = [1 2 3; 4 5 6] # 2×3 矩阵
push!(arr, 6) # 添加元素 → [1,2,3,4,5,6]
arr[1] # 索引从 1 开始!→ 1
arr[2:4] # 切片 → [2,3,4]
# 多维数组
A = rand(3, 3) # 3×3 随机矩阵
元组(Tuple)——不可变
t = (1, "hello", 3.14)
t[1] = 2 # 错误!不可修改
字典(Dict)
dict = Dict("name" => "Julia", "version" => 1.9)
dict["name"] # "Julia"
haskey(dict, "age") # false
集合(Set)
s = Set([1, 2, 2, 3]) # {1, 2, 3}
6. 函数
定义函数
function add(x, y)
return x + y
end
# 简洁写法
add(x, y) = x + y
# 匿名函数
f = x -> x^2
多重派发(Multiple Dispatch)—— Julia 核心特性
greet(name::String) = println("Hello, $name!")
greet(num::Int) = println("Number: $num")
greet("Alice") # Hello, Alice!
greet(42) # Number: 42
7. 包管理(Pkg)
Julia 自带强大的包管理器。
using Pkg
# 进入 Pkg 模式(按 ])
# 添加包
Pkg.add("Plots")
Pkg.add("DataFrames")
# 使用包
using Plots
plot(rand(10))
常用包:
| 功能 | 包名 |
|---|---|
| 绘图 | Plots, PyPlot |
| 数据处理 | DataFrames, CSV |
| 线性代数 | LinearAlgebra(内置) |
| 机器学习 | Flux |
| 统计 | Statistics(内置) |
8. 性能技巧
类型稳定(Type Stability)
# 好:类型稳定
function sum_positive(arr::Vector{Int})
s = 0
for x in arr
if x > 0
s += x
end
end
return s
end
# 坏:返回类型不一致
bad(x) = x > 0 ? x : "negative" # 返回 Int 或 String
使用 @. 向量化
x = [1, 2, 3]
y = sin.(x) # 对每个元素应用 sin
预分配数组
result = zeros(1000) # 预分配
for i in 1:1000
result[i] = i^2
end
9. 宏(Macros)
@time sleep(1) # 计时
@show x # 显示变量名和值
@which sin(3.14) # 查看函数定义位置
10. 示例:求斐波那契数列
function fib(n)
if n <= 1
return n
end
a, b = 0, 1
for i in 2:n
a, b = b, a + b
end
return b
end
println(fib(10)) # 55
学习资源推荐
| 资源 | 链接 |
|---|---|
| 官方文档 | https://docs.julialang.org |
| Julia 中文社区 | https://discourse.juliacn.com |
| 视频教程 | Bilibili 搜索 “Julia 教程” |
| 书籍 | Julia Programming for Data Science |
小练习
- 写一个函数判断素数
- 读取 CSV 文件并画图(使用
CSV.jl和Plots.jl) - 实现一个简单的线性回归
恭喜!你已掌握 Julia 基础!
继续深入:
- 元编程(Metaprogramming)
- 并行计算(
@threads,Distributed) - GPU 编程(
CUDA.jl) - 构建自己的包
需要我为你生成 完整项目示例(如数据分析、机器学习模型)吗?欢迎继续提问!🚀