Java 和 python java 比较有哪些区别?

请问高手,关于python跟java的区别
[问题点数:20分,结帖人king_2007]
请问高手,关于python跟java的区别
[问题点数:20分,结帖人king_2007]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2008年12月 Linux/Unix社区大版内专家分月排行榜第二
2009年3月 Linux/Unix社区大版内专家分月排行榜第三
2012年1月 其他开发语言大版内专家分月排行榜第二2011年5月 其他开发语言大版内专家分月排行榜第二2010年12月 其他开发语言大版内专家分月排行榜第二2009年2月 其他开发语言大版内专家分月排行榜第二2008年9月 其他开发语言大版内专家分月排行榜第二2008年8月 其他开发语言大版内专家分月排行榜第二2008年5月 其他开发语言大版内专家分月排行榜第二2007年11月 其他开发语言大版内专家分月排行榜第二
2011年4月 其他开发语言大版内专家分月排行榜第三2011年1月 其他开发语言大版内专家分月排行榜第三2009年6月 其他开发语言大版内专家分月排行榜第三2009年4月 其他开发语言大版内专家分月排行榜第三2009年1月 其他开发语言大版内专家分月排行榜第三2008年11月 其他开发语言大版内专家分月排行榜第三2008年7月 其他开发语言大版内专家分月排行榜第三2008年6月 其他开发语言大版内专家分月排行榜第三2006年9月 其他开发语言大版内专家分月排行榜第三
2012年1月 其他开发语言大版内专家分月排行榜第二2011年5月 其他开发语言大版内专家分月排行榜第二2010年12月 其他开发语言大版内专家分月排行榜第二2009年2月 其他开发语言大版内专家分月排行榜第二2008年9月 其他开发语言大版内专家分月排行榜第二2008年8月 其他开发语言大版内专家分月排行榜第二2008年5月 其他开发语言大版内专家分月排行榜第二2007年11月 其他开发语言大版内专家分月排行榜第二
2011年4月 其他开发语言大版内专家分月排行榜第三2011年1月 其他开发语言大版内专家分月排行榜第三2009年6月 其他开发语言大版内专家分月排行榜第三2009年4月 其他开发语言大版内专家分月排行榜第三2009年1月 其他开发语言大版内专家分月排行榜第三2008年11月 其他开发语言大版内专家分月排行榜第三2008年7月 其他开发语言大版内专家分月排行榜第三2008年6月 其他开发语言大版内专家分月排行榜第三2006年9月 其他开发语言大版内专家分月排行榜第三
2012年1月 其他开发语言大版内专家分月排行榜第二2011年5月 其他开发语言大版内专家分月排行榜第二2010年12月 其他开发语言大版内专家分月排行榜第二2009年2月 其他开发语言大版内专家分月排行榜第二2008年9月 其他开发语言大版内专家分月排行榜第二2008年8月 其他开发语言大版内专家分月排行榜第二2008年5月 其他开发语言大版内专家分月排行榜第二2007年11月 其他开发语言大版内专家分月排行榜第二
2011年4月 其他开发语言大版内专家分月排行榜第三2011年1月 其他开发语言大版内专家分月排行榜第三2009年6月 其他开发语言大版内专家分月排行榜第三2009年4月 其他开发语言大版内专家分月排行榜第三2009年1月 其他开发语言大版内专家分月排行榜第三2008年11月 其他开发语言大版内专家分月排行榜第三2008年7月 其他开发语言大版内专家分月排行榜第三2008年6月 其他开发语言大版内专家分月排行榜第三2006年9月 其他开发语言大版内专家分月排行榜第三
2008年12月 Linux/Unix社区大版内专家分月排行榜第二
2009年3月 Linux/Unix社区大版内专家分月排行榜第三
2008年12月 Linux/Unix社区大版内专家分月排行榜第二
2009年3月 Linux/Unix社区大版内专家分月排行榜第三
2012年1月 其他开发语言大版内专家分月排行榜第二2011年5月 其他开发语言大版内专家分月排行榜第二2010年12月 其他开发语言大版内专家分月排行榜第二2009年2月 其他开发语言大版内专家分月排行榜第二2008年9月 其他开发语言大版内专家分月排行榜第二2008年8月 其他开发语言大版内专家分月排行榜第二2008年5月 其他开发语言大版内专家分月排行榜第二2007年11月 其他开发语言大版内专家分月排行榜第二
2011年4月 其他开发语言大版内专家分月排行榜第三2011年1月 其他开发语言大版内专家分月排行榜第三2009年6月 其他开发语言大版内专家分月排行榜第三2009年4月 其他开发语言大版内专家分月排行榜第三2009年1月 其他开发语言大版内专家分月排行榜第三2008年11月 其他开发语言大版内专家分月排行榜第三2008年7月 其他开发语言大版内专家分月排行榜第三2008年6月 其他开发语言大版内专家分月排行榜第三2006年9月 其他开发语言大版内专家分月排行榜第三
2008年12月 Linux/Unix社区大版内专家分月排行榜第二
2009年3月 Linux/Unix社区大版内专家分月排行榜第三
2012年1月 其他开发语言大版内专家分月排行榜第二2011年5月 其他开发语言大版内专家分月排行榜第二2010年12月 其他开发语言大版内专家分月排行榜第二2009年2月 其他开发语言大版内专家分月排行榜第二2008年9月 其他开发语言大版内专家分月排行榜第二2008年8月 其他开发语言大版内专家分月排行榜第二2008年5月 其他开发语言大版内专家分月排行榜第二2007年11月 其他开发语言大版内专家分月排行榜第二
2011年4月 其他开发语言大版内专家分月排行榜第三2011年1月 其他开发语言大版内专家分月排行榜第三2009年6月 其他开发语言大版内专家分月排行榜第三2009年4月 其他开发语言大版内专家分月排行榜第三2009年1月 其他开发语言大版内专家分月排行榜第三2008年11月 其他开发语言大版内专家分月排行榜第三2008年7月 其他开发语言大版内专家分月排行榜第三2008年6月 其他开发语言大版内专家分月排行榜第三2006年9月 其他开发语言大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。您的举报已经提交成功,我们将尽快处理,谢谢!
python是一种脚本语言,和java没啥可比性啊。
大家还关注
程序的功能是 import java.i...
(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'966,690 六月 独立访问用户
语言 & 开发
架构 & 设计
文化 & 方法
您目前处于:
Nuxeo公司探秘:从Python迁移到Java
Nuxeo公司探秘:从Python迁移到Java
Charles Humble
注意:,500+CTO技聚重新定义技术领导力!
相关厂商内容
相关赞助商
QCon全球软件开发大会上海站,日-22日,上海宝华万豪酒店,!
产品大量使用了Java EE的标准,包括:
数据存储抽象层使用、和
事务管理使用 (XA),连接池则使用JCA技术(若未提供应用服务器,则使用)
Web引擎和REST API使用
UI层使用(与和配合使用)
Barroca告诉我们:&这些标准实施良好,虽然组件并非标准,但功能却更加强大,几乎能解决所有问题&。&Lucene、Hibernate、Eclipse以及许多不很知名的组件,使得应用系统的构建变得轻而易举。我们认为Python能很好地运用于许多应用场景,但对于我们的目标市场而言,它并不是合适的技术平台。
Nuxeo产品总共使用了大约100个库。除了Barroca在前面提到的外,关键的库还包括:以作为工作流引擎、和的内嵌控件和社交特性(),以及提供的CMIS(内容管理互操作服务)。
系统的构建基于和,并以作为单元测试框架。目前,产品支持、和,而且平台的大部分内容也能够运行于纯粹的OSGi之上。要增添一个新的支持Nuxeo运行的应用服务器还是比较快的,几天就能完成相应的工作。
Java库所具有的深度和广度是转换到Java平台的一个主要动力,但Barroca还提到了其他原因。
市场:Java应用系统的市场非常庞大。所有的公司都知道Java技术,大多数公司也在使用Java应用系统。很多公司在IT系统中使用了Java技术。所有的系统集成商都具有广博的Java知识。
社区: 同样庞大。例如,Java Apache社区就非常了得。每年都有一些关于Java技术的大型会议(JavaOne、ApacheCon、Devoxx、Jazoon等等),以及成百上千的小型会议。
技术规范:在Java世界中,很多技术都有基于已发表的技术规范的实现与参考实现。这有助于规范的清晰化,代码的互操作性,同时也推动了规范的实现者去做到极致。
我们还受益于许多高水平的工具。这些工具包括虚拟机、调试工具、集成开发环境以及监控和性能定基等。
Barroca谈到了重新构建的平台架构与开源开发模型在ECM领域开辟了新的市场,使得Nuxeo占据了有利的位置。
新型的独立软件提供商(ISV)正在使用ECM 平台,将业务知识打包到软件中,以创建和销售这些内容应用。从建筑项目管理和生物科技与生命科学的临床试验管理,到州和地方政府控制指挥中心所使用的软件,这些应用跨越了不同行业和职能部门。
我们平台的灵活性和融合了开源技术的软件特性为开发内容应用的架构师和开发者提供了便利。这种开发模式使得新的构建内容应用方式变得简单,清晰,快速。
开源ECM也带动了内容管理市场发展出新的需求。之前,企业之所以没有部署ECM,是因为高昂的前期费用,或者缺乏对所构建和定制的应用系统的控制。现在,这些问题有了新的解决方案。
一个备选方案是在JVM上运行编写的程序,因为Jython是用Java编写,以JVM作为目标运行平台的Python实现。但Nuxeo没有采用这个方案。
我们不惜时间,希望能够实实在在地利用在ECM解决方案积累的六年经验,按照我们的想法去从头构建一个完整的平台。这不仅是编程语言的转换,也是平台的转换。我们要创建一个完整的ECM平台,由开发者所设计,为开发者而设计,那些ECM厂商还停留在口头上的想法,我们却在技术上将他们变成了现实。在这个行当里,很多商业软件厂商的扩张策略是通过并购来构建自己的软件产品线。但他们只有一套软件,却没有一个技术平台。在过去的四年里,我们已经可以构建完整的技术平台,并通过它来创建内容应用。
考虑到Nuxeo系统的项目被重新设计和重写了,我们该如何比较两个系统之间的差异。
在性能方面,取决于你的度量值,新的系统在规模上至少提升了10到100倍。功能特性的数量增加了大约4倍。在开发者的兼容性和易用性方面,不仅保持了先前的优点,还提供了更多的工具和体验。新平台的整体表现比旧平台翻了一番,但离翻两番的提升还有些差距。
起初的转化工作花费了超过55个人年的工作&&而Barroca之前粗略的估计是10-20个人年的开发代价。
如果算上其他贡献者和持续的开发,我们花费了150&&200个人年。但是我不是很喜欢用人年来衡量软件开发,因为对于开发者而言,都没有谁有固定的人年值,更何况公司呢。我们有一个非常资深的开发团队。
那么,Nuxeo的老用户对于这个改变的反应如何呢?Barroa告诉我们:
从安装数量上看,约80%的客户可以接受这个改变。对于那些不愿采用新平台的机构,可由社区的力量来保证对旧平台的继续支持。这就是开源开发模式的迷人之处。一种技术能够存活依赖于用户和开发者群,我们把这看作一种&有未来&的优势。
既然Nuxeo同时使用了Python和Java,因此有必要谈谈这两种语言的优点。通常的主张是动态语言有着更快的编码速度,因为他们天生具有更强的表现力。静态语言则可以在测试阶段节省更多的时间,因为缺乏类型信息使得用动态语言编写的代码更难测试,而且动态语言也比静态语言运行速度慢,扩展时所需代价更大。Barroca告诉我们:
在研发Nuxeo的实践中,我们同时使用了动态类型语言和静态类型语言(Python和Java)来编写大规模的应用系统,其中有成千上万个类,数以百万计的代码行规模,我们可以肯定地说静态类型语言更适合编写此类应用系统。
使用静态类型语言编程,我们可以对编写的代码进行有效的静态分析,这会带来如下的好处:
集成开发环境可以提供正确的代码自动补全
集成开发环境可以知道所有类中所有方法和字段的用法,便于搜索和重构
更多的编译时检查
发现代码中存在的模式和缺陷的工具
根据代码使用的实际类型生成文档的工具
在绝大多数的情况下,动态类型语言的方法总是接受同一种类型的参数,所以除了少输入一下参数的类型外,动态语言不会带来任何好处。但静态类型语言使用显式类型,这不但没有任何阻碍,并且它本身也是好的文档。
另一种情形是,当需要真正的多态时,现代的静态语言提供了泛型,以此获得一部分(并非全部)动态类型语言的优势。
有些时候,例如Python、Javascript、Ruby和其他动态类型语言,体现出来的另一种优势是,可以在运行时修补一个对象实例,给它添加行为(在Python领域,这常被称作Monkey Patching)。这好像不错,但它对理解代码,代码静态分析,调试等来说就太糟了。它可能在修修补补时很方便,但从长期来看,并不是个好办法。
最后,动态类型语言也提供了反射工具来找出一个未知类型对象的属性和方法,但是Java从Java 5开始早就有这些特性了,所以动态类型语言在这方面也没有什么优势。
Barroca希望深入探索最近在Java EE 6和Java SE 7中发布或者即将要发布的技术。这些技术包括:模块系统、JSF 2、Bean验证、媒体组件和新的NIO库。他仍然相信Java对他们的产品而言是最好的技术。
我们也为我们所创造的技术而感到自豪,从运行时到我们在高层(包括UI)所创建的模块。它并没有被公开,因为我们完全将其看作是ECM的一部分。但平台中仍有一些好东西有助于改善Java应用程序。扩展系统、基于Seam/JSF的模块化UI、分布式汇编引擎和许多组件都是我们在创建模块化Java应用系统时,频繁用到的重要技术。在定制基于Nuxeo的应用系统时,不需要分离出UI来单独定制,你可以通过插件来完成。这是一个非常开放和可扩展的模型。
查看英文原文:
感谢、对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至。也欢迎大家加入到中与我们的编辑和其他读者朋友交流。
Author Contacted
告诉我们您的想法
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
至少得了解底层工作原理
geng gavin
有人辞官归故里,有人连夜赶科场。
能更详细些说说为什么要费那么大的劲迁吗?
为什么要从Python迁移到Java,个人觉得Python也是壹门非常优秀的开发语言
Re: 能更详细些说说为什么要费那么大的劲迁吗?
太简略了,看完等于没看... 没有具体的架构变化和比较的细节
Fang Yonka
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
赞助商链接
InfoQ每周精要
通过个性化定制的新闻邮件、RSS Feeds和InfoQ业界邮件通知,保持您对感兴趣的社区内容的时刻关注。
架构 & 设计
文化 & 方法
<及所有内容,版权所有 &#169;
C4Media Inc.
服务器由 提供, 我们最信赖的ISP伙伴。
北京创新网媒广告有限公司
京ICP备号-7
注意:如果要修改您的邮箱,我们将会发送确认邮件到您原来的邮箱。
使用现有的公司名称
修改公司名称为:
公司性质:
使用现有的公司性质
修改公司性质为:
使用现有的公司规模
修改公司规模为:
使用现在的国家
使用现在的省份
Subscribe to our newsletter?
Subscribe to our industry email notices?学了Java,学了python,学了C++发现原来。。。
[问题点数:40分,结帖人smzbase]
学了Java,学了python,学了C++发现原来。。。
[问题点数:40分,结帖人smzbase]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年10月 Java大版内专家分月排行榜第二2013年3月 Java大版内专家分月排行榜第二2013年2月 Java大版内专家分月排行榜第二
2013年7月 Java大版内专家分月排行榜第三2013年5月 Java大版内专家分月排行榜第三2013年4月 Java大版内专家分月排行榜第三
2013年12月 Java大版内专家分月排行榜第二
2013年8月 Java大版内专家分月排行榜第三
2012年2月 Web 开发大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;
欢迎您订阅我们的技术周刊
我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,
欢迎分享您的观点,经验,技巧,心得
让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;
本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(
订阅邮件周刊
Python不可维护?终于把一个8万行的Python程序用Java重写了
注意 转载须保留原文链接,译文链接,作者译者等信息。&&
水木社区上出现了一个贴子:
争论主题: Python写大型系统是否缺乏可维护性。
正方: Python真可怕,非常容易被滥用,不适合写X万行以上的代码。
反方: 用不好就说语言不好,而且Java省代码也不符合常识,这其实是一个工程问题,如果再用Python重写的话会比Java写出事的要精简的多得多得多。
在噩梦般地维护了一年多一个8万多行的Python程序之后,终于争取到机会把这个破烂玩
意用Java重写了一遍,大概是4万行Java左右。说说效果吧:
1. 从过去平均每周down一次,到现在连续运转近半年只down过一次。
2. 节省超过80%的cpu和内存
3. 代码多了很多功能,过去无数因为系统太复杂无法实现的功能现在都能简单清爽地实现
4. 单元测试真管用了,不是过去那种把代码反过来写一遍的滥用mock了
前后代码都是同一个team写的,写代码的人都不是菜鸟(顶级公司的核心团队)区别只有
语言和几年的经验积累。 总结一句话就是:动态语言滥用起来真是可怕 &
珍惜生命,远离Python。
发信人: javaboy (喝了咖啡就话多-_-;), 信区: Python
这个论据和结论的逻辑,给你再好的编程语言你都用不好啊。。。
By Ricepig
引 用:&任何流程,任何规范,任何review,任何代码检查工具,都阻止不了程序员缓慢地一点一点地滥用语言特性,也阻止不了一个软件代码自身的腐败。 Python本身鼓励滥用Mock因为没有不用mock就可以方便写unit test的测试工具。Python还鼓励不定义清晰的类接口和类关系,如果你写了一个接口继承,就会有Python大牛跳出来说你不Pythonic。系 统复杂性在大型软件中是不可避免的,但是如果我们可以付出一些写code的时候的小小冗余,带来长期的代码可维护性改善,那就是值得的。Java不是完美 的,用Java一样可以写出不可维护的代码,但是Java至少比Python在这方面强很多。我们的经验证实了这点,信与不信就是看官的事了。&
发信人: daluobu (阿土仔), 信区: Python
刚开始写的时候以为就是随便hack一个小系统临时用用,结果慢慢发展到成为关键系统,
负载巨大,而且还对宕机越来越敏感,导致不得不用Java重写。重写也不是那么简单的过
程,半年多时间里面一个模块一个模块地替换,整个系统还不能停转一分钟,像是给一架
飞行中的飞机换引擎。 && 同样的故事在别的公司肯定也发生过好多次,写一个小东西玩玩结果变成了关键系统。我
觉得我们团队的问题是几年前过分迷信Python,错过了在系统还不太复杂的时候重写的机
发信人: FlyingBoy (revising hgext.inotify), 信区: Python
80k的python代码只实现了40K的java代码的功能?
这python代码烂的可以
发信人: flw (帅五进九), 信区: Python
这根本不是语言的问题。
而是软件工程的问题。 && 你能够用 Java 重写一遍,为什么就不能用 Python 重写一遍?
性能问题姑且罢了,宕机问题重写肯定能搞定嘛!
重写之后 8 万行变 4 万行也不是不可能嘛。 && 所以实际上归根结底就在于你们用 Python 的时候,
你们潜意识里面是只注重功能,不注重设计的。
而你们用 Java 实现的时候,一定是经过了全盘的深思熟虑,
站在了前人的肩膀上。 && 所以,你总不能说只有最后一个包子才吃得饱吧?
发信人: dyspnea (呼吸困难), 信区: Python
java 省代码?不符合常识啊
难道是后来找到了合适的java库
而python全是自己造轮子?
发信人: hgoldfish (老鱼), 信区: Python
80k的Python代码功能不如40k的Java代码。效率不说,这Python代码有复用吗?我自己平时也经常写Python和Java代码。有些功 能需要同样在Python和Java下面各实现一次。我自己的感觉是Python代码量明显少于Java代码。而且,代码量的减少不止来源于`[], {}`这些语法糖,还有很大一部分来源于Python鸭子类型,使得整个系统设计起来更简洁灵活。
对了,40k的Java代码,论表达能力,你还得再扣去一堆堆的getter/setter。能剩下30K就不错了。如果是真的,这次重构应该说相当成功了。
发信人: bsxfun (色即是空), 信区: Python
我个人一点很粗浅的感受:Python里面想搞代码重用比Java难太多了。&
Python里面是有OO,但没有private,没有protected,虽然有下划线,但我所维护的代码基本没遵守。
另外据我所知,Python社区也有一大帮人提倡只要function,不要class吧。
一开始我还用Java里面的思路来写python代码,想封装个接口,搞个继承啥的;后来发现这样太麻烦,还不如直接copy&paste&modify来的快糙猛。
发信人: stephenjy (O_O), 信区: Python
用Java的思路来写python,当然写不好。我一个写Java的同事最近写python的代码,
写了一大堆Factory。。。
发信人: Brock (Noname), 信区: Python
其实很多时候,脚本语言一看就知道,根本就不是严肃的语言。语言的很多特性都是很
具有随意性, 作者的想法变了,可能就改了。很多东西都没有精确的定义。脚本语言当
个工具用用就算了,真用来做大项目,绝对是作死。
发信人: daluobu (阿土仔), 信区: Python
原帖说的是一个10个人团队的故事,不是他自己。信与不信其实并不太重要,我发这个
帖子也是纪念一下这个美梦成真的项目。如果有人有共鸣,那就已经很好了。 && 过去公司里面也是有不少迷信Python的人,重写系统的想法我在组里提了很多次,终于
在一个Python大粉丝离开之后才得以实现。现在随着某Python之父的离开,公司里面
粉Python的人也越来越少了。而且事实证明,那个Python之父带的项目(不是我们这
个,比我们这个规模要大一些),用Java重写之后,不论功能还是性能还是新功能,也
都明显好了很多,和我们组的经验相当吻合。 && 我觉得代码行数的节省也在于新系统更严谨的设计。Java鼓励精密的接口设计和简洁的
代码关系,再加上Dependency Injection,代码的复用程度很高。Python完全没有接
口的概念,一切类都是胡乱写,还可以动态增加新成员,导致代码复用的难度相当大,
不修改地复用一个类还不引入bug简直是奇迹。
发信人: adamhj (淘气阿丹), 信区: Python
python只是没有对这些行为进行限制,但是滥用这些特性本身就是程序员的过错而不是一种语言的问题;说到底你这python代码各种问题的原因还是因 为&一开始只是随便写的临时用的小项目&,一开始就缺乏严谨的设计,之后又为了在这系统上添加功能估计也是各种奇技淫巧无所不用,最后自然是个没法维护的 东西。python不是不能设计,python不是不能严谨,python只是不做过多限制,该怎么设计、怎么限制应该是开发者自己决定的事情;即使是个 大牛,不能适当约束自己的想象力和创造力,我认为仍然是经验不足的一种表现 && 当然python和java比也的确有很多不足,比如性能方面,比如缺乏严格的接口设计;但是我觉得你们这个例子里面,成败的差别并不完全是语言造成的&
发信人: Alassius (饿了索食), 信区: Python
不一定是菜鸟,更有可能的是自以为很聪明的老鸟。看到特性觉得好就非要用。实现怎么复杂怎么来。随便一行里二十个运算符,一个函数五百行,十几二十几层缩进。差不多的代码都是复制过去然后稍微改上那么一点点。刚毕业的学生还真未必能搞定二十层缩进。 && Java是件束缚服,对这种病多少能治点。Java的智慧之处在于语言的严谨性不是为了让写好程序更容易,而是为了让写烂程序更难。Python正好反过 来,可以很容易地写好程序,但是对胡搞没有限制。遇上胡搞的人确实会很惨。谷歌这种地方能招来很聪明的人,而&聪明&正是KISS的天敌。如果没有语言来 做束缚服,码农又不懂得该如何约束自己,那就只能靠项目管理和代码审查。顶级公司核心团队做不好这些,&写一个小东西玩玩结果变成了关键系统&,这正是核 心团队对自己能力过分自负的表现,觉得自己是顶级就可以忽略软件工程。这是教科书式的聪明反被聪明误。&
标&&题: Re: 终于把一个8万行的Python程序用Java重写了
google再怎么废也不至于招菜鸟进去。 && 就这个事情而言,基本就是这个路子:
某天某人一拍脑袋觉得做个某工具很有帮助,于是上python,10分钟三下五除二搞定
了。然后大家都觉得不错,慢慢的用的人越来越多,这个工具的feature也越加越多,
然后又作为beta产品发布了。
作为产品,基本的测试还是得有的,所以胡乱加了点单元测试,又胡乱补了点文档。 && 上线之后,因为用户量的增长,新增feature的速度也加快了。随着feature的增多,
原有的拍脑袋设计压根就不work了,但因为是线上系统又不方便大动干戈,但新
feature还要加,咋办?于是利用动态语言的灵活性,各种各样的hack手段就出来了,
就这么不断凑合下去。慢慢的人去人留,懂得整个系统到底如何work的人越来越少,增
加新feature也越来越难,系统也越来越变得不稳定,最终某天爆发了,大家都不堪忍
受了,来一轮重构。这个时候选择啥语言基本就是一个政治问题,而不再是一个技术问
题了。 && 但是,回过头来想想,如果没有当初某人一拍脑袋,然后10分钟写好一个tools,哪里
有后面的今天呢?而这样的拍脑袋行为在整个公司都在时刻发生着。如果对每一个拍脑
袋行为都以严格的要求,任何一个小tools都要按照成为未来成为关键业务系统的假设
而进行设计,那这个事情做起来还真不是一般的低效。 && 就束缚方面而言,个人不喜欢被束缚,但自由并不等于不能被管理。
从软件工程角度出发,管理的方法多得是。最简单的方法,给git加个hook,不通过
pylint的,不通过unittest的,不通过某某rules的直接不给push。这样不就结了。
发信人: lvsoft (Lv(The Last Guardian)), 信区: Python
回到我之前的例子,我用一周时间搞定的demo,能在30万日志量下,实现最多0.1秒延迟
的web端监控,数据过滤,数据聚合。但数据量如果上到100万,延迟就达到秒级,如果
上1KW,延迟就要几十秒。 && 然后我现在用8周时间重构的系统,在1亿条规模下依然能达到0.1秒的延迟。 && 换句话说,经过重构,系统的效率提升了1000倍有木有?可惜我第二次重构的时候依然
用了Python,而没选择Java语言,不然又是用事实验证了Python性能很差有木有!
发信人: justicezyx (又跑路在即), 信区: Python
python这个东西本身的语言特性跟大型项目开发不匹配:
1. 缺乏封装和抽象的基本语言要素;动态特性及各种特性都鼓励程序员快速完成功能而不是尽兴必要的设计和思考
2. 程序运行效率极其低下,如今动态语言没有jit,用gil这种违反常识的设计的屈指可数吧
3. python看上去极其高明的duck typing其实是testing的噩梦。。。
4. python社区长期缺乏对大型软件开发的工程积累;你把python写得跟java一样:高重用、可测试;返回头有人会笑你一点都不pythonic。。。
原文地址:
&热门文章 - 分享最多
&相关阅读 - 技术前沿
&欢迎订阅 - 技术周刊
我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;
我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

我要回帖

更多关于 python和java哪个好 的文章

 

随机推荐