Carbon 语言上手指南:从装好工具链到跑通素数筛
Carbon 语言上手指南从装好工具链到跑通素数筛【免费下载链接】carbon-langCarbon Languages main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)项目地址: https://gitcode.com/GitHub_Trending/ca/carbon-langCarbon 是 Google 主导的实验性编程语言定位为 C 的继任者性能对标 C、与现有 C 代码双向互操作同时提供泛型、模块化和更现代的安全设计。它的主仓库 carbon-lang 同时包含语言设计文档、编译器实现toolchain/和可运行的示例本教程就走一遍最短上手路径。它凭什么出现C 经过几十年积累技术债很重再往前改已经非常困难。Carbon 的思路不是修补 C而是做一个继任者语言不继承 C 的历史包袱从头建立干净的语法和类型基础同时把 C 互操作当作第一公民。README 里把它类比成 JavaScript 之于 TypeScript、Java 之于 Kotlin 的关系。与相邻语言的关键差异官方文档里其实讲得很直白——Rust 这类语言能用就该用但它们的内存模型和惯用法对 C 代码库迁移是硬门槛维度CGo / Rust 类语言Carbon性能基准存在迁移成本或运行开销对齐 CLLVM 后端与 C 混用—受内存模型/惯用法限制双向、无开销互操作可从继承到模板泛型模板使用时才检查各自方案定义即检查definition-checked支持特化与类型擦除内存安全长期痛点强制/不同模型先迁移、再渐进式收紧提供安全子集路径最短路径装好它官方只发布面向近期 Ubuntu/Debian 系含 WSL的 nightly 工具链源码构建也主要针对 Linux。这里给最短且可验证的路径sudo apt update sudo apt install clang libc-dev libcabi-dev lld装的是构建工具链依赖装完clang --version应有输出。然后拉代码并构建git clone https://gitcode.com/GitHub_Trending/ca/carbon-lang cd carbon-lang./scripts/run_bazelisk.py run //toolchain -- help首次运行会自动下载 Bazel 并编译工具链耗时较长预期结果是打印carbon命令行的完整帮助文本其中包含compile和link两个子命令——这就是后面所有操作的基础。第一个程序逐块看懂仓库里的 examples/hello_world.carbon 一共 3 行有效代码正好当最小样本import Core library io;用import按模块引入核心库的io组件不是 C 的#include。fn Run() { Core.PrintStr(Hello world!\n); }入口函数叫Run而不是main命名空间用.分隔没有::。./scripts/run_bazelisk.py run //examples:hello_world通过 Bazel 构建并执行预期在终端看到Hello world!。和常见写法的本质区别有三点变量声明必须显式写var/let前缀和类型不靠上下文推断省类型语句用分号但很多场合语法本身就不冗余没有头文件模块边界由import决定。跟着做一个小任务以 examples/sieve.carbon 的素数筛为例它演示了类、可变状态和成员方法。思路Sieve类持有一个array(bool, 1000)布尔数组先假设全是素数再对每个素数标记它的倍数。核心代码节选class Sieve { impl as Core.UnformedInit {} fn Make() - Sieve { returned var s: Sieve; for (n: i32 in Core.Range(1000)) { s.is_prime[n] true; } return var; }impl as Core.UnformedInit声明这个类允许未初始化状态Make负责从零填充。fn MarkMultiplesNotPrime(ref self, p: i32) { var n: i32 p * 2; while (n 1000) { self.is_prime[n] false; n p; } }ref self表示以可变引用方式访问自身对应 C 里的非 const 成员函数。怎么跑./scripts/run_bazelisk.py run //examples:sieve会看到什么屏幕上依次打印 2 到 997 之间全部素数Run的返回值是素数个数小于 1000 的素数共 168 个。新手容易踩的坑平台不是近期 Ubuntu/Debian 系。nightly 下载包只覆盖 Linux 系环境macOS 或非 Debian 系发行版容易缺库。解法在 WSL2 里跑或按 构建文档 装齐 Clang、LLD、libc 后从源码构建。link阶段报缺系统库。工具链链接时依赖 glibc 的运行时库只装 Clang 不够。解法sudo apt install libgcc-11-dev或直接装gcc再重新链接。把当前实现当稳定语言用。README 明确写了 Carbon 还是实验项目、many things dont yet work。示例代码会随工具链演进频繁调整比如 Advent of Code 2024 示例 自己也承认需要绕开缺失功能别照抄进生产环境。往哪儿走docs/design/语言设计文档泛型、类、模式匹配等专题都在这适合想理解为什么这么设计的人。toolchain/docs/编译器各阶段词法、解析、lower、codegen的实现说明适合想给工具链贡献代码的人。examples/hello_world、sieve、RE2 集成等可运行示例适合边读边复现的人。docs/project/goals.md 与 docs/project/faq.md项目目标和对 Rust、fork C 等常见问题的回答适合做技术选型判断的人。装好之后下一步可以直接用//examples:sieve换掉hello_world跑自己的第一个改动或打开toolchain/看看编译器是怎么把这几行 Carbon 变成机器码的。【免费下载链接】carbon-langCarbon Languages main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)项目地址: https://gitcode.com/GitHub_Trending/ca/carbon-lang创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考