Подтвердить что ты не робот

Какая история истории пересмотра Go?

Я заметил, что первые 4 ревизии f6182e5abf5e, b66d0bf8da3e, ac3363d7e788, 172d32922e72 источника Go - все это задолго до того, как Голанг был даже предложен, старейшее существо с 1972 года. Они также приписываются Брайану Кернигану из AWK-подопечной славы. Они кажутся hello, world реализациями в C. Является ли это пасхальное яйцо или существует какая-то практическая цель?

4b9b3361

Ответ 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.