在Google上大量使用Python

谷歌对Python的大量使用,这只是一个味道的问题,还是它给了他们一个竞争优势?

我无法给出一个明确的答案,因为在2004年我在Google采访时,Python在Google上已经很突出。

的确,有一个显然有吸引力的解释是我可以肯定地否认的:并不是Google使用Python,因为它雇用了很多着名的Pythonistas,而是大多数“突出的Pythonista”谷歌joinGoogle,至less部分是因为我们知道Python的突出那里(可能的例外包括Peter Norvig和Jeremy Hylton,但是历史上谷歌的Python的select早于他们)。

这绝对是我第一次感兴趣的原因(我的出版商让我知道Google购买我书的大量副本 – 起初,我认为这是一个出售我的自由咨询服务的好机会; ),后来我怎么能说服Guidojoin我们,而且我相信,这是Greg Stein,Wesley Chun,Fredrik Lundh,Thomas Wouters,Collin Winters,Jeffrey Yasskin等Pythonistas的动力之一。

这一切都开始了,我相信,因为最早的Google员工(Sergey,Larry,Craig等)做出了一个很好的工程决策:“我们可以在哪里工作,C ++在哪里我们必须” – 他们使用(一个子集) C ++用于软件堆栈的部分,其中非常低的延迟和/或严格的内存控制是至关重要的,Python可以更快速地交付和维护程序,用于其他部分。 当时,90年代后期,后一种angular色的select基本上是在Python和Perl之间:其他脚本语言或者是未成熟的(例如,我认为Ruby还没有出现),还有其他的问题和限制。 Perl更成熟(特别是通过CPAN可用附加组件的生态系统),但是Python被认为更易于读取和维护,并且通过SWIG连接到C ++库更容易。

Java在后来出现,覆盖了一个中间位置 – 最近当然Go是开发的(尽pipe我不相信它里面还有很多的生产工作,因为它还在不断发展和成熟)。 一些特殊的语言如sawzall也被用于非常具体的任务,当然Javascript对于浏览器端的工作非常重要。

其他语言,包括Greg在06年提到的语言,或者是“偶然的”,或者用于其他特定的任务(例如,客户端在iPhone或Mac上的Objective C) – 例如,当Google聘用了第一个系统pipe理员,那些员工不可避免地对Perl和Bash有很强的掌握力,经常使用这两种语言之一来开发一些复杂的内部系统; 在Python中重新编码(以便于部署和维护)经常发生。 其他公司(比如C#)可能由于收购而暂时混合在一起,但是再一次,“Google主要语言”之一的重新编码一直是相当高的优先级(在C#的情况下,重新编码通常主要是Java,因为这两种语言在抽象层次上处理类似的领域)。

我没有阅读整篇文章,我不知道它有多代表,但也许这回答你的问题: 在谷歌的Python

好吧,我阅读了大部分内容,不幸的是它没有提供太多的见解,但我认为这仍然是一篇有趣的文章。 也许最重要的是:

在Google中,python是C ++和Java的三种“官方语言”之一。 这里的官方意味着Google员工可以将这些语言部署到生产服务中。 (Google内部人员使用许多技术,包括PHP,C#,Ruby和Perl)。 Python非常适合Google的工程过程。 Google的典型项目有一个小团队(3人)和短期(3个月)。


不要忘记,Python的创build者Guido van Rossum从2005年至2012年间曾在Google工作;)


我也发现这个报价,但我无法validation它:

“Python从一开始就一直是Google的重要组成部分,随着系统的不断成熟和发展,现在有数十位Google工程师使用Python,我们正在寻找更多具备这种语言技能的人”
Googlesearch质量总监Peter Norvig

我正在读关于Unladen-Swallow的一个项目,旨在提高CPython的性能。 在浏览讨论板时,我偶然发现了这个讨论 ,Collin Winter(Google员工和Python核心开发人员)回答说, Google员工不鼓励将Python用于新项目

那么简单的常识就会限制Python在Google规模下运行的适用性:它不像Java或C ++那么快,线程太差,内存使用率更高等。我们在devise任何新系统时遇到的一个devise约束是, “当负载增加10倍或100倍时会发生什么?如果整个星球都认为你的新服务太棒了,会发生什么? 任何使这个约束更加难以满足的技术 – 我认为Python属于这个范畴 – 如果它没有一个有利于其他优点的非常有力的案例,就应该感到气馁。 你必须平衡Python的优势和弱点:你的工程师使用Python可能会更有效率,但是如果他们必须随着数量的增加而解决更多的平台级别的性能/扩展限制,你会提前做出什么来? 等等

如果你订阅Paul Graham的简洁性==权力(即如果我可以用10行语言编写代码来完成你所花的100行语言Y,我的语言更强大)

这些天硬件很便宜,肉类是昂贵的 。 我知道我可以在Python中写得比在其他语言中写得更多,更快,更好,更清晰,因为电池往往被包含在内。 当然,这可能会更慢,但你真的会注意到.05秒和.0005秒之间的差异?

在一个更现实的例子中,如果Google开发人员用Python编写一个程序,他们不必担心垃圾收集,X公司用C ++编写程序,他们花费10%的时间来跟踪与内存分配相关的错误,猜猜谁做得更快 – 即使C ++商店能够尽可能快地编写代码的其余部分。

所以是的,我认为这是在Python中编码的竞争优势。