小编典典

Go的修订历史背后的故事是什么?

go

我注意到,前4个版本f6182e5abf5eb66d0bf8da3eac3363d7e788172d32922e72围棋源都来自很久以前Golang甚至提出,从1972年的最古老的存在。他们也都归功于AWK区名望的Brian
Kernighan。它们似乎是hello, world用C实现的。这是复活节彩蛋还是有实际用途?


阅读 273

收藏
2020-07-02

共1个答案

小编典典

线程提到:

敬意,复活节彩蛋,开个玩笑,请选择:)。还要注意相关提交的作者

所述线程将此提交作为起点,但也指出了Golang项目的实际第一次提交,以及Go规范第一次修订

前四次提交的(指定的)“作者”是Brian Kernighan
罗伯·派克(Rob
Pike)
于1980年代在贝尔实验室Bell
Labs)
与布莱恩(Brian)合作,因此这可被视为他职业渊源的参考。

这个复活节彩蛋的想法是为了说明Hello WorldC语言程序的演变:

(请参阅最近的GopherCon 2014 hellogophers.slide
4月演讲 -Rob
Pike


你好,世界

hg log -r 0:4
changeset:   0:f6182e5abf5e
user:        Brian Kernighan <bwk>
date:        Tue Jul 18 19:05:45 1972 -0500
summary:     hello, world

$ hg update -r 0
$ cat src/pkg/debug/macho/testdata/hello.b

main( ) {
    extrn a, b, c;
    putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';

转换为C

changeset:   1:b66d0bf8da3e
user:        Brian Kernighan <bwk>
date:        Sun Jan 20 01:02:03 1974 -0400
summary:     convert to C

$ hg update -r 1
$ cat src/pkg/debug/macho/testdata/hello.c

main() {
    printf("hello, world");
}

转换为拟议的ANSI C

changeset:   2:ac3363d7e788
user:        Brian Kernighan <research!bwk>
date:        Fri Apr 01 02:02:04 1988 -0500
summary:     convert to Draft-Proposed ANSI C

$ hg update -r 2
$ cat src/pkg/debug/macho/testdata/hello.c

#include <stdio.h>

main()
{
    printf("hello, world\n");
}

最新修正:转换为ANSI C

changeset:   3:172d32922e72
user:        Brian Kernighan <bwk@research.att.com>
date:        Fri Apr 01 02:03:04 1988 -0500
summary:     last-minute fix: convert to ANSI C

$ hg update -r 3
cat src/pkg/debug/macho/testdata/hello.c


#include <stdio.h>

int
main(void)
{
    printf("hello, world\n");
    return 0;
}

转到规格起点

changeset:   4:4e9a5b095532
user:        Robert Griesemer <gri@golang.org>
date:        Sun Mar 02 20:47:34 2008 -0800
summary:     Go spec starting point.
2020-07-02