在 Google 大量使用 Python

Google 大量使用 Python,这只是个人品味的问题,还是给了他们一个竞争优势?

108369 次浏览

我还没有读完整篇文章,我不知道它的代表性如何,但也许这回答了你的问题: Python at Google

好吧,我读了它的大部分,不幸的是,它没有给 那个太多的洞察力,但我认为它仍然是一个有趣的文章。也许最重要的是:

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


别忘了,Python 的创始人 吉多·范罗苏姆曾在2005年至2012年间为谷歌工作;)


我还发现了这句话,但我无法证实:

“从一开始,Python 就是谷歌的一个重要组成部分,而且随着系统的发展和演变,它一直是这样。如今,许多谷歌工程师都在使用 Python,我们正在寻找更多掌握这门语言的人才。”
—— Peter Norvig,Google 搜索质量总监

我不能给出确切的答案,因为到2004年我在 Google 面试的时候,Python 已经是 Google 的佼佼者了。

事实上,有一个明显有吸引力的解释,我可以肯定地否认: 这并不是说谷歌使用 Python 是因为它雇佣了如此多杰出的 Python 崇拜者——相反,大多数“杰出的 Python 崇拜者”加入谷歌,至少部分是因为我们知道 Python 在那里的突出地位(可能的例外包括 Peter Norvig 和 Jeremy Hylton,但从历史上看,谷歌选择 Python 甚至比他们还早)。

这绝对是我第一次感兴趣的原因(我的出版商让我知道谷歌正在购买大量的我的书的副本——起初,我认为这是一个很好的机会,出售我的自由职业咨询服务... ...) ,我后来如何能够说服圭多加入我们,而且,我相信,部分的动机,这样的 Python 爱好者格雷格斯坦因,韦斯利春,弗雷德里克伦德,托马斯沃特斯,科林温特斯,杰弗里亚斯金,..。

我相信,这一切的开始,是因为最早的谷歌人(Sergey,Larry,Craig,...)做出了一个很好的工程决策: “我们可以使用 Python,我们必须使用 C + +”——他们使用(一个子集) C + + 来处理软件堆栈中延迟非常低和/或对内存的严格控制至关重要的部分,而 Python 则允许其他部分更快地交付和维护程序。当时,90年代末,对于后一个角色的选择基本上是在 Python 和 Perl 之间: 其他脚本语言要么还不成熟(例如,我认为 Ruby 还没有出现) ,要么存在其他问题和局限性。Perl 更加成熟(特别是在其通过 CPAN 提供可用附加组件的生态系统方面) ,但 Python 被认为更具可读性和可维护性,并且与 C + + 库的接口(通过 SWIG)更加容易。

Java 是后来才出现的,覆盖了一个中间的利基市场——当然最近 Go 也被开发出来了(尽管我认为它还没有太多的生产工作,因为它还在不断发展和成熟)。一些专门的语言,比如 电锯,也可以用于非常特定的任务,当然 Javascript 对于浏览器端的工作非常重要。

其他语言,包括格雷格在06年提到的那些,要么是“偶然的”,要么是用于其他特定的任务(例如,iPhone 或 Mac 客户端的 Objective C)——例如,当谷歌雇佣第一个系统管理员时,这些员工不可避免地掌握了很强的 Perl 和 Bash,并经常使用这两种语言中的任何一种来开发一些复杂的内部系统; 用 Python 重新编码这些语言(为了更容易部署和维护)经常发生。其他语言(例如 C #)可能因为收购而暂时混杂在一起,但是,再次强调,用“主要 Google 语言”之一重新编码总是相当高的优先级(在 C # 的例子中,重新编码通常主要使用 Java,因为这两种语言在抽象级别方面处理相似的领域)。

如果你赞同 Paul Graham 的的观点,即简洁 = = 力量。如果我能用10行 X 语言写代码来完成你用100行 Y 语言写的代码,我的语言就会更强大)

这些天 硬件很便宜,肉类很贵。我知道,与其他语言相比,我可以用 Python 写出更多、更快、更好、更清晰的东西,原因很简单,因为 Python 往往包含了电池。当然,它可能会慢一些,但是你真的会注意到0.05秒和0.0005秒之间的区别吗?

在一个更现实的例子中,如果谷歌开发者用 Python 编写一个程序,他们永远不用担心垃圾收集,而 X 公司用 C + + 编写一个程序,他们花费10% 的时间追踪与内存分配有关的 bug,猜猜谁做得更快——即使 C + + 工厂设法以同样快的速度编写他们剩余的代码。

所以,是的,我认为这是 Python 代码的一个竞争优势。

我当时正在阅读关于 卸货-燕子的文章,这是一个旨在提高 CPython 性能的项目。在浏览他们的讨论板时,我偶然发现了 这个讨论,Collin Winter (Google 员工和 Python 核心开发人员)在 声称上回答了 谷歌员工不鼓励在新项目中使用 Python的问题:

好吧,简单的常识就是这样 限制 Python 的适用性 以谷歌的规模经营: 它不是 和 Java 或 C + + 一样快的线程 糟透了,内存使用率更高等等。 我们面临的设计约束之一 在设计任何新系统时, ”当负荷增加时会发生什么 10倍还是100倍 整个星球都认为你的新服务 真的很棒吗?” 更难满足这种约束 我觉得巨蟒会陷入这种境地 类别——如果 证据不是很充分 在其他方面有利于它。你 必须平衡巨蟒的力量 它的弱点: 你们的工程师 使用 Python 可能更有效率, 但是如果他们不得不在更多的地方工作 平台级性能/扩展 随着体积的增加,限制,做 你领先? 等等。