如何开始学习Zig语言:一种通用的编程语言和工具链,用于维护健壮、高效和可重用的软件
·
初识Zig
在看NullClaw项目的时候,看到它用了Zig语言编写,于是对Zig语言进行了简单了解。
主页:主页 ⚡ Zig 编程语言 手册:Documentation - The Zig Programming Language
中文论坛:zigcc · Discussions · GitHub
Zig基本情况
Zig是由Andrew Kelley在2015年创建、2016年发布的通用、静态类型、编译型系统编程语言,核心目标是成为C语言的安全、简洁、高性能替代品,它的核心理念可概括为“显式、可预测、无魔法、自包含”。
核心特性
- 性能与硬件控制:编译器生成的代码性能接近C语言,能直接编译为本地机器码,保留C级别的硬件控制能力,同时通过数据导向设计(DOD)优化内存访问,编译器自举后内存占用大幅降低,还支持32位系统和嵌入式设备。
- 内存安全可控:无垃圾回收机制,通过统一分配器接口显式管理栈、堆、arena内存,结合编译时和运行时检查,避免悬垂指针、双重释放等内存错误。
- 简洁直观语法:无宏、预处理器、隐式转换,语法极简且行为完全可预测;支持编译时代码执行(comptime),用同一套语法实现运行时与编译时逻辑,实现零开销元编程。
- 强大跨平台与互操作能力:内置交叉编译功能,一行命令就能为x86、ARM、RISC-V、WebAssembly等多平台生成二进制;可直接通过
@cImport("header.h")调用C库,也能导出接口供C语言调用,完美兼容C生态。 - 可靠错误处理:采用
Error Union!T显式错误处理机制,强制开发者处理所有潜在错误,避免C语言中错误码易被忽略的问题。
适用场景
适合系统级编程(操作系统、设备驱动开发)、嵌入式开发(微控制器、物联网设备)、高性能后端服务(API网关、数据库驱动)、游戏引擎开发、安全应用(加密协议实现)等对性能、可靠性要求高的场景。
学习
一、基础准备
- 安装编译器:先从Zig官网(https://ziglang.org/)下载对应系统的编译器,完成安装,确保在命令行中能通过
zig命令调用。 - 了解核心定位:Zig是静态类型、编译型的系统编程语言,主打高性能、内存安全、简洁语法和跨平台能力,适合系统级编程、嵌入式开发等场景,学习前先明确它的适用方向。
二、入门学习路径
- 编写第一个程序
直接上手经典的"Hello, World!"程序,熟悉Zig的基础语法结构:
const std = @import("std");
pub fn main() void {
std.debug.print("Hello, World!\n", . {});
}
运行该程序的命令为zig run your_file.zig,通过这个过程掌握标准库导入、函数定义、程序入口等基础内容。
zig run src/hello.zig
2. 掌握基础语法
- 学习标识符规则:Zig标识符可包含字母、数字和下划线,必须以字母或下划线开头,且区分大小写,同时要避开
fn、struct等关键字。 - 熟悉类型系统:了解Zig的基础类型,以及
?T这种可选类型(用于处理可能为空的值)。 - 掌握注释方式:Zig有三种注释,
//是单行注释;///是文档注释,会被保留用于生成代码文档;//!是模块注释,需放在文件顶部的comptime块中。
三、进阶学习与实践
- 学习核心特性
深入理解Zig的内存安全机制(无垃圾回收但通过编译时检查避免内存错误)、显式错误处理(Error Union!T机制)、编译时代码执行(comptime实现零开销元编程)等核心特性。 - 动手实践项目
可以尝试实现简单的数据结构(如链表),或者开发小型命令行工具,在实践中巩固语法和特性应用。 - 参考官方资源
访问Zig官网的中文学习板块(https://ziglang.org/zh-CN/learn/),这里有一系列从零到深入的学习指南,能系统性地帮助你理解Zig的设计哲学和进阶用法。
实践
FreeBSD下安装
pkg包里直接就有
pkg search zig
py311-elelabs-zigbee-ezsp-utility-20220218 Elelabs Firmware Update Utility
zig-0.15.2 Language designed for robustness, optimality, and maintainability
zig014-0.14.0 Language designed for robustness, optimality, and maintainability
zig2tuple-g20251226 Generate ZIG_TUPLE knob for Zig ports
zigbee2mqtt-2.0.0 Use your Zigbee devices without the vendor's bridge or gateway
pkg安装
sudo pkg install zig
创建目录并初始化
mkdir hello-world
cd hello-world
zig init
编译测试
zig build run
输出
zig build run
All your codebase are belong to us.
Run `zig build test` to run the tests.
执行
zig build test
但是这个没有任何输出
写一个helloworld
写文件hello.zig
const std = @import("std");
pub fn main() !void {
try std.fs.File.stdout().writeAll("Hello, World!\n");
}
编译、执行
zig build-exe src/hello.zig
编译完成之后生成hello文件,执行
./hello
Hello, World!
直接执行
zig run src/hello.zig
在经过几秒的编译之后,执行出现Hello, World!
Ubuntu下安装
从下载页码: 下载 ⚡ Zig 编程语言
下载0.15.2版本,https://ziglang.org/builds/zig-x86_64-linux-0.16.0-dev.2682+02142a54d.tar.xz
wget https://ziglang.org/download/0.15.2/zig-x86_64-linux-0.15.2.tar.xz
xz -d zig-x86_64-linux-0.15.2.tar.xz
tar -xvf zig-x86_64-linux-0.15.2.tar
这是0.16.0版本
wget https://ziglang.org/builds/zig-x86_64-linux-0.16.0-dev.2682+02142a54d.tar.xz
xz -d zig-x86_64-linux-0.16.0-dev.2682+02142a54d.tar.xz
tar -xvf zig-x86_64-linux-0.16.0-dev.2682+02142a54d.tar
添加路径,直接执行,并在.bashrc文件中加入
export PATH=$PATH:~/path/to/zig
# 我的是在~/tools/zig-x86_64-linux-0.15.2
export PATH=$PATH:~/tools/zig-x86_64-linux-0.15.2
更多推荐
所有评论(0)