问题:Google大量使用Python [关闭]
Google对Python的大量使用,仅仅是口味问题还是它给他们带来了竞争优势?
回答 0
我真的不能给出确切的答案,因为当我2004年在Google进行采访时,Python在Google方面已经很突出。
确实,有一个显然吸引人的解释,我绝对可以否认:不是Google使用Python是因为它雇用了这么多杰出的Pythonista使用者-而是,大多数“杰出的Pythonista” Google员工至少部分地加入了Google,因为我们知道Python的重要性在那里(可能有Peter Norvig和Jeremy Hyltonexceptions,但从历史上看,谷歌对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,因为两种语言在抽象层次上都涉及相似的领域)。
回答 1
我尚未阅读整篇文章,也不知道它的代表性,但这也许可以回答您的问题: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搜索质量总监
回答 2
我在阅读有关Unladen-Swallow的项目,该项目旨在提高CPython的性能。在浏览过他们的讨论板上我偶然发现了这个讨论,其中科林冬季(谷歌员工和Python核心开发者)的回答要求是谷歌员工正在从使用Python为新项目气馁:
好吧,简单的常识将限制Python在Google规模上运行时的适用性:它不如Java或C ++快,线程糟糕,内存使用率更高等。在设计任何新系统时,我们面临的设计约束之一是, “当负载增加10倍或100倍时会发生什么?如果整个星球都认为您的新服务很棒,会发生什么?” 任何技术,使满足该约束更难-我认为Python属于这一类- 应该如果没有以其他优点支持它的理由不充分,则不要灰心。您必须在Python的优点和缺点之间取得平衡:您的工程师使用Python可能会提高生产力,但是如果随着数量的增加他们不得不解决更多平台级的性能/扩展限制,您会领先吗?等等
回答 3
如果您赞同Paul Graham的简洁== power 的想法(即,如果我可以用10行的语言用X语言编写代码来完成您用100行的Y语言所编写的代码,那么我的语言会更强大)
这些天硬件便宜,肉制品昂贵。我知道与其他语言相比,我可以用Python写出更多,更快,更好和更清晰的文字,仅是因为往往包括电池在内。当然,它可能会慢一些,但是您真的会注意到.05秒和.0005秒之间的区别吗?
在一个更真实的示例中,如果Google开发人员使用Python编写程序而不必担心垃圾收集,而X公司使用C ++编写程序,并且他们花费了10%的时间来查找与内存分配相关的错误,猜猜谁做得更快-即使C ++商店设法以同样快的速度编写其余代码。
所以是的,我想说用Python编写代码具有竞争优势。