登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-04-16 18:53:03 175浏览 收藏

积累知识,胜过积蓄金银!毕竟在##column_title##开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Go 的修订历史背后的故事是什么?》,就带大家讲解一下golang知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我注意到 Go 源代码的前 4 个修订版f6182e5abf5e, b66d0bf8da3e, ac3363d7e788,172d32922e72都是在 Golang 被提出之前很久的,最古老的是 1972 年。他们也都归功于 AWK-ward 成名的 Brian Kernighan。它们似乎是hello, worldC 中的实现。这是一个复活节彩蛋还是有一些实际目的?

正确答案

线程提到:

致敬,复活节彩蛋,内部笑话,任君挑选:)。请注意相关提交的作者

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

四次首次提交的(据称)“作者”是Brian Kernighan
Rob Pike在 1980 年代曾与 Brian 在贝尔实验室共事,因此这可以被视为对他的职业出身的参考。

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

(通过最近的 GopherCon 2014 年 4 月谈话查看更多信息 hellogophers.slide - Rob Pike


你好世界

hg log -r 0:4
changeset:   0:f6182e5abf5e
user:        Brian Kernighan 
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 
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 
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 

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

最后一刻修复:转换为 ANSI C

changeset:   3:172d32922e72
user:        Brian Kernighan 
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 

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

Go 规范起点

changeset:   4:4e9a5b095532
user:        Robert Griesemer 
date:        Sun Mar 02 20:47:34 2008 -0800
summary:     Go spec starting point.

今天关于《Go 的修订历史背后的故事是什么?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表