跳转到内容

第 25 章 · 按语言深入:官方文档、必读书、社区与工具

第七部分两章,都是给读完前面各章、想在某个方向继续深挖的人准备的书单和入口。本章按语言排,适合“手上的项目用的是哪种语言,就把哪种语言学透”;下一章按类型系统、并发、内存、语言设计这些主题排,收的是跨语言的书和论文,适合想把一个机制弄懂、不限于某种语言的人。两章不必从头读,查到自己要的那一节即可。

每条后面的括号写两件事:免费还是付费,页面是中文还是英文。标“中文”的是官方站点上的中文页面,内容可能比英文版滞后,版本和细节以英文原版为准。所有链接都在 2026 年 10 月逐个打开核对过。

Python 的官方文档有完整的中文译本,入门和查语言规则都可以先看中文;类型标注和打包两块另有独立站点,只有英文。

  • Python 教程(免费,中文):给会别的语言、第一次系统学 Python 的人,一个下午能读完前九章,重点看第 9 章“类”里的作用域和命名空间。链接
  • 语言参考:数据模型(免费,中文):想知道 len、for、with、运算符背后调用了哪些特殊方法的人必读,先看“特殊方法名称”一节。链接
  • Python 的新变化(免费,中文):升级解释器版本之前先读,每个版本一页,列出新语法、弃用和行为变化,先看自己要升到的那个版本。链接
  • Static Typing with Python(免费,英文):类型标注的官方文档站,分教程、指南、参考和类型系统规范四块;用 mypy 或 pyright 的人先看指南,想弄清检查器到底按什么规则判断时看规范。链接
  • Fluent Python(付费,英文):Luciano Ramalho 著,第 2 版,O’Reilly 出版;给已经能写 Python、想写得地道的人,数据模型和协程两部分最值得读。链接是作者为第 2 版做的配套网站,有书里放不下的补充章节。链接
  • Effective Python(付费,英文):Brett Slatkin 著,第 3 版,Pearson Addison-Wesley 2024 年出版;125 条独立的建议,适合按条翻,先看自己最常写的那类代码对应的条目。链接
  • The History of Python(免费,英文):Python 的作者 Guido van Rossum 写的博客,讲一个个设计决定的来历,比如 True 和 False 起初为什么不是关键字;想知道“为什么是这样”的人按目录挑着读。链接
  • Discussions on Python.org(免费,英文):Python 核心团队和社区的官方论坛,新提案在这里讨论;提问去 Python Help 版块,想看语言下一步往哪走去 Ideas 和 PEPs 版块。链接
  • Python Packaging User Guide(免费,英文):打包和依赖管理的官方指南,给要发布包或管多个项目依赖的人,先做“Managing Application Dependencies”和“Packaging Python Projects”两篇教程。链接

JavaScript 的规则由 TC39 委员会写进 ECMAScript 规范,TypeScript 由微软的团队在其上加一层类型;查资料时要分清一个行为属于语言本身、属于 TypeScript,还是属于 Node.js 这样的运行时。

  • MDN JavaScript 指南(免费,中文):MDN 的 JavaScript 系统教程,中文页由社区从英文翻译;给需要把语言从头过一遍的人,先看“使用 Promise”和“迭代器和生成器”两篇。链接
  • TypeScript Handbook(免费,英文):TypeScript 官方手册,给会 JavaScript、开始写 TS 的人,先读“Everyday Types”和“Narrowing”,再按需看泛型和类型运算。链接
  • ECMAScript 语言规范(免费,英文):JavaScript 的标准原文,每年一版,网页版是正在编写的最新草案;不适合通读,遇到“到底该怎么算”的争议时按章节查,比如相等比较和类型转换的抽象操作。链接
  • You Don’t Know JS Yet(免费,英文):Kyle Simpson 著,第 2 版尚未出齐,已完成的各册以知识共享许可放在 GitHub 上,另有付费的电子书和纸质书;作者建议先读《Get Started》,再读《Scope & Closures》,后者把作用域和闭包讲到引擎层面。链接
  • Effective TypeScript(付费,英文):Dan Vanderkam 著,第 2 版,83 条建议;给写过一阵 TS、常和类型检查器较劲的人,先看第 4 章“类型设计”(Type Design)。链接是作者为本书做的网站,列出全部条目。链接
  • TypeScript Design Goals(免费,英文):TypeScript 团队写下的设计目标和“非目标”,比如类型要能完全擦除、不追求可证明的类型安全;读完就明白 TS 为什么在运行时什么都不检查。链接
  • TC39 提案列表(免费,英文):TC39 维护的提案总表,按阶段列出每个提案和负责人;想知道某个新语法离落地还有多远,查它在第几阶段,再点进提案仓库看动机和讨论。链接
  • TypeScript 社区资源(免费,英文):官方列出的提问和交流去处,包括 Stack Overflow 的 typescript 标签、社区聊天室和 GitHub 仓库;报 bug 前先在这里找对地方。链接
  • Node.js 文档(免费,英文):Node.js 的 API 参考,每个模块一页;写服务端代码时查 fs、worker_threads、child_process 这类模块,先看本机所装大版本对应的那一份。链接

C# 的文档、语言设计和编译器都在微软名下公开维护。Microsoft Learn 上的中文页有人工翻译,也有机器翻译(页面会注明),遇到读不通的句子就切到英文原版对照。

  • C# 语言导览(免费,中文):给会别的语言、第一次接触 C# 的人,几页讲完类型、程序结构和主要语言特性,读完再挑具体主题深入。链接
  • C# 语言参考(免费,中文机器翻译):关键字、运算符、内置类型和语句的逐条说明,写代码时随手查;“值类型”和“引用类型”两节和本书讲值与引用的内容对得上。链接
  • C# 14 中的新增功能(免费,中文):本书示例用的 C# 14 带来的新特性,比如扩展成员和 field 支持的属性,每项一段说明加示例;同一目录下还有 C# 13、C# 12 等更早版本的新增功能页,适合补齐自己没跟上的那几版。链接
  • C# 12 in a Nutshell(付费,英文):Joseph Albahari 著,O’Reilly 出版,是一本按主题排的厚参考书,语言和常用库都讲;链接是作者的配套网站,有书中代码和目录,适合当案头书按章查。链接
  • C# in Depth(付费,英文):Jon Skeet 著,第 4 版,Manning 出版;按 C# 版本讲每个特性为什么加、编译器怎么实现,主体讲 C# 5 到 C# 7,先看异步函数那几章。之后的版本要配合上面的“新增功能”页补。链接
  • dotnet/csharplang(免费,英文):C# 语言设计的官方仓库,放着语言设计会议纪要、特性提案和语言规范;想知道某个特性为什么这样设计,先在 meetings 目录按年份找会议纪要。链接
  • .NET 社区(免费,中文):微软列出的 .NET 社区入口,包括本地聚会、Microsoft Q&A 和 Stack Overflow 问答、社区直播和 Discord;不知道问题该去哪里问时从这里找。链接
  • .NET CLI(免费,中文):dotnet 命令行工具的文档,包括新建项目、构建、运行、测试和发布;这一页是机器翻译,先看命令列表,再点进具体命令。链接
  • SharpLab(免费,英文):在线看 C# 代码被编译成什么,能切换显示降级后的 C#、IL 和 JIT 汇编;想看 async、foreach、using 背后生成的代码时,贴进去切到对应输出即可。链接

Go 的官方文档集中在 go.dev 一个站点,篇幅都不长;语言规范短到可以通读,这是 Go 和另外三种语言很不一样的地方。

  • A Tour of Go(免费,英文):官方的交互教程,每页一段可直接运行的代码;给第一次学 Go 的人,一两天走完,重点做方法与接口、并发两节的练习。链接
  • Effective Go(免费,英文):官方写的惯用法指南,讲命名、错误处理、接口、goroutine 和通道该怎么用;学完 Tour 后读。页面开头注明它写于 2009 年 Go 发布时、不再积极更新,没有覆盖泛型和模块。链接
  • Go 语言规范(免费,英文):Go 的语言定义,篇幅不长,可以通读;遇到“这样写到底合不合法”时以它为准,先看类型、语句和“Assignability”几节。链接
  • Go FAQ(免费,英文):Go 团队对“为什么这样设计”的官方回答,比如为什么没有异常、为什么最初发布时没有泛型;想理解设计取舍的人从头读,每个问题一段。链接
  • The Go Programming Language(付费,英文):Alan A. A. Donovan 和 Brian W. Kernighan 著,Addison-Wesley 2015 年出版;讲解和练习至今是标杆,但写于泛型和模块之前,这两块要另外补。链接是作者的官方网站,可以下载前言和第 1 章。链接
  • 100 Go Mistakes and How to Avoid Them(付费,英文):Teiva Harsanyi 著,Manning 2022 年出版,出版社页面注明有简体中文译本;给已经写 Go 的人,按“错误”组织,数据类型和并发几章最容易对上自己踩过的坑。链接
  • Go at Google: Language Design in the Service of Software Engineering(免费,英文):Rob Pike 在 SPLASH 2012 的主题演讲整理成的文章,讲 Go 为大规模工程做的取舍,比如依赖管理、语法简单、组合代替继承;想理解 Go 为什么“少”的人必读。链接
  • Go 帮助与社区(免费,英文):官方列出的提问去处,包括 golang-nuts 邮件列表、Go Forum、Discord 和 Slack;先按页面建议搜 FAQ 和邮件列表存档,再发问。链接
  • go 命令文档(免费,英文):go build、go test、go mod、go vet 等全部子命令和构建标志的说明;工具链出现意外行为时先查对应子命令,再看“环境变量”一节。链接

每种语言都按同一个顺序用这份清单:先读官方入门,把语言过一遍;再读一本公认的书,学会地道的写法;遇到“为什么这样设计”的问题,去看设计者的文章、FAQ 或设计会议纪要;查具体规则以官方规范或语言参考为准;卡住时去官方列出的社区提问。

书比文档旧得快。上面几本里,C# in Depth 停在 C# 7,Go 的那本写于泛型之前,Effective Go 也没有覆盖泛型和模块;读这些书时,配合各语言的“新变化”页面补上后来的版本。下一章换一个角度,按主题列出不限于某一种语言的书和论文。