Google大量使用Python [关闭]


185

Google对Python的大量使用,仅仅是口味问题还是它给他们带来了竞争优势?


21
这需要是社区Wiki
AutomatedTester,2010年

72
亚历克斯·马特利(Alex Martelli)很快就会收到被接受的答案,..
ChristopheD'4

4
实际上,我认为这个答案可以客观地回答(Google必须在某处声明为什么使用它;))
Felix Kling 2010年

15
@nomemory,“重”是一个相当正确的形容词在这里(当然你需要能够看到我们的代码库进行确认-多大的Python和Java VS C ++等-但是,我能看它,并且每天都要为它贡献力量,主要是Python ;-)。而且问题不仅仅涉及整个IT行业-而是针对拥有20,000名员工(包括非程序员)的Google,在我们当中,有些人最好形成 “整体看法”,因为形成这种看法并采取行动这是我们工作的核心部分;-)。所以,我投票决定重新开放。
Alex Martelli '04

7
@nomemory,在Python会议上总是有Oracle招聘人员,所以我很惊讶地发现Python在其代码库中“不存在”(如果这样的话,这些招聘人员在撒谎,浪费了自己的时间和Pythonistas ;-)。而且无论如何,甲骨文和谷歌真的如何竞争?-)
亚历克斯·马丁里

Answers:


286

我真的不能给出确切的答案,因为当我2004年在Google进行采访时,Python在Google方面已经很突出。

确实,有一个显然吸引人的解释,我绝对可以否认:不是Google使用Python是因为它雇用了这么多杰出的Pythonista使用者-而是,大多数“杰出的Pythonista” Google员工至少部分地加入了Google,因为我们知道Python的重要性在那里(可能有Peter Norvig和Jeremy Hylton例外,但从历史上看,谷歌对Python的选择甚至早于它们)。

这绝对是我首先感兴趣的原因(我的出版商让我知道了Google正在购买的大量书籍-起初,我认为这是出售我的自由咨询服务的好机会...;- ),后来我如何说服Guido加入我们,而且,我相信,这是诸如Greg Stein,Wesley Chun,Fredrik Lundh,Thomas Wouters,Collin Winters,Jeffrey Yasskin等Pythonista的动机的一部分。

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

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

其他语言,包括格雷格(Greg)在'06提到的语言,都是“偶然的”或用于其他特定任务(例如,针对iPhone或Macs上的客户端的Objective C),例如,当Google雇用其第一批系统管理员时,这些员工不可避免地精通Perl和Bash,并经常使用这两种语言来开发一些复杂的内部系统。用Python重新编码(为了更易于部署和维护)经常发生。其他人(例如C#)可能由于收购而暂时陷入混乱,但是同样,使用“一种主要的Google语言”进行重新编码始终是相当高的优先级(在C#的情况下,重新编码通常主要是使用Java,因为两种语言在抽象层次上都涉及相似的领域)。


@Alex可能我听不懂,但似乎Google希望为那些在大学里呆了几年并且只接触过C或C ++的工程师(尤其是研究人员)开放他们的环境(因为每个人都以这些语言开头,并且大多数人以也可以)。在这里,python是强大的竞争者,它提供了与庞大的C / C ++库的接口。
拉米兹·乌丁


真棒见解!可以帮助潜在的Google员工
kmario23

3
我从阅读Levy的优秀著作“ In the Plex”中收集到的一个小故事是Python进入Google的方式(在它被命名为Google之前,它是“ backrub”)。拉里·佩奇(Larry Page)在当时崭新的Java 1.0 beta中编写了一个爬网的“蜘蛛”,但是它是如此地糟糕,以至于他的宿舍室友通过用一种更加稳定,扎实和高效的语言... Python重写了它。有趣的是,如果没有该“蜘蛛”,谷歌可能永远不会存在...
Alex Martelli'1

34

我尚未阅读整篇文章,也不知道它的代表性,但这也许可以回答您的问题:Google的Python

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

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


别忘了Python的创建者Guido van Rossum从2005年至2012年在Google工作;)


我也找到了这个报价,但我无法验证它:

“ Python从一开始就一直是Google的重要组成部分,并且随着系统的发展和发展而一直存在。如今,数十名Google工程师使用Python,我们正在寻找更多使用这种语言的人。”
-Peter Norvig, Google搜索质量总监


那么,这是品味还是竞争优势?
Andrei Ciobanu

4
@nomemory:也许两者都有?它符合工程流程(口味),因此,如果他们可以更早完成产品,则可能会给他们带来优势。
Felix Kling '04

1
数十名工程师使用Python?对于像Google这样的大公司来说,这并不是什么有说服力的案例。
詹森·贝克

28

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

好吧,简单的常识将限制Python在Google规模上运行时的适用性:它不如Java或C ++快,线程糟糕,内存使用率更高等。在设计任何新系统时,我们面临的设计约束之一是, “当负载增加10倍或100倍时会发生什么?如果整个星球都认为您的新服务很棒,会发生什么?” 任何技术,使满足该约束更难-我认为Python属于这一类- 应该如果没有以其他优点支持它的理由不充分,则不要灰心。您必须在Python的优点和缺点之间取得平衡:您的工程师使用Python可能会提高生产力,但是如果随着数量的增加他们不得不解决更多平台级的性能/扩展限制,您会领先吗?等等


20

如果您赞同Paul Graham的简洁== power 想法(即,如果我可以用10行的语言用X语言编写代码来完成您用100行的Y语言所编写的代码,那么我的语言会更强大)

这些天硬件便宜,肉制品昂贵。我知道与其他语言相比,我可以用Python写出更多,更快,更好和更清晰的文字,仅是因为往往包括电池在内。当然,它可能会慢一些,但是您真的会注意到.05秒和.0005秒之间的区别吗?

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

所以是的,我想说用Python编写代码具有竞争优势。


2
诅咒的网站重新设计!好吧,他有替代链接,所以就去。
韦恩·维尔纳

11
“您真的会注意到.5秒和.005秒之间的区别吗?” 您不在Google核心搜索,YouTube或Gmail上工作,对吗?
jwg

5
当您需要与Google一样多的设备时,硬件并不便宜。
NGRhodes

5
关于Python的伟大之处在于,当您的性能差异很大(例如〜495ms)时,您可以插入一些C / C ++代码。Python使您可以快速开发高效地进行优化。
Trevor 2014年

3
.5秒和.005秒之间的区别是,一个明显,而另一个不明显。
Charlie Schliesser 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.