zig-book:基于 Zig 语言的项目式入门学习指南项目

An open, technical and introductory book for the Zig programming language 📚📖

分支2Tags53

Zig入门

你好!这是官方的《Zig入门:基于项目的书籍》的仓库,由Pedro Duarte Faria撰写。 想要了解更多关于这本书的信息,请查看下面的关于这本书部分。 你可以在网络浏览器中阅读这本书的当前版本:https://pedropark99.github.io/zig-book/。

本书采用现代、可重现的出版堆栈精心制作,利用了以下工具的强大功能:

Zig   Quarto   R   Knitr   Pandoc   Nix

本书的核心内容是使用Quarto出版系统构建的 并结合了一小部分R代码(zig_engine.R),负责调用Zig编译器来编译和运行Zig代码示例。

支持本项目!

如果你喜欢这个项目,并希望支持它,你可以购买本书的PDF、电子书或实体副本,无论是在Amazon还是在Leanpub:

直接捐赠

你也可以通过以下方式直接向项目作者捐赠:

  • PayPal捐赠。
  • Revolut。

这些是直接支持项目作者的好方法,有助于促进更多此类内容的创作,并使作者能够继续为社区编写有帮助的工具和材料。

PayPal

PayPal

Revolut

你可以通过Swift Payment以及以下银行和Swift详情发送资金:

Recipient: Pedro Duarte Faria
BIC/SWIFT Code: REVOSGS2
Account number: 6124512226
Name and address of the bank: Revolut Technologies Singapore Pte. Ltd, 6 Battery Road, Floor 6-01, 049909, Singapore, Singapore
Corresponding BIC: CHASGB2L

若您已拥有 Revolut 账户,可扫描以下二维码:

http://revolut.me/pedroduartefaria

关于本书

本书是一份开源(即开源项目)、技术性入门书籍,专为 Zig 编程语言 而作。Zig 是一种新的通用且底层编程语言,旨在构建最优且健壮的软件。

本书官方仓库:https://github.com/pedropark99/zig-book。

本书面向初学者和经验丰富的开发者。它通过小型且简单的项目(类似于 Eric Matthes 的著名作品《Python 快速入门》)探索 Zig 的精彩世界。其中一些项目包括:Base64 编码器/解码器、HTTP 服务器和图像过滤器。

在阅读本书的过程中,您将学到:

  • 语言语法,以及它与 C、C++ 和 Rust 的对比。
  • 数据结构、内存分配器、文件系统和 I/O。
  • 作为处理空值的新范式——可选类型。
  • 如何测试和调试 Zig 应用程序。
  • 错误作为值,以及如何处理它们。
  • 如何使用内嵌于语言中的构建系统构建 C 和 Zig 代码。
  • Zig 与 C 的互操作性。
  • 基于线程和 SIMD 的并行性。
  • 更多内容。

如何构建本书

首先,您需要关注项目的依赖项。本书使用以下软件构建:

  1. Zig 编译器,负责编译本书中的大部分代码示例。
  2. R 编程语言,提供了一些有用的工具,特别是 knitr 和 rmarkdown,负责收集书中展示的代码示例,并将它们发送至 Zig 编译器进行编译和执行,同时收集结果以包含在书中。
  3. Quarto 发布系统,负责编译书籍、创建内部链接、引用、章节结构以及书籍的 HTML 内容。它是通过使用强大的 Pandoc 并加入 Quarto 实现的一些额外功能来完成这些工作的。

因此,在当前计算机上安装这三个软件(Zig、R、Quarto)是构建本书的第一步。您可以选择以下两种策略之一:

  1. 您可以手动安装这三个软件(您可以点击以上超链接找到每个软件的安装说明)。
  2. 或者,您可以使用 flake.nix 文件中声明的 Nix Flake 来创建一个已预装这些软件的可复现环境。

手动构建本书

如果您决定手动安装本书的依赖项,请遵循上述超链接中的“安装说明”,在安装完三个部分(Zig、R 和 Quarto)后,按照此处指定的下一步说明操作。

安装 R 包

在安装了上述三个软件之后,您应运行 dependencies.R R 脚本,以安装本书中使用的 R 包。在终端中运行以下命令,您应该就能顺利完成。

注意:如果您使用的是 Linux 或 MacOS,这个命令可能需要一些时间来运行,因为每个依赖项都会从源代码编译。在 Windows 中,这通常不需要太长时间,因为通常有预编译的二进制文件可用。

Rscript dependencies.R

渲染书籍

如果您的计算机上正确安装了Quarto, 那么您应该能够通过在终端中执行以下命令来构建书籍。

quarto render

使用 Nix Flake 构建书籍

若您选择使用 Nix Flake 来搭建一个附带必要依赖项的环境,那么您需要打开一个终端,并在项目根目录执行 nix develop 命令:

nix develop

使用此命令后,Nix 将下载必要的软件包和库,然后创建一个新的 bash 会话,该会话指向一个包含这些软件包和库的新环境。在由 Nix 创建的这个新的 bash 会话中,您只需执行 quarto render 命令。该命令将启动 Quarto,并自动为您构建书籍:

quarto render

Zig 编译器的查找方式

本书中使用了一些 R 代码(zig_engine.R),用于收集书中散布的 Zig 代码示例,并将它们发送到 Zig 编译器,以便编译和执行。

然而,为了完成这一操作,这段 R 代码需要找到您计算机上安装的 Zig 编译器。这一搜索过程分为两个阶段进行。 首先,它使用 Sys.which() 函数 来查找您计算机上 Zig 编译器的路径,这只是 R 对 which 命令行工具的接口。

这是一种快速且简单的方法,但它在某些情况下不起作用,特别是当您的 Zig 编译器未安装在计算机上的“标准位置”时。因此,采用了第二种策略,即遍历 PATH 环境变量。

它获取您的 PATH 环境变量的值,并遍历该变量中列出的目录,尝试在其中找到 Zig 编译器。这种方法比第一种慢得多,但更有保证能够成功。

许可

版权 © 2024 Pedro Duarte Faria。本书遵循知识共享 CC-BY 4.0 国际公共许可(Creative Commons Attribution 4.0 International Public License)。

Creative Commons License

项目介绍

一本开放、技术性的Zig编程语言入门书籍 📚📖【此简介由AI生成】

定制我的领域
212.71 K170访问 GitHub