谷歌对 Python 的大量使用,是只是口味问题还是给他们带来了竞争优势?
我真的不能给出一个明确的答案,因为到 2004 年我在谷歌接受采访时,Python 已经在谷歌很突出。
确实,有一个明显吸引人的解释我绝对可以否认:并不是说 Google 使用 Python 是因为它雇用了这么多杰出的 Pythonista ——而是,大多数“杰出的 Pythonista”谷歌员工加入了 Google,至少部分是因为我们知道 Python 的突出地位那里(可能的例外包括 Peter Norvig 和 Jeremy Hylton,但从历史上看,Google 对 Python 的选择甚至早于他们)。
这绝对是我第一次感兴趣的原因(我的出版商让我知道 Google 正在购买大量我的书 - 起初,我认为这是一个出售我的自由咨询服务的好机会......;- ),我后来是如何说服 Guido 加入我们的,我相信,这也是像 Greg Stein、Wesley Chun、Fredrik Lundh、Thomas Wouters、Collin Winters、Jeffrey Yasskin 等 Pythonistas 的部分动机。
我相信这一切都开始了,因为最早的 Google 员工(谢尔盖、拉里、克雷格……)做出了一个很好的工程决策:“我们可以使用 Python,必须使用 C”——他们使用了(其中的一个子集) C 用于软件堆栈中非常低的延迟和/或严格控制内存至关重要的部分,而 Python 允许更快速地交付和维护程序,用于其他部分。在 90 年代后期,后者角色的选择基本上是在 Python 和 Perl 之间:其他脚本语言要么不成熟(例如,我认为 Ruby 还没有出现),要么有其他问题和限制。Perl 更成熟(尤其是在其通过 CPAN 提供的可用插件的生态系统方面),但 Python 被认为更具可读性和可维护性,并且与 C++ 库的接口(通过 SWIG)更容易。
Java 出现较晚,涵盖了一个中间细分市场——当然,最近还开发了 Go(尽管我不相信它还有很多生产工作,因为它仍在发展和成熟)。一些专门的语言(例如sawzall)也用于非常特定的任务,当然Javascript对于浏览器端的工作非常重要。
其他语言,包括 Greg 在 06 年提到的语言,要么是“偶然的”,要么用于其他特定任务(例如,用于 iPhone 或 Mac 上的客户端的 Objective C)——例如,当 Google 雇佣了它的第一批系统管理员时,这些员工不可避免地非常精通 Perl 和 Bash,并且经常使用这两种语言中的任何一种来开发一些复杂的内部系统;在 Python 中重新编码(以便于部署和可维护性)经常发生。其他的(例如 C#)可能由于收购而暂时处于混合状态,但同样,用“主要 Google 语言”之一重新编码始终是一个相当高的优先级(在 C# 的情况下,重新编码通常主要使用 Java,因为这两种语言在抽象级别上处理相似的领域)。