📅 2026 年 7 月
⚠️ 引自原始资料,已核实 — 分享前请核对最新信息
如果你输入泰文却没有乱码
写 Go 却感觉简单得超乎想象
或好奇为什么新语言都没有继承
你正在使用一个人花了 40 年打造的东西
Rob Pike
加拿大极客少年
Rob Pike 生于 1956 年,成长于计算机仍占满整间屋子的年代
他在 University of Toronto 取得学士学位,随后前往 Caltech,从第一天起就对操作系统与编程语言深感兴趣
1980 年进入 Bell Labs——Unix、C 与无数编程语言的诞生地
在那里,他与 Ken Thompson(Unix 创造者)和 Dennis Ritchie(C 语言创造者)共事,这两位被业界奉为传奇
Bell Labs 岁月
打造 Unix 首个窗口系统
1981 年,Pike 为 Unix 编写了首个窗口系统——那时 Windows 和 Mac GUI 尚未问世;后来演进为 1984 年的 Blit 终端,支持重叠窗口
Plan 9 —— 超越时代的操作系统
Pike、Thompson、Ritchie 团队打造了 Plan 9,将「一切皆文件」的理念贯彻到底
Unix 已把文件系统、网络、设备都抽象为文件,但仍有例外;Plan 9 甚至把 GUI 窗口也视为文件,你可以跨网络挂载他人的窗口并查看
Plan 9 过于超前,未成主流,世界选择了 Windows 与 Linux
但 Plan 9 的理念成了 Pike 此后所有工作的 DNA
Inferno —— 网络版的 Plan 9
继 Plan 9 之后,他们创建了生来就面向网络的 Inferno OS
随 OS 附带的 Limbo 语言,外观酷似早期的 Go 版本;而在 Limbo 之前,1989 年 Pike 就已写出 Newsqueak,专为并发实验而生
这就是关键:我们今天在 Go 中使用的 goroutine 与 channel,直接源于 Newsqueak(1989)→ Alef(1992)→ Limbo(1995)→ Go(2009),这条 DNA 清晰可见。多数 Go 开发者并不知道,自己每天使用的并发模型已近 40 岁
Inferno 与 Plan 9 一样,超前于时代
UTF-8 —— 你每天都在用却浑然不觉
这是计算机界最精彩的起源故事之一
1992 年 9 月,Pike 收到 X/Open 委员会的邮件,请他审阅名为 FSS/UTF 的新编码提案。Pike 列出好编码应具备的特性,发现 FSS/UTF 至少缺了一条
那天晚上,Pike 与 Ken Thompson 在新泽西一家餐厅吃饭。Ken Thompson 在餐垫(placemat)上设计了 UTF-8 的位打包方案,Pike 就坐在对面看着
当晚他们致电 X/Open,承诺周一前完成实现
同一周五,Plan 9 已全面运行在 UTF-8 上(源码记录:1992 年 9 月 4 日 19:51:55)
UTF-8 的核心是与 ASCII 向后兼容:A-Z 仍用 1 字节,泰文、中文、日文只需多加几字节
如今 UTF-8 覆盖全球近 98% 的网站。每次你发送泰文消息而不乱码,都在使用 Thompson 设计、Pike 当时坐在旁边见证的成果
Pike 亲自澄清过误解:「UTF-8 是在我眼前,于 1992 年 9 月左右的一个晚上,在新泽西一家小餐馆的餐垫上设计出来的」——并非 IBM 所创
《The Unix Programming Environment》
1984 年,Pike 与 Brian Kernighan(Bell Labs 另一位传奇人物)合著《The Unix Programming Environment》
书中传授 Unix 哲学:写只做一件事却做好的程序,用管道连接,以文本为接口。这套哲学成了 25 年后 Go 的脊梁
Google 与 Go 的诞生
起源:改变一切的 45 分钟传奇
2002 年,Pike 加入 Google
按照 Pike 自己称为「起源神话」的故事,2007 年某天,Google 有一个大型二进制构建耗时极长(传闻 45 分钟)。Pike 在等待 Ken Thompson 时,与 Robert Griesemer 交谈
2007 年 9 月 21 日,三人在 Google 会议室的 whiteboard 上开始起草新语言
目标明确:即使代码库再大也要编译飞快;没有继承、没有异常;内置并发(goroutine + channel,继承自 Newsqueak 与 Limbo);垃圾回收不拖慢速度
Pike 提议名字「go」,因为短且易打
Go 正式发布
2009 年 11 月,Google 将 Go 开源
Go 的与众不同在于:它不是学术语言,没有论文背书,没有复杂类型系统;它是想把工作做完的工程师的语言
编译为单个静态二进制文件,无依赖地狱;gofmt 让所有代码风格一致,告别风格之争
Go 1.0 于 2012 年 3 月发布,并一直保持向后兼容至今
Go 为什么胜出
Pike 设计 Go 的核心原则,浓缩在他 2012 年演讲的标题:「Less is exponentially more.」
不只是做少,而是把所有不必要的东西砍掉,只剩真正必需的部分
Go 选择移除继承(用组合 + 接口代替)、异常(用错误返回值)、泛型(初期移除,Go 1.18 才加入)
Go 没有的,正是 Pike 眼中累赘而非特性的东西
结果:Go 成为云基础设施的头号语言——Docker、Kubernetes、Terraform、Prometheus 全部用 Go 编写
Pike 的哲学
Pike 不多言,但一开口往往一针见血
「Less is exponentially more.」 —— Go 以及 Pike 所有作品的核心
「Object-oriented design is the roman numerals of computing.」(2004)—— 面向对象设计是计算机界的罗马数字:可用,但不应是默认
「Concurrency is not parallelism.」 —— 2012 年演讲标题,成了经典名句:并发 ≠ 并行
「A little copying is better than a little dependency.」 —— 复制少量代码,胜过引入新依赖(Go 谚语)
「Clear is better than clever.」 —— 清晰的代码,胜过聪明的代码(Go 谚语)
「Don't communicate by sharing memory; share memory by communicating.」 —— 不要通过共享内存来通信,要通过通信来共享内存;goroutine + channel 的核心
今日
Pike 并未退休(尽管 Wikipedia 多次试图这样写,却无可靠来源)
他自称 「Professional dilettante」,仍在 review Go 代码,不断在 GitHub 提交新代码
近期作品:Ivy(APL 风格计算器)、自创 Lisp 语言、日语工具
2024 年在 GopherConAU 演讲「What We Got Right, What We Got Wrong」,坦承 Go 的成功(规范、gofmt、兼容性、并发)与失误(async/await 是否优于 CSP?并发与并行的解释是否长期有误?)
2025 年发文「On Bloat」,探讨当依赖者众多时,小包如何变成问题
2026 年 1 月深入 Ivy 的高精度数学
他仍活跃在 Mastodon 与 Bluesky,生活穿梭于美国与澳大利亚,与妻子 Renée French(Go gopher 的插画作者)相伴
Pike 与泰国程序员
UTF-8 让泰文在网页上得以正常显示;在此之前,TIS-620 与 Windows-874 冲突不断
Go 在泰国科技公司中使用日益增多:Agoda、LINE MAN Wongnai、SCB TechX 都在生产环境运行 Go
在 AI 能生成百万行代码的时代,Pike 的「less is exponentially more」哲学尤为重要:少做但做好,而非多做而混乱
总结
Rob Pike 用 40 年时间解答同一个问题:如何让计算机对人类更简单
我们每天使用的 UTF-8、在数百万服务器上运行的 Go、已成新一代开发者 DNA 的「less is exponentially more」哲学
这一切,都始于那个人——在等待 C++ 编译 45 分钟后,想到「我们可以做得更好」
来源:Wikipedia、go.dev、Rob Pike 的博客(commandcenter.blogspot.com)、UTF-8 历史(Pike 2003 年的亲述)、Go FAQ、GitHub(github.com/robpike)、Wikiquote
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.