简介
欢迎阅读《Auto 编程语言》,一本关于 Auto 语言的入门教程。Auto 是一门为 AI 时代设计的系统级编程语言,帮助你编写快速、可靠的软件,同时保持极简的语法。许多语言迫使你在高层抽象和底层控制之间做出选择,而 Auto 消除了这种妥协——两者兼得。
Auto 适合谁
Auto 为各类开发者而设计。让我们看看最重要的几类人群。
开发团队
Auto 对各种规模的团队来说都是高效的工具。与 Rust 一样,它的编译器在编译期就能捕获包括并发 bug 在内的各种隐蔽错误。但 Auto 更进一步:隐式所有权模型(AutoFree)和流敏感类型推导意味着更少的标注负担,也减少了与编译器的"对抗"。编译器是你的队友,不是对手。
Auto 配备了现代化的开发工具:
- automan——包管理器和构建工具,让依赖管理变得简单一致。
- autoc——编译器,提供清晰的错误信息,引导你写出正确的代码。
- autovm——虚拟机运行时,支持热重载和交互式开发。
学生和学习者
Auto 适合任何对系统编程概念感兴趣的人。它的语法极简且规则统一,是学习内存管理、并发和类型系统的优秀载体——无需像更显式的语言那样背负繁重的标注负担。
AI 辅助开发者
Auto 从根本上就是为与 AI 代码生成器协作而设计的。极简的语法、可预测的语义、编译期安全保障——这一切意味着 AI 生成的代码更有可能在第一次就正确运行。如果你使用 AI 工具来编写代码,Auto 就是为这些工具量身定做的语言。
追求速度与稳定性的人
Auto 适合追求速度和稳定性的开发者。这里的速度既指运行时性能,也指开发效率。Auto 的编译器检查确保重构是安全的。它的零成本抽象意味着优雅的高层代码会编译成与你手写相同的机器码。
本书适合谁
本书假设你已经用其他编程语言写过代码,但不假设是哪种语言。无论你来自 Python、JavaScript、Rust、C++ 还是其他任何语言,本书的内容都力求通俗易懂。
我们不会花时间解释什么是编程。如果你是编程新手,建议先阅读一本编程入门书籍。
如何使用本书
本书假定你按顺序从前到后阅读。后面的章节建立在前面章节的概念之上。
你会发现两种章节:概念章节和项目章节。概念章节教你 Auto 的某个方面。项目章节带你一起构建小程序。第 2 章、第 12 章和第 21 章是项目章节,其余是概念章节。
第 1 章介绍如何安装 Auto、编写"Hello, world!"程序以及使用 automan。第 2 章是一个动手入门教程,你将构建一个猜数字游戏。
在第 3 章中,你将学习变量、数据类型、函数和控制流。第 4 章介绍 Auto 的内存模型——所有权、move 语义,以及 AutoFree 如何替代显式生命周期标注。第 5 章讨论 type 关键字和方法。第 6 章介绍枚举、is 关键字的模式匹配,以及 ?T 可选类型。
在第 7 章中,你将学习 Auto 的模块系统。第 8 章讨论常用集合:List、HashMap 和 HashSet。第 9 章探索用 !T 和 ! 抛出运算符进行错误处理。
第 10 章深入泛型、spec 系统(Auto 对 trait 的诠释),以及 AutoFree 如何隐式处理生命周期。第 11 章介绍测试。在第 12 章中,我们构建一个命令行文本搜索工具。
第 13 章探索闭包和迭代器。第 14 章深入介绍 automan。第 15 章讨论 Auto 的引用和指针类型。
在第 16 章中,我们介绍基于 task 和 mailbox 的 Actor 并发模型。第 17 章介绍使用 ~T 蓝图和 on 块的异步编程。
第 18 章探讨 Auto 的 is/has/spec 系统如何与面向对象编程相关联。第 19 章是模式匹配的参考。第 20 章涵盖高级主题:sys 关键字(不安全操作)、#[] 编译期执行等。
在第 21 章中,我们将使用 Auto 的 Actor 模型构建一个多线程 Web 服务器。
最后,附录包含参考资料:Auto 的关键字、运算符和开发工具。
阅读本书没有错误的方式。如果你想跳着读,尽管跳!遇到不明白的地方随时回来查阅。
关于代码示例的说明
本书的代码示例同时展示 Auto 和 Rust 两个版本。Auto 版本可以通过 a2r 工具转译为 Rust 版本。这让你在学习 Auto 语法和惯用法的同时,可以借助已有的 Rust 知识。
学习 Auto 的一个重要环节是学会阅读编译器的错误信息。我们会展示许多无法编译的示例,以及编译器给出的错误信息。如果你随意输入并运行某个示例,它可能无法编译——请务必阅读上下文文字以了解背景。
源代码
本书的源文件可在项目仓库中找到。