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>intmain(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 的正式发布!