Go 語言源碼可追溯到 1972 年?
Go 語言團隊已經在本周三發布了第一個發布候選版 Go 1 RC1(即 Beta4),正式版的發布已經為期不遠。地鼠(gopher)們該行動起來啦!
周四就有地鼠提問,“Go 源碼中幾十年前的那些修訂是什嘛情況哦?”
原來,Go 代碼庫的最初四次修訂發生于 1972-1988 年,然后才有了 Go 語言規范的初稿。
其中,第一次修訂 Revision f6182e5abf5e
(1972) 是 Brian Kernighan《B 語言入門教程》第七節中的“hello, world!”示例代碼:
main( ) { extrn a, b, c; putchar(a); putchar(b); putchar(c); putchar('!*n'); } a 'hell'; b 'o, w'; c 'orld';
第二次修訂 Revision b66d0bf8da3e
(1974) 將程序用 C 語言重寫了一遍,當年 Unix 內核的主要部分已經采用 C 重新編寫:
main() { printf("hello, world"); }
第三次修訂 Revision ac3363d7e788
(1988) 按 ANSI C 草案的標準加上了 #include
語句,并補上了漏掉的換行符:
#include <stdio.h> main() { printf("hello, world\n"); }
第四次修訂 Revision 172d32922e72
(1988) 則給程序加上了輸入原型與返回值:
#include <stdio.h>int main(void) { printf("hello, world\n"); return 0; }
(次年,標準 C89(ANSI X3.159-1989)誕生。)
這四次修訂重現了編程語言由 B 到標準化的 C 的發展史,也顯示了項目組的宏偉抱負。當然,Go 團隊本身也是大有來頭,其中就包括 B 語言與 Unix 作者 Kenneth Thompson 和 Plan 9 架構師 Rob Pike,他倆都曾在貝爾實驗室工作,并共同完成了 UTF-8 編碼的創立。(via cnet)在 Go 語言中,Ken Thompson 還彌補了沒能在 Unix 中“拼全‘create’”的遺憾。(via mattn)
Go 公布初期就提供了 cgo
命令以及 gcc 前端 gccgo
,可以說 Go 本身就是對歷代成果 fork 而來的項目。
敬請期待 Go 的正式發布!