大家好,我是 polarisxu。
网友们真的是很强大,竟然发现 Go 代码仓库中第一次发生在 1972 年,提交者是 Brian Kernighan。他是 《C 语言程序设计》 和 《Go 语言程序设计》这两本书的作者之一(都号称是圣经)。
![1.png](https://static.studygolang.com/210702/8871f5a05b19b6ef2efc0d715a95be5e.png)
你可以通过这个地址查看:<https://github.com/golang/go/commit/7d7c6a97f8>。从文件后缀看,是 B 语言的 Hello World 程序(B 语言是 Ken 发明的)。
顺着这个,我查看了 Go 仓库最早的几次提交记录:
```bash
$ git log --reverse
commit 7d7c6a97f815e9279d08cfaea7d5efb5e90695a8
Author: Brian Kernighan <bwk>
Date: Tue Jul 18 19:05:45 1972 -0500
hello, world
R=ken
DELTA=7 (7 added, 0 deleted, 0 changed)
commit 0bb0b61d6a85b2a1a33dcbc418089656f2754d32
Author: Brian Kernighan <bwk>
Date: Sun Jan 20 01:02:03 1974 -0400
convert to C
R=dmr
DELTA=6 (0 added, 3 deleted, 3 changed)
commit 0744ac969119db8a0ad3253951d375eb77cfce9e
Author: Brian Kernighan <research!bwk>
Date: Fri Apr 1 02:02:04 1988 -0500
convert to Draft-Proposed ANSI C
R=dmr
DELTA=5 (2 added, 0 deleted, 3 changed)
commit d82b11e4a46307f1f1415024f33263e819c222b8
Author: Brian Kernighan <bwk@research.att.com>
Date: Fri Apr 1 02:03:04 1988 -0500
last-minute fix: convert to ANSI C
R=dmr
DELTA=3 (2 added, 0 deleted, 1 changed)
commit 18c5b488a3b2e218c0e0cf2a7d4820d9da93a554
Author: Robert Griesemer <gri@golang.org>
Date: Sun Mar 2 20:47:34 2008 -0800
Go spec starting point.
```
1974 年,Brian Kernighan 将 B 语言的 Hello World 改为 C 语言实现;1988 年,他又将 Hello World 改为 ANSI C 实现。通过 `https://github.com/golang/go/commit/` 加上对应提交的 hash 值,可以在浏览器方便看到具体的改变,同时还有网友在这些提交下面的评论,比如:
![2.png](https://static.studygolang.com/210702/7275d2f191352bd157452bfcb6617a0e.png)
一般认为,Hello World 最早出现在 Brian Kernigham 在 1972 年发布的《 *B 语言简介教程(A Tutorial Introduction to the Language B)*》中,而 Go 代码中的第一次提交正好是 1972 年。在那以后,Hello World 还被用于 1974 年的贝尔实验室备忘录,以及 1987 年他的《 C 语言程序设计(The C Programming Language)》一书。从此 Hello World 成为了编程语言的第一个示例程序。(这些时间点和上面 Go 代码的提交时间点一致)。
没想到,Go 代码仓库中竟然记录下了各种历史性的时刻,大概率是 Go 作者们保存下来的,毕竟他们几个都是贝尔实验的。
之后的 Sun Mar 2 20:47:34 2008 才真正是 Go 的开始。
本文首发于站长公众号「polarisxu」,欢迎下发扫码关注,一起提升!