阅读更多
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大奖! ...

  • 基于FPGA的四相八拍步进电机控制系统设计:集成交付、正反转、加速减速及调速功能

    内容概要:本文详细介绍了基于FPGA的四相八拍步进电机控制系统的开发过程。主要内容包括:1. 使用VHDL和Verilog编写LED显示屏驱动代码,用于显示角度、学号和姓名等信息;2. 实现步进电机的正反转控制,通过状态机管理相序变化;3. 开发加速减速控制模块,确保电机启动和停止时的平稳性;4. 设计调速功能,通过调节脉冲频率实现速度控制。此外,文中还讨论了调试过程中遇到的问题及其解决方案。 适合人群:对FPGA开发和步进电机控制感兴趣的电子工程师、嵌入式系统开发者以及相关专业的学生。 使用场景及目标:适用于需要高精度运动控制的应用场合,如工业自动化、机器人技术和精密仪器等领域。目标是帮助读者掌握FPGA控制步进电机的基本原理和技术细节。 其他说明:文中提供了详细的代码片段和调试经验分享,有助于读者更好地理解和应用所学知识。同时,作者还提到了一些实用技巧,如通过PWM调节实现多级变速,以及如何避免步进电机的共振问题。

  • Android开发:基于SQLite的日历备忘录记事本项目详解与实现

    内容概要:本文详细介绍了基于Android Studio开发的日历备忘录记事本项目,涵盖日历查看、添加备忘录、闹钟提醒和删除备忘录等功能。项目使用SQLite数据库进行数据存储,通过CalendarView、EditText、Button等控件实现用户交互,并利用AlarmManager和PendingIntent实现闹钟提醒功能。此外,项目还包括数据库的设计与管理,如创建DatabaseHelper类来管理数据库操作,确保数据的安全性和完整性。文章还探讨了一些常见的开发技巧和注意事项,如时间戳的使用、手势监听的实现等。 适用人群:适用于初学者和有一定经验的Android开发者,尤其是希望深入了解Android开发基础知识和技术细节的人群。 使用场景及目标:该项目旨在帮助开发者掌握Android开发的基本技能,包括UI设计、数据库操作、闹钟提醒机制等。通过实际项目练习,开发者能够更好地理解和应用这些技术,提升自己的开发能力。 其他说明:文中提到一些进阶任务,如用Room替换SQLite、增加分类标签、实现云端同步等,鼓励开发者进一步扩展和优化项目。同时,项目源码公开,便于学习和参考。

  • Matlab实现基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档详细介绍了一个基于SVM(支持向量机)和Adaboost集成学习的时间序列预测项目。该项目旨在通过结合这两种强大算法,提升时间序列预测的准确性和稳定性。文档涵盖了项目的背景、目标、挑战及其解决方案,重点介绍了模型架构、数据预处理、特征选择、SVM训练、Adaboost集成、预测与误差修正等环节。此外,文档还探讨了模型在金融市场、气象、能源需求、交通流量和医疗健康等多个领域的应用潜力,并提出了未来改进的方向,如引入深度学习、多任务学习、联邦学习等先进技术。 适合人群:具备一定机器学习基础的研究人员和工程师,特别是那些从事时间序列预测工作的专业人士。 使用场景及目标:①用于金融市场、气象、能源需求、交通流量和医疗健康等领域的复杂时间序列数据预测;②通过结合SVM和Adaboost,提升预测模型的准确性和稳定性;③处理噪声数据,降低计算复杂度,提高模型的泛化能力和实时预测能力。 其他说明:文档不仅提供了详细的理论解释,还附有完整的Matlab代码示例和GUI设计指导,帮助读者理解和实践。此外,文档还讨论了模型的部署与应用,包括系统架构设计、实时数据流处理、可视化界面、GPU加速推理等方面的技术细节。

  • #游戏之追逐奶酪123

    #游戏之追逐奶酪123

Global site tag (gtag.js) - Google Analytics