周四就有地鼠提问,“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 的正式发布!
原文出自:http://www.guao.hk/
【编辑推荐】