在Google上大量使用Python

Ron*_*han 185 python

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

Ale*_*lli 284

我无法给出明确的答案,因为在2004年我在谷歌采访时,Python已经在谷歌中占据了一席之地.

事实上,有一个明显有吸引力的解释,我绝对可以否认:不是谷歌使用Python,因为它雇佣了如此多的知名Pythonist - 而是,大多数"杰出的Pythonista"谷歌加入谷歌,至少部分是因为我们知道Python的突出地位那里(可能的例外包括Peter Norvig和Jeremy Hylton,但历史上谷歌选择的Python甚至比他们更早).

这就是我第一次感兴趣的原因(我的出版商让我知道谷歌正在购买我的书的大量副本 - 起初,我认为这是一个销售我的自由咨询服务的好机会......; - ),我后来如何能说服Guido加入我们,而且,我相信,像Greg Stein,Wesley Chun,Fredrik Lundh,Thomas Wouters,Collin Winters,Jeffrey Yasskin这样的Pythonist的动机的一部分......

我相信,这一切都已经开始了,因为最早的Google员工(谢尔盖,拉里,克雷格......)作出了一个很好的工程决策:"我们可以在哪里使用Python,我们必须使用C++" - 他们使用(子集)用于软件堆栈部分的C++,其中非常低延迟和/或严格控制内存是至关重要的,而Python,允许更快速地交付和维护程序,用于其他部分.当时,在90年代后期,后者角色的选择基本上是在Python和Perl之间:其他脚本语言要么未成熟(例如我不认为Ruby还存在),或者有其他问题和限制.Perl更加成熟(特别是在CPAN可用附加组件的生态系统方面),但Python被认为更具可读性和可维护性,并且与C++库(通过SWIG)的连接更容易.

Java后来进入了一个中间位置 - 最近当然开发了Go(虽然我不相信它还有很多生产工作,因为它还在不断发展和成熟).一些专门的语言(如sawzall)也可以用于非常具体的任务,当然Javascript对于浏览器端的工作非常重要.

其他语言,包括Greg在06年提到的语言,或者"偶然"或用于其他特定任务(例如,iPhone或Mac上的客户的目标C) - 例如,当谷歌聘请其第一个系统管理员时这些员工不可避免地掌握了Perl和Bash,并经常使用这两种语言开发一些复杂的内部系统; 在Python中重新编码(为了更容易部署和可维护性)经常发生.由于收购,其他人(例如C#)可能暂时处于混合状态,但是,再次,在"主要Google语言"之一中重新编码始终是一个相当高的优先级(在C#的情况下,重新编码通常主要在Java中,因为这两种语言在抽象级别方面解决了类似的问题.

  • 时间旅行FTW:http://web.archive.org/web/20091222094118/http://labs.google.com/papers/sawzall.html (8认同)
  • `sawzall`链接死了. (5认同)
  • 我从阅读Levy的优秀着作"In the'Plex"中收集的一篇文章是Python进入Google的方式(在它被命名为Google之前 - 它当时是"backrub").Larry Page在当时全新的Java 1.0测试版中编写了一个网络抓取的"蜘蛛",它的破坏使他的宿舍室友用一种更加稳重,富有成效的语言重写它...... Python.有趣的是,如果没有"蜘蛛",谷歌可能永远不会存在...... (3认同)

Fel*_*ing 34

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

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

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


不要忘记,Python的创建者Guido van Rossum从2005年起为Google工作;)


我也找到了这个引用,但我无法验证它:

"从一开始,Python一直是Google的重要组成部分,并且随着系统的发展和发展,它仍然如此.今天,数十名Google工程师使用Python,我们正在寻找更多具备这种语言技能的人"
- Peter Norvig,谷歌搜索质量总监

  • @nomemory:也许两者兼而有之?它符合工程流程(品味),如果能够提前完成产品,可能会给他们带来优势. (4认同)
  • *数十名*工程师使用 Python?对于像谷歌这样大的公司来说,这几乎不是一个令人信服的案例。 (2认同)

dat*_*typ 28

我正在阅读有关Unladen-Swallow的文章,该项目旨在提高CPython的性能.在浏览过他们的讨论板上我偶然发现了这个讨论,其中科林冬季(谷歌员工和Python核心开发者)的回答要求是谷歌员工正在从使用Python为新项目气馁:

好吧,简单的常识会限制Python在Google规模运营时的适用性:它没有Java或C++那么快,线程很糟糕,内存使用率更高等等.在设计任何新系统时我们面临的设计限制之一是, "当负载上升10倍或100倍时会发生什么?如果整个星球认为你的新服务很棒,会发生什么?" 任何使这种约束更难满足的技术 - 我认为Python属于这一类 - 如果没有一个非常有利于其他优点的强有力的案例,那么应该不鼓励这种技术.你必须平衡Python的优势和它的弱点:你的工程师使用Python可能会更有效率,但如果他们不得不在数量增加时解决更多的平台级性能/扩展限制,那么你是否会领先一步?等等


Way*_*ner 20

如果你赞同保罗格雷厄姆的想法,即简洁= =力量(即如果我能用10行语言X编写代码来完成你用100行语言Y,我的语言更强大)

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

在一个更现实的例子中,如果谷歌开发人员用Python编写程序,他们从不担心垃圾收集,而公司X用C++编写程序,他们花费10%的时间来追踪与内存分配相关的错误,猜猜谁做得更快 - 即使C++商店设法以同样快的速度编写其余代码.

所以,是的,我认为在Python中编码是一种竞争优势.

  • "你真的会注意到.5秒和.005秒之间的差异吗?" 你没有在谷歌核心搜索,YouTube或Gmail上工作,对吗? (11认同)
  • 当您需要Google时,硬件并不便宜. (5认同)
  • Python的优点在于,当您有显着的性能差异(例如~495ms)时,您可以插入一些C/C++代码.Python允许您快速开发_and_优化. (5认同)
  • .5秒和.005秒之间的差异是一个是明显的而另一个是不明显的. (3认同)
  • 被诅咒的网站重新设计!好吧,他有一个替代链接,所以你去了. (2认同)