📅 2026 年 7 月
⚠️ 引用自原始來源,已核實 — 分享前請先確認最新資訊
如果你輸入泰文時不會出錯
寫 Go 卻覺得太簡單
或好奇為什麼新語言都沒有繼承
你正在使用一個男人花費 40 年打造的東西
Rob Pike
加拿大電腦怪咖
Rob Pike 出生於 1956 年,成長於電腦仍占滿整間房間的年代
在多倫多大學取得學士學位後,前往加州理工學院深造,從一開始就對作業系統與程式語言感興趣
1980 年進入貝爾實驗室,Unix、C 語言以及無數程式語言的發源地
在那裡,他與 Ken Thompson(Unix 之父)及 Dennis Ritchie(C 語言之父)合作,兩位都是業界公認的大師
貝爾實驗室時期
打造 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,從設計之初就針對網路環境
附帶的 Limbo 語言,外觀與 Go 極為相似;在此之前,Pike 已在 1989 年開發 Newsqueak,專門實驗並行程式設計
這正是關鍵:Go 今日使用的 goroutine 與 channel,其原型來自 Newsqueak(1989)→ Alef(1992)→ Limbo(1995)→ Go(2009),這條血緣極為清晰。大多數 Go 開發者不知道,自己每天使用的並行模型已近 40 歲
Inferno 與 Plan 9 一樣,超前於其時代
UTF-8 — 你每天不知不覺使用的編碼
這是電腦界最精彩的起源故事之一
1992 年 9 月,Pike 收到 X/Open 委員會的郵件,請他審閱名為 FSS/UTF 的新編碼提案。Pike 列出良好編碼應具備的條件,發現 FSS/UTF 至少缺少其中一項
當晚,Pike 與 Ken Thompson 在新澤西一家餐廳用餐,Ken Thompson 在餐墊上設計出 UTF-8 的位元封裝方式,Pike 就坐在對面
當晚他們回電 X/Open,表示週一就能完成實作
同一週五,Plan 9 已全面支援 UTF-8(原始碼記錄:1992 年 9 月 4 日 19:51:55)
UTF-8 的核心是與 ASCII 相容,A-Z 仍使用 1 byte,泰文、中文、日文只需多加幾個 byte
今日 UTF-8 涵蓋全球近 98% 的網站。每次你傳送泰文訊息而不亂碼,就是在使用 Thompson 設計、Pike 在那個晚餐餐廳旁觀的成果
Pike 曾親自澄清:「UTF-8 was designed, in front of my eyes, on a placemat in a New Jersey diner one night in September or so 1992」—— 不是 IBM 設計的
《The Unix Programming Environment》
1984 年,Pike 與 Brian Kernighan(另一位貝爾實驗室傳奇人物)合著《The Unix Programming Environment》
這本書闡述 Unix 哲學:寫只做一件事且做好的程式、用管道串接、以文字作為介面。這些哲學成為 25 年後 Go 的骨幹
Google 與 Go 的誕生
起源:改變一切的 45 分鐘傳奇
2002 年,Pike 加入 Google
根據 Pike 自己稱為「起源神話」的故事,2007 年某天,Google 的一個大型二進位檔編譯花了極長時間(傳聞 45 分鐘)。Pike 與 Robert Griesemer 聊天等待 Ken Thompson 加入
2007 年 9 月 21 日,三人在 Google 會議室的白板上開始草擬新語言
目標明確:即使程式碼庫再大也要快速編譯;沒有繼承、沒有例外;內建並行(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」,仍在審查 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
Pike 的「less is exponentially more」哲學,在 AI 可生成百萬行程式碼的時代更顯重要:少做但做好,而非多做而混亂
總結
Rob Pike 用 40 年時間解答同一個問題:如何讓電腦對人類更簡單
我們每天使用的 UTF-8、數百萬台伺服器上運行的 Go,以及成為新一代開發者 DNA 的「less is exponentially more」哲學
這一切,都始於一個男人等 C++ 編譯 45 分鐘,然後心想「我們可以做得更好」
來源:Wikipedia、go.dev、Rob Pike's blog (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.