Go语言:互联网时代的速度与简约之美
咖啡厅里的灵感碰撞
2007年9月,加州的一个平常下午。在谷歌山景城总部附近的咖啡厅里,罗伯特·格瑞史莫(Robert Griesemer)、罗布·派克(Rob Pike)和肯·汤普森(Ken Thompson)围坐在一张小桌旁,讨论着他们对编程语言的不满。
"构建软件不应该这么困难,"罗布·派克回忆当时的情景,"我们被迫在编程效率和执行效率之间做出选择,为什么不能兼得呢?"
这三位工程师并非普通人物。肯·汤普森是UNIX操作系统和B语言的创造者,计算机科学界的传奇人物;罗布·派克是Plan 9操作系统和UTF-8编码的设计者;罗伯特·格瑞史莫则参与设计了Java的HotSpot虚拟机和Chrome的JavaScript引擎。他们都有着丰富的语言设计经验,也深知现有语言的局限。
在谷歌,他们日常工作中使用的C++、Java等语言在处理大型分布式系统时显得越来越笨重:编译缓慢、语言复杂、依赖管理困难。另一方面,像Python这样的动态语言虽然开发迅速,但性能又难以满足大规模应用的需求。
"我们需要一种新语言,"肯·汤普森坚定地说,"一种为现代硬件、现代编程需求而设计的语言。"
就这样,Go语言的种子在这次看似普通的咖啡厅讨论中埋下了。三位创始人决定打造一种既保留静态类型语言的安全性和性能,又拥有动态语言的表达力和简洁性的编程语言。
秘密项目:从实验到现实
回到谷歌,这个项目最初是作为"20%工作时间"(谷歌允许工程师将20%的工作时间用于个人项目)的实验开始的。三位创始人在2007年底开始勾勒语言设计,到2008年中期,已经有了一个可行的编译器原型。
Go语言的名字简短有力,正如他们期望这门语言本身一样。有趣的是,创始人原本打算将其命名为"go"(全小写),但因为这个词过于常见,难以在互联网上搜索,最终决定采用"Go"