Table of contents
Open Table of contents
1. 起源
最近在学习Zig这个语言,起源是因为工作当中有用到typescript,需要测试一些ts代码逻辑。考虑到ts无法直接通过node的npm运行,就尝试使用最近很火的一个node运行时bun。bun可以直接运行ts,不需要使用转换,上手也很简单,对调试代码非常方便。
查看bun的源代码了解到,是使用zig语言编写的,对于目前大部分前端的生态,逐渐使用rust做开发,还是比较特别的。有兴趣的话,可以去了解一下,官网bun及代码仓库

目前国内关于Zig语言的资料、文档、书极少,大部分都是官方文档,只有极个别的文档有中文翻译。在逛github trending时,发现了一本热度比较高的电子书,《zig-book》。想着快速了解下Zig及试用下使用大模型翻译电子书,所以有了下面的双语版本。
2. zig-book介绍
-
Zig 简介:Zig 是一种现代的、底层、通用的编程语言,有些人认为它是 C 语言的现代改进版。Zig 注重简洁、一致性和稳健性,与 C 或 C++ 相比,使应用程序更容易分析、编写和调试
-
基本语法和概念:本书涵盖 Zig 的基本语法,包括如何创建新对象(标识符)。它解释了常量对象与变量对象,使用 undefined 关键字声明没有初始值的对象(但不鼓励使用,以保证安全性),以及必须使用或显式丢弃声明的对象的要求
-
核心语言特性:本书解释了块和作用域,字符串的工作方式,以及 Zig 对安全性(尤其是内存安全)的关注
-
控制流:Zig 的控制流机制,包括 if/else 语句、switch 语句、defer 和 errdefer 关键字,以及 for 和 while 循环都进行了讨论10. 还介绍了break 和 continue 的使用
-
数据结构:本书涵盖了结构体,包括如何使用 self 参数为结构体定义方法
-
内存管理:Zig 的内存空间(全局数据寄存器、堆栈、堆)和分配器(GeneralPurposeAllocator、FixedBufferAllocator、ArenaAllocator)都得到了透彻的解释。还讨论了 alloc() 和 free() 方法
-
项目:
-
Base64 编码器/解码器:本书指导读者构建一个 base64 编码器和解码器17…。它解释了 base64 算法,包括 base64 比例、编码和解码过程。此外,还介绍了 6 位转换以及位运算符的使用
-
HTTP 服务器:本书提供了一个从头开始构建基本 HTTP 服务器的项目。它解释了什么是 HTTP 服务器,它是如何工作的,以及它通常是如何实现的
-
图像过滤器:开发图像过滤器是本书涵盖的另一个项目,它解释了数字图像的工作原理以及如何应用图像过滤器
-
-
调试:本书包含一个关于调试 Zig 应用程序的章节,涵盖打印调试和通过 LLDB 等调试器进行调试。它还解释了如何调查对象的数据类型
-
指针和可选类型:解释了指针、它们的类型(单项和多项)以及它们与可选类型的关系。还讨论了 Zig 的 Null 安全方法、可选类型和可选指针
-
错误处理:涵盖了从函数返回值错误、错误集以及使用 try、catch、if 语句和 errdefer 处理错误
-
数据结构:本书介绍了 ArrayLists、HashMaps 和 LinkedLists,包括如何使用它们
-
并发:本书介绍了 Zig 中的线程和并行性,包括创建线程
-
构建系统:解释了 Zig 的嵌入式构建系统,包括如何使用用户提供的选项来定制构建过程
-
文件系统和IO:解释了输入/输出基础知识、文件描述符、标准输出、标准输入、标准错误、缓冲 IO 和文件系统基础知识。还涵盖了创建、打开、附加、删除和复制文件等操作
3. 电子书分享
在线版本:https://github.com/pedropark99/zig-book.git
自制双语版本:请关注微信公众号:yccodelab
,回复 zig-book
获取。仅个人学习使用,请勿用于商业用途