阅读更多
Collin Winter是Python社区一位颇具影响力的开发者,他曾是CPython项目的核心开发者之一、也曾是Unladen Swallow(见文末注释)的核心开发者,参与了很多Python项目的开发。近来传闻Google将在其新项目中限制Python的使用,为此有开发者(以K表示)在Google 论坛中公开询问了Collin Winter,Collin Winter就很多尖锐的问题做了解答。这篇帖子同时也吸引了很多高质量的跟帖。

K:我听说Google将在其新项目中限制Python的使用,无疑这将大大减少Python代码和Python得到的支持。这是否确有其事还是只是谣传?

Collin Winter:的确,Google将限制Python的应用因为:Python不如Java和C++快,线程占有、内存使用都很高在使用Python开发新系统的时候,我们深知如果负载增加了10倍或者100倍系统会怎样,开发出的服务会有多糟糕我想Python已经发展到了一个狭缝中,因此在选择时我们应当权衡其优点和缺点,也许开发人员使用Python会很有效率,但随着系统的增大却会遇到许多平台级的性能限制。

K:Unladen Swallow会改变这一切么?你的期望是什么呢?

Collin Winter:Unladen Swallow旨在尽可能地将Python用在更多它现在尚未涉足的地方,而且Unladen Swallow也并非包治百病的灵丹妙药。如果没有人给Python注入投资,Python将仍旧比C和Java慢、占用更多的内存和线程。我希望开发者对Python的关注能够形成一个良性循环:越多的开发者感兴趣、越多的公司干兴趣,就有越多的投资注入,从而开发出更多的Python资源。

我认为Python及其他动态语言最好的一点就是:许多开发者工作于不同的子系统,但都为同一个代码基工作。而C或者C++语言则不同,参与的开发者越多,代码基就越支离破碎。从这个角度来说动态语言更加易于sandbox操作。这种敏捷和灵活是Python语言的重要特性。

K:Python的确是比C和Java慢,但它比较起v8 JavaScript引擎如何,是否会是后者的竞争对手呢?

Collin Winter:我认为像CPython之类的应用不可能像V8或者SquirrelFish Extreme那样快,毕竟后两者是专为速度而生的。我们也曾遇到一些高速性能方面的优化却很难配置到CPython中,因而只能放弃。作为开源项目的志愿者,CPython跟V8的侧重点不一样:CPython强调的是简单,也即简单、稍慢的内核便于人们在业余时间维护。

对于Python的另一个项目PyPy我倒是有很高的期望,希望它能摆脱C-level向后兼容的束缚而提供长久的性能解决方案。但这个愿望可能需要十年来实现。

K:CPython为什么考虑的是人们在业余时间的维护?

Collin Winter:CPython开发人员很少是有报酬的,几乎全部是志愿者,而Ruby开发者却能够从EngineYard等赞助商那里获得基金,因而当他们意识到MRI伺服web应用很慢时,他们可以更好地开发他们的VM。这也决定了我们开发的东西更加照顾大多数人的需求。

一位名叫Leon Sit的开发者在这里补充道:我认为当系统增大时,CPython除了在数字码方面表现不错之外其他的都差强人意。而且,CPython依赖C编辑器而 Windows系统根本没有C编辑器。为了提高CPython的速度,就需要添加打印信息而它们涉及的语法却非Python的标准语法。

K:那么Jython呢?

Collin Winter: Unladen Swallow的另一个主要目标是维护与C扩展模块的兼容性,后者被Google广泛使用。使用Jython需要将基础架构从SWIG移植到JNI,这是一项很痛苦的工作,而且几乎会无可避免地带来非常繁琐的bug。这是我们为什么没有选择Jython作为baseline的首要原因。

Jython是一部分全职的有薪开发者。但到目前为止,IronPython和Jython不得不将大部分的开发精力放在与CPython的兼容上,只有很少的精力放在性能优化方面。也由此可见支持Python 3多么影响Jython,IronPython, PyPy等项目。

网友Tom Machinski认为:CPython并非与低阶虚拟机(LLVM)相兼容。Unladen Swallow项目组提高五倍性能的承诺并没有真正意义上的实现。如果CPU耗用至少90%的执行时间用以运行一小段循环,CPython无疑可以将这段程序提高100倍甚至更多。但如果是大的应用呢?而且不要忘了,这种加速往往只是针对程序的某个点,也即热点优化(hot spot optimization)。

不要误会我的意思,我当然对Unladen Swallow项目很感兴趣而且希望它能够真正地实现目标。但我也绝对认同Collin的意思:即便Unladen Swallow项目所有的目标都能真正实现,Python也不是Java或者C++的对手。

有开发者问:像Google这样的公司为什么不用Python编写一个原型,然后逐渐将核心部分转化为Cyhton,这样以来既能利用Python的优势,也可以获得C的效率和优化性能?

Craig Citro答道:我认为对Google而言这是发展Python的新计划:用Python写代码、做测试,然后将重要部分转化为CPython以提高速度。然而这无疑是一项巨大的工作,而Collin Winter在上文中谈到的也不过是提高Python的运行速度、让Python在Google中继续保留下去。

而且目前CPython与Unladen Swallow的目标有很多矛盾之处,比如在低阶虚拟机(LLVM)方面,Unladen Swallow希望引入许多runtime优化和特性,而CPython却无法做到。

但是正如HotSpot JVM在一些标准方面可以打败g++一样,CPython击败单纯的Python代码静态编辑也不是什么难事。比如,如果你想写一个特殊的应用而你又很在乎性能,CPython就是很棒的选择。你可以将对象转化为本地的C数据类型,如果你嫌麻烦而将Python代码转为CPython,JIT编辑器会很好地优化这些纯Python代码。

注释: Unladen Swallow是Python的一个分支,由Google的一组开发人员组成。由于Google 在很多的应用项目中使用了Python,例如内部的服务器监控以及对外的Google Groups等。所以Google很自然地希望提高Python的性能。该项目致力于改善Python的执行效率。Unladen Swallow的目标是将Python的性能提高五倍。为了实现该目标,将增加JIT的支持,并对虚拟机进行重新设计。在性能提升的同时,依旧会与 CPython保证源代码级别的兼容。

Unladen Swallow 的项目领导者及核心开发人员包括: Collin Winter、Jeffrey Yasskin、Thomas Wouters ,均为长期从事 CPython 的核心开发人员。他们贡献自己的20%的自由工作时间给Unladen Swallow。但是这个组织坚持认为这是一个Python项目,而非Google所有。
24
5
评论 共 13 条 请登录后发表评论
13 楼 frankli 2009-11-20 16:47
找一个合适自己的,自己喜欢的.再找一个能吃饭的.
12 楼 jythoner 2009-11-18 09:36
seasar 写道
请 这位见习记者同学 注明 本文转载 至CSDN;
CSDN的新闻你们也看,我呕吐。。。。
想了解真相就去ggroup看看:
http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e

不好意思,头一次转,下次注意。主要是因为对这个事件比较在意,以前是不当记者的
11 楼 seasar 2009-11-17 22:44
转自:http://www.cnblogs.com/zuroc/archive/2009/11/17/1604653.html
10 楼 seasar 2009-11-17 22:43
本来做一个勤勤恳恳的码农我应该学习佩雷尔曼前辈的作风 --- "佩雷尔曼反复说他已经退出了数学界,不再认为自己是职业数学家了。"

不过鉴于Gtalk跳出很多朋友 -- 写PHP的和写Java的 -- 很高兴的告诉我伟大的CSDN上出现了一条新闻:
[独家]Google将限制Python语言的应用 开发社区热议 http://news.csdn.net/a/20091116/214803.html

加上很多菜鸟们无知的写到"看得心都碎了。"

我这颗不甘寂寞的心久久不能平静。

还是写一点东西吧。

不过,先做一个广告,我在卖python空间 http://stdyun.com/vhost 。

11月11号开始小规模出售,目前已经卖出11个,预定几个,距离一台机器卖50个目标还很遥远,不过距离卖出30个新增另一个机房第二台服务器已经很接近了:)

鉴于CSDN编辑翻译的非常非常非常糟糕 -- 断章取义,词不及义,加上不懂Python。

大家还是先去看看原帖 http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e

原帖在Unladen Swallow的论坛上。Unladen Swallow是Python的一个分支,由Google的一组开发人员组成。

我来翻译一小段:

kgn
I'm told that Google employees are being discouraged from using Python for new projects,
which seems silly given how much Python code and Python support comes out of Google.
I've hunted for more information but haven't found any.
Do you know any details, or is this just a rumor?

我听说Google不鼓励员工在新项目中用Python。
Google把如此多是Python代码和Python支持挪走听起来很傻。
我想再八卦一下,可惜没找到什么爆料。
你了解更多细节吗,又或者只是谣传。

       
Collin Winter     

Well, simple common sense is going to limit Python's applicability  when operating at Google's scale:
     it's not as fast as Java or C++,  threading sucks, memory usage is higher, etc.
One of the design constraints we face when designing any new system is,
"
  what happens  when the load goes up by 10x or 100x?
  What happens if the whole planet thinks your new service is awesome?
"
Any technology that makes satisfying that constraint harder -- and I think Python falls into this category -- *should* be discouraged if it doesn't have a very strong case made in its favor on other merits.

You have to balance Python's strengths with its weaknesses:
    your engineers may be more productive using Python,
    but if they have to work around more platform-level performance/scaling limitations as volume increases, do you come out ahead?
    etc.

恩,显而易见,一些缺陷将限制Google在做大规模时使用Python:

    没Java或是C++那么快,糟糕的线程,高的内存占用,等等。

我们开始设计任何一个新系统时,我们需要面对的问题是:

    当负载增加了10倍或者100倍系统会怎样?

    当全世界都赞叹你的新应用令人难忘时会怎么样?

在这样有高难度的挑战面前,什么技术都很难让人满意 -- 并且,我认为Python也是属于这类 -- 如果没有什么特别的应用场景,在其他方面使其将功赎罪的话,"应该"不被鼓励使用。

你需要权衡Python的优缺点:
   
    你的工程师用Python生产力会更高。

    但是,随着压力膨胀,当你不得不去面对更多平台级别的性能/可扩展性时,你能领先(问题)一步吗?
  
    等等

--------------------------------------------------------------------

点评:

到此为止,大家可以看到,其实这两人就是在随便扯扯 -- 大意就是,Python不是万能,一切都是要权衡的  -- 与那标题党的标题基本没有什么关系 。

这简直就是废话 -- 从来没有一个 Pythoner 认为 Python 是万能的 -- Python是我们伟大的胶水 -- 倒是有很多Cpper和Javaer认为自己的神是万能的。

--------------------------------------------------------------------

接着看下面的邮件,CSDN的编辑不懂Python,没搞懂Cython是什么,把它和CPython混淆了。

CPython是python的官方解释器。

Cython是用类似Python语法,给Python写C扩展的方式。

    Cython is a language that makes writing C extensions for the Python language as easy as Python itself. Cython is based on the well-known Pyrex, but supports more cutting edge functionality and optimizations.

    Cython是一种语言,让用C给Python写扩展和写Python一样容易。Cython从广为人知的Pyrex的基础上发展起来,但有更多的转换函数和优化。


事实上,Python+Cython是一种很爽的组合方式,如同 Tom Machinski  所说

"""
Specifically, if an engineer wishes to pursue a performance-intensive
project in Python, why not tell him to use Cython (or Python with some
C extensions) rather than force him to a completely different language
like Java or C++.

An engineer who picks Python as his first choice is probably familiar
enough with the language to utilize Cython / C-extension effectively,
and would probably rather do that than use any of those completely
different languages. As a bonus, Google gets a tool that's probably
easier to maintain than your common C++ codebase.

确切地说,如果一个工程师希望在Python的项目中追求性能,为什么不告诉他如何使用Cython(或蟒蛇和一些C扩展),而不是强迫他一个完全不同的语言:如Java或C + +。
  
一个Pythoner的程序员,不难熟悉运用Cython / C扩展来追求效率。而且这样做或许会比用其他完全不同的语言更合适。

同时,Google也能得到一个比C++代码库更容易维护工具。
"""

当然,一般而言,普通代码用Cython优化没什么明显效果,用它封装一些瓶颈的函数就可以了 -- 更多时候是用来把C库变成Python的库 。

=====================================

好吧,大家就不要扯淡了。

庄子逍遥游有云:

    且夫水之积也不厚,则其负大舟也无力。
   
    覆杯水于坳堂之上,则芥为之舟;
   
    置杯焉则胶,水浅而舟大也。
   
    风之积也不厚,则其负大翼也无力。
   
    故九万里则风斯在下矣,
   
    而后乃今培风;背负青天而莫之夭阏者,而后乃今将图南。

有资格去设计这么大应用的时候再去指手画脚吧,Python写网站抗个日PV几KW还是很小case的。

Google怎么做,只是用来吹牛的聊资罢了,何况Python之父还在Google呢。

现在 -- 该干嘛干嘛去。

再批判一下CSDN,当年误导我钻研C++ Template,浪费了一年半载的光阴。

唉,我又浪费青春在口水战中了。。。
9 楼 seasar 2009-11-17 22:42
请 这位见习记者同学 注明 本文转载 至CSDN;
CSDN的新闻你们也看,我呕吐。。。。
想了解真相就去ggroup看看:
http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e
8 楼 phoenixup 2009-11-17 09:07
哇靠,青天霹雳啊。。。。。Python被Google公开批评。。。。。。
7 楼 seasar 2009-11-16 22:10
Guido现在在不在google>?
6 楼 seasar 2009-11-16 22:09
无语了。。。
5 楼 flysheet 2009-11-16 19:47
oh my god
4 楼 maddogfyg 2009-11-16 16:46
以后要看go了
3 楼 Hooopo 2009-11-16 13:39
引用
K:CPython为什么考虑的是人们在业余时间的维护?

Collin Winter:CPython开发人员很少是有报酬的,几乎全部是志愿者,而Ruby开发者却能够从EngineYard等赞助商那里获得基金,因而当他们意识到MRI伺服web应用很慢时,他们可以更好地开发他们的VM。这也决定了我们开发的东西更加照顾大多数人的需求。
1 楼 jythoner 2009-11-16 12:49
如果我是Guido,我一定要抗议!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • python优点是代码库支持、灵活_Google将限制Python语言的应用 开发社区热议

    10 楼 seasar 2009-11-17 22:43本来做一个..."不过鉴于Gtalk跳出很多朋友 -- 写PHP的和写Java的 -- 很高兴的告诉我伟大的CSDN上出现了一条新闻:[独家]Google将限制Python语言的应用 开发社区热议 http://news.csdn.n...

  • Google将限制Python语言的应用

    [独家]Google将限制Python语言的应用 开发社区热议 2009-11-16 08:44 | 22823次阅读 | 来源:csdn.net 【已有115条评论】发表评论 关键词:cpython,python,unladen,swallow | 作者: | 收藏这篇...

  • 关于"Google限制Python"事件我的看法

    本来做一个勤勤恳恳的..."不过鉴于Gtalk跳出很多朋友 -- 写PHP的和写Java的 -- 很高兴的告诉我伟大的CSDN上出现了一条新闻:[独家]Google将限制Python语言的应用 开发社区热议 http://news.csdn.net/a/20091116/214803

  • Mojo:比 Python 快 35000 倍的编程语言诞生!

    转自:机器之心它可与 Python 无缝衔接,但克服了很多 Python 的缺点。Jeremy Howard 试用后表示:「Mojo 可能是几十年来最大的编程进步。」对于全球各地开发者来说,Chris Lattner 这个名字绝对不陌生。他曾是许多...

  • Mojo:比 Python 快35000倍的AI编程语言!完全兼容

    来源丨机器之心它可与 Python 无缝衔接,但克服了很多 Python 的缺点。Jeremy Howard 试用后表示:「Mojo 可能是几十年来最大的编程进步。」对于全球各地开发者来说,Chris Lattner 这个名字绝对不陌生。他曾是许多...

  • Go在谷歌:以软件工程为目的的语言设计

    1. 摘要 (本文是根据Rob Pike于2012年10月25日在Tucson, Arizona... 针对我们在Google公司内开发软件基础设施时遇到的一些问题,我们于2007年末构思出Go编程语言。当今的计算领域同创建如今所使用的编程语言

  • 2017年排名前50位的开发人员工具

    好吧,无论如何,这是我们一直在等待的那个。 这是第四届年度... 这是您开发人员工具的一站式资源,总结了2017年最热门的内容以及2018年值得关注的内容。我们分析了数千个数据点,以为您提供这些排名。 文...

  • 小米 OV 联合起来才不是为了对抗 Google!

    【End】 为了助力对抗疫情,减少线下人员流动和聚集,CSDN与 PyCon 官方授权的 PyCon中国社区合作,将于2月15日举行「Python开发者日」在线系列峰会。通过精彩的技术干货内容、有趣多元化的在线互动活动等,让您...

  • 编程语言这一年

    最近开源中国(OSCHINA)在庆祝 11 周年生日,编辑部借着这个机会梳理了一下这一年来我们追过的那些开源界/开发界的热点新闻,算作一个阶段性小结。(其实只有 9 个月...

  • 兼容Python,且快35000倍!LLVM&Swift之父宣布全新编程语言Mojo:编程被颠覆了

    它可与 Python 无缝衔接,但克服了很多 Python 的缺点。Jeremy Howard 试用后表示:「对于全球各地开发者来说,Chris Lattner 这个名字绝对不陌生。他曾是许多大型技术项目的领导者,包括 LLVM 编译器基础结构项目、...

  • python培训微软

    NSA的培训文档简要介绍了Python语法,着重介绍了一些实用的模块,以及该语言适用的领域,比如自动化任务、创建Web应用或进行高级数学研究等,并且有一些实操项目,与其它Python教程大同小异。 “如果你还不懂任何...

  • 开发必备快捷工具

    程序员开发需要具备良好的信息检索能力,为了备忘(收藏夹真是满了),将开发过程中常用的网站进行整理(不断更新中~)。 1、搜索引擎 1.1、秘迹搜索 一款无敌有良心、无敌安全的搜索引擎,不会收集私人信息,...

  • 编译器大佬Chris Lattner全新编程语言「Mojo」:兼容Python核心功能,提速35000倍

    ”‍它可与 Python 无缝衔接,但克服了很多 Python 的缺点。Jeremy Howard 试用后表示:「Mojo 可能是几十年来最大的编程进步。」对于全球各地开发者来说,Chris Lattner 这个名字绝对不陌生。他曾是许多大型技术...

  • 比Python快35000倍的编程语言来了

    它可与 Python 无缝衔接,但克服了很多 Python 的缺点。Jeremy Howard 试用后表示:「Mojo 可能是几十年来最大的编程进步。」对于全球各地开发者来说,Chris Lattner 这个名字绝对不陌生。他曾是许多大型技术项目的...

  • Web 2.0——泡沫下的啤酒——SOA的润滑油

    然而不出三年,互联网经济就在Google、Flickr、MySpace、Diggs、Youtube等新秀的带领下迅速恢复元气,梅开二度。这种现象在人类的经济活动史上是非常罕见的,“何兴之暴也”,人们需要一个解释,于是O’Reilly Media...

  • vs2017 开发工具颜色_2017年排名前50位的开发人员工具

    vs2017 开发工具颜色 https://stackshare.io/posts/top-developer-tools-2017 最初发布于StackShare 这是您一直在等待的时刻! 好吧,无论如何,这是我们一直在等待的那个。 这是第四届年度StackShare大奖! ...

  • 基于springboot大学生就业信息管理系统源码数据库文档.zip

    基于springboot大学生就业信息管理系统源码数据库文档.zip

  • 基于java的驾校收支管理可视化平台的开题报告.docx

    基于java的驾校收支管理可视化平台的开题报告

  • 原木5秒数据20241120.7z

    时间序列 原木 间隔5秒钟 20241120

  • 毕业设计&课设_基于 Vue 的电影在线预订与管理系统:后台 Java(SSM)代码,为毕业设计项目.zip

    毕业设计&课设_基于 Vue 的电影在线预订与管理系统:后台 Java(SSM)代码,为毕业设计项目.zip

Global site tag (gtag.js) - Google Analytics