全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

揭秘Go语言源码库早期提交之谜:一个C语言演进的彩蛋

go语言源码库中前四次提交记录,日期远早于go语言诞生,并署名brian kernighan,实则是一个精心设计的“彩蛋”。这些提交以“hello, world”程序为例,巧妙地展现了c语言从早期形式到ansi c标准的演进过程,以此向c语言的根基及其在贝尔实验室的起源致敬,而非go语言本身的初始开发。

Go语言源码库的早期提交:一个历史之谜

对于任何关注Go语言源码库历史的开发者而言,其早期提交记录可能会带来一些困惑。GitHub上显示的前四次提交(f6182e5abf5e、b66d0bf8da3e、ac3363d7e788、172d32922e72)的时间戳异常地早,甚至可以追溯到1972年,远在Go语言概念提出之前。更令人惊讶的是,这些提交的作者均被标记为计算机科学巨匠Brian Kernighan,并且内容都是C语言实现的“hello, world”程序。这并非一个错误,而是一个深具意义的“彩蛋”或致敬。

这一系列提交旨在向C语言及其在贝尔实验室的起源致敬。Go语言的联合创始人之一Rob Pike曾于20世纪80年代在贝尔实验室与Brian Kernighan共事,这使得这一彩蛋成为对他们共同专业背景和编程语言发展历史的巧妙引用。它不仅是一个内部玩笑,更是一种文化传承的体现。

“Hello, World”的C语言演进史

这四个早期提交通过“hello, world”程序的迭代,形象地展示了C语言在不同历史阶段的演变。下面我们将逐一解析这些提交及其代码:

1. 早期C语言风格的“Hello, World”(1972年)

首次提交代表了C语言非常早期的形态,甚至在printf函数广泛应用之前。它通过putchar函数和外部变量来拼接字符串。

  • 提交信息:

    • changeset: 0:f6182e5abf5e
    • user: Brian Kernighan
    • date: Tue Jul 18 19:05:45 1972 -0500
    • summary: hello, world
  • 代码示例:

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

    这个版本展示了原始C语言中字符串处理的原始方式,通过字符常量和extern声明来构建输出。

2. 引入printf函数的C语言版本(1974年)

第二次提交标志着C语言发展的一个重要里程碑:printf函数的引入。这极大地简化了字符串输出操作。

  • 提交信息:

    • changeset: 1:b66d0bf8da3e
    • user: Brian Kernighan
    • date: Sun Jan 20 01:02:03 1974 -0400
    • summary: convert to C
  • 代码示例:

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

    相比前一个版本,代码变得更加简洁和易读,反映了printf作为标准库函数带来的便利。

3. 迈向ANSI C草案的标准化(1988年)

第三次提交反映了C语言向ANSI C标准迈进的努力。它引入了#include 来明确声明所使用的标准库函数,这是现代C语言编程的常见实践。

  • 提交信息:

    • changeset: 2:ac3363d7e788
    • user: Brian Kernighan
    • date: Fri Apr 01 02:02:04 1988 -0500
    • summary: convert to Draft-Proposed ANSI C
  • 代码示例:

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

    此版本增加了#include ,并为printf的输出添加了换行符\n,使其更符合终端输出习惯。

4. 完整的ANSI C标准实现(1988年)

第四次提交是前一个版本的进一步完善,使其完全符合ANSI C标准。它明确了main函数的返回类型为int,并接受void参数,同时添加了return 0;表示程序正常退出。

  • 提交信息:

    • changeset: 3:172d32922e72
    • user: Brian Kernighan
    • date: Fri Apr 01 02:03:04 1988 -0500
    • summary: last-minute fix: convert to ANSI C
  • 代码示例:

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

    这个版本展示了现代C语言程序的基本结构,是当前大多数C语言教程中“hello, world”程序的标准形式。

Go语言项目的真正起点

在这些历史性的C语言“彩蛋”之后,Go语言项目才真正开始其自身的版本历史。Go语言的实际第一个提交,包含了Go语言规范的初始版本,其时间戳为2008年3月2日。

  • 提交信息:
    • changeset: 4:4e9a5b095532
    • user: Robert Griesemer google.com>
    • date: Sun Mar 02 20:47:34 2008 -0800
    • summary: Go spec starting point.

这明确了Go语言的开发始于2008年,与前述的C语言演进历史在时间上有着清晰的界限。

总结与启示

Go语言源码库中这些看似不合时宜的早期提交,并非偶然,而是一个富有深意的编程文化“彩蛋”。它不仅向C语言的奠基者Brian Kernighan致敬,也巧妙地回顾了C语言从其早期形态到标准化过程中的关键演变。对于Go语言的开发者和爱好者来说,这不仅是一个有趣的发现,更是一个提醒:即使是像Go这样现代的语言,也深深植根于计算机科学和编程语言发展的悠久历史之中。

这个彩蛋也反映了Go语言设计者们对历史的尊重和幽默感。正如Rob Pike在2014年GopherCon大会上的演讲《hellogophers.slide》中所述,它承载着对编程历史的敬意。理解这一背景,有助于我们更深入地体会Go语言及其社区所蕴含的文化底蕴。


# git  # go  # github  # c语言  # 计算机  # go语言  # 编程语言  # ai  # google  # c语言编程  # 标准库  # 常量  # date  # include  # printf  # 字符常量  # extern  # 字符串  # int  # void 


相关文章: 小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何通过FTP服务器快速搭建网站?  建站之星如何快速更换网站模板?  上海网站制作开发公司,上海买房比较好的网站有哪些?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  建站之星如何实现PC+手机+微信网站五合一建站?  网站制作服务平台,有什么网站可以发布本地服务信息?  建站之星安装路径如何正确选择及配置?  C#如何序列化对象为XML XmlSerializer用法  深圳网站制作的公司有哪些,dido官方网站?  高端建站如何打造兼具美学与转化的品牌官网?  盘锦网站制作公司,盘锦大洼有多少5G网站?  黑客如何通过漏洞一步步攻陷网站服务器?  如何用AWS免费套餐快速搭建高效网站?  如何在橙子建站中快速调整背景颜色?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  相册网站制作软件,图片上的网址怎么复制?  如何快速查询网站的真实建站时间?  如何做静态网页,sublimetext3.0制作静态网页?  如何在云虚拟主机上快速搭建个人网站?  广州美橙建站如何快速搭建多端合一网站?  ,交易猫的商品怎么发布到网站上去?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  广州商城建站系统开发成本与周期如何控制?  英语简历制作免费网站推荐,如何将简历翻译成英文?  建站主机选购指南:核心配置与性价比推荐解析  网站企业制作流程,用什么语言做企业网站比较好?  全景视频制作网站有哪些,全景图怎么做成网页?  宝塔Windows建站如何避免显示默认IIS页面?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  建站之星微信建站一键生成小程序+多端营销系统  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何选择高效稳定的ISP建站解决方案?  如何通过wdcp面板快速创建网站?  测试制作网站有哪些,测试性取向的权威测试或者网站?  官网网站制作腾讯审核要多久,联想路由器newifi官网  制作国外网站的软件,国外有哪些比较优质的网站推荐?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  建站之星北京办公室:智能建站系统与小程序生成方案解析  如何通过VPS搭建网站快速盈利?  建站主机数据库如何配置才能提升网站性能?  西安大型网站制作公司,西安招聘网站最好的是哪个?  建站之星下载版如何获取与安装?  建站之星如何取消后台验证码生成?  建站与域名管理如何高效结合?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。