Я заметил, что первые 4 ревизии f6182e5abf5e
, b66d0bf8da3e
, ac3363d7e788
, 172d32922e72
источника Go - все это задолго до того, как Голанг был даже предложен, старейшее существо с 1972 года. Они также приписываются Брайану Кернигану из AWK-подопечной славы. Они кажутся hello, world
реализациями в C. Является ли это пасхальное яйцо или существует какая-то практическая цель?
Какая история истории пересмотра Go?
Ответ 1
Что thread упоминает:
Посвящение, пасхальное яйцо, внутренняя шутка, возьмите свой выбор:). Обратите внимание на авторов коммитов, о которых идет речь.
Указанные ссылки на резьбу this commit в качестве отправной точки, а также указывает на фактическая первая фиксация проекта Golang, с первая ревизия спецификации Go.
(якобы) "автор" четырех первых коммитов Брайан Керниган.
Роб Пайк работал с Брайаном в 1980-х годах, Bell Labs, поэтому это можно рассматривать как ссылку на его профессиональное происхождение.
Идея этого пасхального яйца состоит в том, чтобы проиллюстрировать эволюцию программы Hello World
в C:
(См. больше в этом недавнем разговоре GopherCon April 2014 hellogophers.slide
- 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 <[email protected]>
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;
}
Начальная точка перехода Spec
changeset: 4:4e9a5b095532
user: Robert Griesemer <[email protected]>
date: Sun Mar 02 20:47:34 2008 -0800
summary: Go spec starting point.