ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

7 个章节带你入门 Carbon 编程语言:C++ 开发者的现代选项

7 个章节带你入门 Carbon 编程语言:C++ 开发者的现代选项 7 个章节带你入门 Carbon 编程语言C 开发者的现代选项【免费下载链接】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开篇一个让 C 开发者头疼的瞬间给一个 C 模块加个依赖编译错误却从另一个模板深处冒出来日志长得像天书。头文件改了没同步、unique_ptr析构顺序不对这类问题谁写谁熟。Carbon 编程语言就是冲着这些痛点来的它定位是 C 继任者主打系统级编程由 Google 主导开源目标是让你不用再在老债务里打补丁。 Carbon 是什么定位、目标与和 C 的关系先交代它到底是什么。Carbon 不是要在某个版本里给 C 打补丁而是走继任语言路线——官方类比是 JavaScript 之于 TypeScript、Java 之于 KotlinC 对应的就是 Carbon。性能对标 C底层细节不缺席与 C 双向互操作库可单独迁移语法一致、简单读代码不费劲它不是替代品而是渐进式演进现有 C 代码原样保留其中任何一个库都可以先改成 Carbon反过来 C 也能调用 Carbon 代码迁移节奏完全由你掌握。性能方面它基于 LLVM目标是与 C 持平安全方面则有明确路线追踪未初始化状态、把未定义行为尽量变成可见错误剩余的用显式unsafe标记。Carbon 编程语言类型定义、接口与约束constraint语法的编辑器高亮效果⚡ 5 分钟跑通第一个 Carbon 程序环境这块不求多只求跟着敲完就能出结果。官方目前提供基于源码构建和 nightly 工具链两种玩法新手建议直接源码构建命令最少。Linux 下安装 Carbon 工具链Ubuntu/Debiansudo apt update sudo apt install -y clang libc-dev libcabi-dev lld git git clone https://gitcode.com/GitHub_Trending/ca/carbon-lang cd carbon-lang ./scripts/run_bazelisk.py run //toolchain -- helpmacOS 下用 Homebrew 准备依赖xcode-select --install brew install bazelisk llvm git clone https://gitcode.com/GitHub_Trending/ca/carbon-lang cd carbon-lang ./scripts/run_bazelisk.py run //toolchain -- help看到终端打印出工具链的 help 信息有compile、link等子命令说明就说明环境 OK 了。接下来直接跑官方自带的 hello_world不用自己写一行代码import Core library io; fn Run() { Core.Print(42); }这就是仓库 examples/hello_world.carbon 的写法fn定义函数Run是程序入口。构建并运行看到42出现恭喜——你的第一个 Carbon 程序就通了。 核心语法用一个命令行参数解析器讲透能跑起来之后别急着背语法直接写个小工具解析命令行里的开关参数。先从函数和变量写起。fn声明函数参数要标注类型var是可变变量let是不可变的。下面的函数接收一个标志名查它认不认识fn IsFlag(name: str) - bool { var known: bool false; if (name --verbose) { known true; } return known; }白话版进一个字符串出一个认不认识。这里str是 Carbon 的字符串类型bool是布尔值-后面是返回类型。加上循环和类型标注就齐活了。遍历所有标志逐个检查顺手演示一下显式写类型fn ParseFlags(flags: array(str, 3)) { var count: i32 0; for (f: str in flags) { if (IsFlag(f)) { count; } } Core.Print(count); }白话版数一数有几个合法标志打印出来。array(str, 3)是定长数组i32是 32 位整数for (x: T in ...)是标准遍历写法。整个例子把变量、函数、控制流串完了而 Carbon 的类型系统足够直白写不出版本号式的语法糖读起来接近自然语言这是它刻意追求的低学习曲线。Carbon 编程语言中函数定义、泛型参数与 var/let 变量声明的完整形态 杀手级特性与 C 无缝互操作这是 Carbon 最值钱的卖点值得单独说透。互操作翻译成大白话你的 C 库不用重写Carbon 代码可以直接调用它们反之亦然。看官方互操作示例里的真实片段Carbon 调 C 标准库import Cpp library cstdio; fn HelloStdio() { let msg: str Hello world!\0; Cpp.puts(Cpp.std.data(msg)); }再加一句遇到宏这类 C 特有的东西还能用import Cpp inline ...把一小段 C 代码内联进来见 examples/interop/cpp/socket.carbon。所以最典型的用法是遗留 C 代码库逐个模块渐进迁移每个模块独立编译、独立回滚或者给现有 C 库写一层现代绑定新代码用 Carbon老代码原地不动。️ 从 Demo 到工程目录结构怎么搭、BUILD 怎么写demo 跑得爽工程要能维护。一个典型的 Carbon 项目长这样my_carbon_app/ ├── MODULE.bazel # Bazel 模块定义 ├── BUILD # 构建目标 ├── src/ │ ├── main.carbon # 入口 │ └── flags.carbon # 参数解析模块 └── tests/ └── flags_test.carbon构建交给 Bazel最小可用的 BUILD 文件长这样carbon_binary来自项目自带的构建规则 bazel/carbon_rules/defs.bzlload(//bazel/carbon_rules:defs.bzl, carbon_binary, carbon_library) carbon_library( name flags, srcs [src/flags.carbon], ) carbon_binary( name app, srcs [src/main.carbon], deps [:flags], )日常规范记三条就够命名遵循 docs/design/naming_conventions.md 的约定类型大写驼峰、成员小写蛇形提交前用carbon format过一遍格式化错误一律当值处理——Carbon 的设计原则就是错误是值用返回值传递而不是抛异常。更多现成的目录组织方式直接翻 docs/ 和 examples/ 抄作业。 进阶一瞥泛型与编译时计算最后瞟一眼进阶能力点到为止。Carbon 的泛型是checked的定义时就做完类型检查不需要像 C 模板那样等实例化时才爆炸。class Point { fn Scale(self, k: i32) - Point { return Point{x: self.x * k, y: self.y * k}; } }白话版一个带方法的普通类行为按类型约束检查写错在定义处就报错。再看编译时常量let PI: i32 3141592; let Scale: i32 PI * 2;白话版常量表达式在编译期求值运行期零成本。原理细节不展开了想深挖直接看 docs/design/generics/ 的泛型设计文档。 学习路径与下一步按你的背景选一条起点就行。C 老手直奔 docs/design/interoperability/ 的互操作设计再看 examples/interop/两小时建立判断。有编程基础的新手按 examples/ 里的示例逐个跑一遍重点看sieve.carbon里的类和循环。纯小白从 docs/design/ 的设计总览读起配合 docs/guides/glossary.md 术语表。核心资源就这四样docs/design/语言设计文档语法和机制的第一手来源examples/可直接构建运行的官方示例toolchain/docs/编译器与工具链文档docs/project/faq.md项目 FAQ很多疑问早有答案学新语言最快的路永远是让编译器先跑起来把 hello_world 再亲手敲一遍改个输出构建运行。流程熟了剩下的交给好奇心和 CONTRIBUTING.md 里的社区约定。【免费下载链接】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),仅供参考
返回列表