﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-szhswl-文章分类-Python</title><link>http://www.blogjava.net/szhswl/category/36515.html</link><description>宋针还的个人空间</description><language>zh-cn</language><lastBuildDate>Sun, 07 Dec 2008 07:41:43 GMT</lastBuildDate><pubDate>Sun, 07 Dec 2008 07:41:43 GMT</pubDate><ttl>60</ttl><item><title>Python, Ruby 与 Groovy，谁与争锋？(转) </title><link>http://www.blogjava.net/szhswl/articles/244867.html</link><dc:creator>宋针还</dc:creator><author>宋针还</author><pubDate>Sun, 07 Dec 2008 06:40:00 GMT</pubDate><guid>http://www.blogjava.net/szhswl/articles/244867.html</guid><wfw:comment>http://www.blogjava.net/szhswl/comments/244867.html</wfw:comment><comments>http://www.blogjava.net/szhswl/articles/244867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/szhswl/comments/commentRss/244867.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/szhswl/services/trackbacks/244867.html</trackback:ping><description><![CDATA[<p>随着计算机硬件的快速发展，10年前因为速度问题而被诟病的Java现在成了计算机流言语言中的老大，但是它却仍被认为复杂笨重，近几年来动态语言却有后来赶上的趋势，掌握一门动态语言成了程序员需要考虑的事宜。 近期接触了几种流行的动态语言Python, Ruby, Groovy，它们相比静态语言Java/C++来说，大为简单，灵活，省时，那么选择何种语言？ 浅尝三种语言后，写下此文，作为在JavaEye留的第一爪。 </p>
<p>从TIOBE网站的语言排名可以看出，比较2000与2008年，Java 从30%跌到20%左右, C++从18%跌到11％， 静态语言从72%占有率降到了60%; 动态语言由27%升到40%，其中Python从1%到5%, Ruby由 &lt; 1%到2.5%。PHP由5%长到11%。(以上数据为大约估算) </p>
<p>从企业界角度看，语言的流行性与以个几点有关： </p>
<p>1)&nbsp; 成熟的库(library) <br />
&nbsp;&nbsp; Python的库非常多， Groovy可以调用强大的Java所有的库，ruby差些，但是正在赶上。 </p>
<p>2) 流行框架 <br />
&nbsp; 如果某种语言有个流行框架，那就能吸引过来很多使用者。Ruby on Rail是杀手级框架。Python 框架很多，但是目前尚没有特别突出的。Groovy还年轻，只有个Grails，但是可以利用JAVA已有的框架如SPRING HIBERNATE。 </p>
<p>3) 流行程序 <br />
&nbsp;&nbsp; 如果某个流行程序使用了某语言，那么这种语言不可必免会被多人使用。比如iPhone的出现使一种可能没多少人听说过的 Cocoa热了起来，因为人们用它编写在iPhone上运行的手机程序。这三种动态语言中Python在图象处理，或科学计算界已占有一席之地。Ruby可能落后一些，Groovy几乎没有。JavaEye </p>
<p>4) 企业界的倾向 <br />
市场通常会倾向于简单好用省时省力，易于使用维护，稳定，能承受大负荷(scalable)的语言，这也是JAVA的流行性当时超过C＋+的原因，这三个语言比静态语言都简单，其中Python由于其语法和句法简单，所以可能是最好维护，而且能够承受高负荷(Youtube每天数亿点击为证)；RUBY 有些魔幻语法也能使程序写得很简单，总体维护上比Python感觉差了一点，让其他人看程序可能不是非常直接易懂，性能上目前也差些。Groovy 模仿了大量RUBY，也借鉴了少量Python文法，由于在JVM上运行，性能上应该是不错的。 </p>
<p>5)对硬件的利用 <br />
对着双核的出现，可以预料双核，四核，16, 32..核CPU都可能在未来出现。如果未来语言只能利用多核中的一核，那未免太浪费了，也可能因此而落于人后。从这一点上看GROOVY有天然优势，能借助JVM完成这一任务；PYTHON 正在积极研制新的方法实现，也可以在JVM或WINDOW环境下运行JPython 与IronPython；Ruby落后些，但是也有JRuby和IronRuby，起步晚些。 </p>
<p><br />
从语言的各自优缺点来看： </p>
<p>Python: </p>
<p>1)三者中最成熟，通用，工具库多，资源丰富，文档等支持强大，几乎能做任何事：网络，图形界面，桌面程序，服务器，图形处理，算法等。 </p>
<p>2)相比之下性能好，运行速度快，负载力强。 </p>
<p>3)简单易学，文法简洁，其使用空白缩进代替花括号或END使代码看起来很干净，易读易懂因此易维护。 </p>
<p>4)基于尽量使用一种方法完成一件事，越简单越好的哲学。这种哲学适合大型项目，因为让其他人看着易懂，好维护，不至于过多灵活繁杂的语法使自己玩的爽了，别人看得傻了。这与RUBY的用许多种方法完成一件事的哲学正相反。GROOVY感觉在两者之间。 </p>
<p>5)得到业界承认 </p>
<p>a) 大多数Linux，或者流行Linux中绝大多数都默认安装Python，这意味着不管你是哪国人在哪里，想用哪台Linux机子，想用Python就可以用，省时顺手；要用Ruby Groovy还得安装。 <br />
b) 有巨头支持。几个例子，Google 互联网老大，公司内部中Python是官方的第三语言，有内部员工说他们是能用Python就用Python， 实在不行才用C++;&nbsp;&nbsp; Youtube 大部分是用 Python写的；著名Linux发行版Ubuntu的发行公司的官方语言，也是其创始人的首选语言；其他还有Redhat, NASA, 动画公司Pixar等；桌面程序如流行程序BT客户端等； </p>
<p>缺点： <br />
1)不是完全的面向对象，语法中混杂有函数调用方法。 <br />
2)使用空白缩进代替截止符在网页制作有点问题，这时还得需要新语言或语法，代码Copy Paste等时，使用Tab时也可能有点麻烦， <br />
3)好象目前还不支持多核CPU <br />
4)尽管创始人说Python这一名字取自一个喜剧团体，但是其名字或图标可能会使一些人反感，有些Python语言网站的的Python图片着实不令人喜欢。不喜欢这种动物的人可以考虑选其它的，比如Python的弟弟Ruby。 </p>
<p>简要：Python适合大中小型企业各类开发，几乎无所不在，无所不能，想跟紧大型企业或者需要成熟的库，Python可能较合适。 </p>
<p>－－－－－－－－－－－－－－－－－－－－－－ </p>
<p>Ruby </p>
<p>1) 语法是更纯正的面向对象语言，许多功能让从Java/C++世界过来的人耳目一新；因为它借鉴了包括Python, Smalltalk, Lisp等在内的一些其它优秀语言的优点。一切都是Object，如避免Python的类似len("name")，而采用 "name&#8221;.length, 还有提供类内部参数数据的保护等;提供的更多语法，使程序更易懂简练， 比如它有Block closure,它用' &lt; ' 来表示类继承，用?来表示返回是否的函数。 </p>
<p>2) 灵活的魔幻语法，如模块的混入，块，开放式的类定义，加上已有的动态性使其变得极其灵活；各种繁多的著名设计模式在它手中好象都失去了意义，Java做梦都想达到的灵活性在RUBY手中轻而易举，Spring AOP相比也失去了光泽，设计大师们的法则与多年经验也好象都不再适用。 </p>
<p>3) 相比Python提供了End作为程序块的截止符，这是Rubist们自认为的一大进步，也是与Python的一个重要区别。 </p>
<p>4) 杀手级框架，Ruby on Rails，及还有些其它杀手级框架正在一一跃出。 </p>
<p>5）有跑在JVM的JRuby和微软的IronRuby </p>
<p>6）名字与图标很好&nbsp;&nbsp;&nbsp; Ruby 红宝石是瞄准Perl （珍珠）的继承者而来的，名字与图标都优雅端庄赏心阅目。 </p>
<p>缺点 <br />
1)灵活可能有负面影响 <br />
开放的类在大型程序中可能会造成混乱，不易懂不易维护，类可能会不知道是谁在哪个角落改的(不过有了IDE的支持这种情况可能可以解决)；语法方法的灵活可能使代码不规范，一个人喜欢写魔幻代码的有可能使后来人看不懂，其用多种方法实现一个目的的哲学好象是在鼓励代码的多样灵活性，这在大型项目中会加大维护难度。这可能也是为何目前尚未有大型企业界使用Ruby的原因。 </p>
<p>2)性能相对不强&nbsp;&nbsp; 原有的Ruby速度慢，稳定性相对差些，据说是原有的GC写的不强。不过随着新的更好的RUBY编译器的出现与硬件的快速发展与价格降低，此性能问题应该能够在不远的未来解决。据Java Eye的Robbin讲，即使有此性能问题，扩充硬件或设置系统也多可解决问题。 </p>
<p>3)对线程支持不强，Ruby 2.0据说要加强 </p>
<p>4)好象尚未支持多核，不过未来可能解决，道理同2) </p>
<p>5)对End的意见&nbsp; 不少人认为Ruby的End过多，显得不好看。代码在写很多层时尤其如此，这样使查找相应的起始位置增加难度。有人建议其创始人Mats提供End的替代字符，他有此意，但是好象没有他看的上的，如果谁不喜欢End的，找个自认为不错的字符发给总部吧，要趁早，否则以后越来越难改。 </p>
<p>简要：Ruby是令人兴奋的，学习Ruby可以加深程序员对面向对象，及计算机语言的理解，从这一点上说，Python更只象个工具，Ruby灵活却又很有深度，值得一学。Ruby的主要缺点是其性能性，但是看Java的历史可知，当时Java的速度被评为比C++差得太远，可是几年后性能随着硬件的发展而大大加强，所以Ruby的性能应该在未来不会是大问题。 </p>
<p>看过Python 和ruby后，本应就此罢手了，但是对这两语言感觉仍有遗憾之处，于是看到了以前看Ruby时瞧不上的Groovy, 却发现这是个不可小看的语言，不仅如此，而且Groovy可能会成为未来耀眼的新星。 </p>
<p><br />
------------------------------------ <br />
Groovy </p>
<p>1）初看Groovy, 它好象是Ruby 与java的结合体，也添加了少量Python的东西。Ruby中引以为傲的一切是对象，Groovy也可以作到，如 3.times { ...},&nbsp;&nbsp; 块传递，动态改变类，增加类函数等。它借鉴了大量Ruby 的语法，但是保留了C/C++/Java程序员熟悉的花括号，没有用Ruby无所不在的"End&#8221;。而且对Ruby的一些生僻的字符进行了改进，使得更加友好易懂，如块中的 | x | 换成了 &#8594; x </p>
<p>2）被Thoughtwork(就是写重构那本书的Martin Fowler所在公司)经理称为 &#8220;Java 2.0&#8221; ，可以&#8220;无缝&#8221;结合Java 代码，你可以在Groovy文件中写Java代码，用Java库。Groovy象是个轻量级的动态版Java,而且加大扩展了许多易用的句法，以前曾想过的一些"Java 要是这么写多好啊" 竟然在Groovy中实现了： 如去掉了多余的分号，三引号使得多行的文本变量整洁好看，砍掉了没多大用的getter setter等。 </p>
<p>3 )可以使用所有Java的库，因为Groovy"就是Java&#8221;。相比Ruby爱好者在一个一个辛苦编写各种库的时候，Groovy已经是站在Java 的车头上向前冲了。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
4)支持多核CPU，未来的硬件是多核CPU的世界，谁不支持多核可能不是淘汰就落后。由于跑在JVM上，Groovy再次领先于Python和Ruby；有人说，也有Jython 和Jruby 啊，但是从与Java的结合性及调用Java代码或库来说，Groovy无疑是极佳的结合，Jruby或Jython相比下显得并不自然。 <br />
&nbsp; <br />
5)性能不错 <br />
Groovy不再是一个玩具或试用品，一个已经使用Groovy的公司其正式发布的产品中有超过十万行Groovy代码。 <br />
其性能相比Python我不清楚，但有测试说Grail性能不亚于，甚至更强于Ruby on Rails.由于Groovy跑在JVM上，性能应该不会太差。 </p>
<p>6)业界的支持 <br />
Groovy 2003年左右刚出现，还是新生儿，还谈不上大型业界的大量支持，就连Sun公司也对Ruby青眼有加，使得Groovy爱好者大抱不平，抱怨Sun偏向外人，不向自己这个Java 亲生子。目前可能只有Oracle与Thoughwork支持。 那么目前业界还未大力支持，谁可能会支持Groovy呢？私下认同这种说法，就是全世界Java与C++的几百万程序员中可能会有不少支持的。这是由于Groovy与Java，或C系列语言句法的近似及与其与Java&#8220;无缝&#8221;结合的特点相关的。流行语言的发展目前为止是在相似的基础上发展的，想想C &#8594; C++ &#8594; Java 他们的句法是不是相似？从这一点上看，Groovy最与Java类似； 试想，如果有两种语言有相近的功能，一种有你熟悉的句法，另一种却较为生僻，哪种语言更易上手？从企业界的角度来说，Java的业界(Sun, IBM Oracle等)在过去十年中已经投资了大量金钱与时间在Java上，如果一种语言能与目前的Java项目自然结合使用调用，另一种语言有全新的语法要员工学习，企业界的项目经理会选择哪个？ 即使Ruby On Rails再强大，如果使用Ruby Python意味着十年来的人力，资源，框架(Spring Hibernate)库等投资大部分作废，在Grail能带来Rails 70%的编码效率，120%的性能，并且利用已有的框架与员工的情况下，企业会选择哪个？所以个人认为Java程序员或企业界可能会以后认识到Groovy能带来的益处。 </p>
<p>7）名字起的也不错 <br />
名字是&#8220;很棒&#8220;， &#8221;极佳&#8220;， 有着很积极正面的含意 </p>
<p>缺点： </p>
<p>1）它虽然借鉴了大量Ruby的语法，但是有少部分没有完全实现，如开放的类，它只是在一定范围内对类开放修改。 </p>
<p>2）Groovy就是Java, 目前只有JVM的实现，只能跑在有JVM的机子上。做桌面程序有着Java相同的弱点，不适合做小巧的Window程序 </p>
<p>Groovy是个有前途的语言，照现在的势头发展，仅管它现在排名在39名，未来几年内闯入20名，再过些年闯入前十名或更前都不是不可能的事。 </p>
<p>三种语言各有特点，选择哪种语言与您的工作环境，项目特点或个人爱好有着关系。随着动态语言的向前发展，他们的简单灵活与强大能帮助我们节省时间与资源，学一种有潜力的语言能让程序员们站得更稳，立于领先之地，如果有天动态语言发达了，设计模式们很多都用不上了，这不是多年的经验淘汰了吗？程序员们不要忽视了他们了啊。 </p>
<p>以上内容为参看一些文章与自己初步使用的感受的一些感想，与网友们分享，有错误之处，请指正。<br />
&nbsp;<br />
转自：<br />
<a href="http://www.javaeye.com/topic/259257">http://www.javaeye.com/topic/259257</a></p>
<img src ="http://www.blogjava.net/szhswl/aggbug/244867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/szhswl/" target="_blank">宋针还</a> 2008-12-07 14:40 <a href="http://www.blogjava.net/szhswl/articles/244867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python和Ruby的对比</title><link>http://www.blogjava.net/szhswl/articles/244866.html</link><dc:creator>宋针还</dc:creator><author>宋针还</author><pubDate>Sun, 07 Dec 2008 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/szhswl/articles/244866.html</guid><wfw:comment>http://www.blogjava.net/szhswl/comments/244866.html</wfw:comment><comments>http://www.blogjava.net/szhswl/articles/244866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/szhswl/comments/commentRss/244866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/szhswl/services/trackbacks/244866.html</trackback:ping><description><![CDATA[<font size="4">《ruby和python的比较》更正一点事情<br />
<br />
1、文档、开源项目、库支持，这些东西Ruby不要跟Python比，不是几个数量级的问题，何必貌似并列的排在一起。<br />
2、Python确实没有把正则表达式模块内置到核心里面，但是却有re这个标准库的支持，当时的目的也是为了尽可能的把核心做到最小。我不太明白，使用标准库和内置有什么区别，甚至可以作为优点？且使用Python中的正则表达式也不过是多个import re和调用时的几个字母而已，省下的无数个end足以抵销这个问题了。<br />
3、至于嵌入HTML功能，Python里有C/Python双实现的Cheetah模板可用，据说托Zope的福，美国海军和法国政府在用，不知Ruby这个功能的成熟度如何？<br />
4、mod_ruby模块的出现时间很短，如果作者没有听过mod_python那就实在孤陋寡闻了。我在一年前翻译mod_python3.2.8文档的时候，mod_python已经很成熟了，以至于几乎所有的Python WEB框架都支持构建在其上来提高效率。但是，似乎mod_ruby的更新，每年也只有几次。mod_python更有gnu.org这样的重量级应用，不知mod_ruby有没有？<br />
5、另外，提到unix工具。Red hat Linux的安装程序一直是用Python写的，如果你恰巧用ubuntu，那么，那个提示你更新系统的程序，也是用Python写的。<br />
6、racc和doctools，请原谅我的孤陋寡闻，我google了一下居然除了你的这篇文章还没找到几篇关于racc的中文内容，辗转之后才查到是一种类似yacc的工具。从google的角度讲，racc的可用性我就不多说了。我不太明白一个yacc工具在日常编程当中有多大的实用性，但是既然作者提到了我就顺便找了个我只听说过名字，根本没用过的spark。google的结果是"racc ruby":"python spark"=159,000:659,000。至于doctools，我更是无话可说，在google上只有15,800条记录，我到现在都看不出这个东西是干什么用的。所以找了个估计是类似的东西对比了一下，docutils，google的记录是25,400条。<br />
7、&#8220;比Python库更完整的面向对象语法&#8221;。试问面向对象的目的是什么？再者，ruby能否像Python一样，绝大多数标准库根本不需要查文档，只要猜测一下大体上的名字，然后dir()一下，再help()一下就可以直接上手，用到第二次的时候，因为模块内东西实在太少，记忆太方便，就可以直接写出来的地步？另外，面向对象既不是什么银弹，也不是最先进的软件工程思想。<br />
8、"ruby的整个库都是类继承结构的"，个人认为是Java的糟粕，反倒是当成宝学过来了。或许这也是ruby来拯救Java程序员的一项优势吧。<br />
9、"基本数据类型和运算符都是可以重载的"，这个不是太清楚，不知Python中重载__add__之类的算不算。<br />
10、"ruby主要的功能都是通过对象的方法调用来实现的，而不是函数"，Python中所有的东西都是对象，但并不都是类，不知这句还有什么意义。另外，推荐你不要太追求什么彻底，还是实用这个词比较有吸引力。<br />
11、Python没有严格要求单继承是给程序员以灵活性。另外，关于接口，Python中只要定义了同名的函数就算是具有了相同的接口，玄学上升到了这个高度，我也有些迷糊了。至于接口，不要那么自信，ruby的所谓接口也不过是个mix-in。这个东西Python的几个大项目中也有过实现，只是因为对Python意义不明显，所以才没有更多的使用。<br />
12、关于lisp的函数式编程，Python中有很多内置支持，如map、zip、filter等等，当然还有lambda。不要说支持，我们谈实用。Pythoner中尚且有些人认为函数式编程影响了代码可读性而尽量避免呢。所以，你认为支持什么东西之前，先想好这样东西算不算是个好东西。<br />
13、"最大的不足正是因为ruby的强大所引起的"。这句真恶心，不予评论。<br />
14、呵呵，ruby居然没有国际化支持，真是个笑话，不知道当初那个小日本怎么想的？难道他英语过了四级？<br />
15、至于jython，现在也有了jruby，可能是作者的原文比较早的缘故吧。Python也有很多种实现，像是jython, ironpython, pypy, pyrex等等。Python的优秀其实并不一定要通过用其他语言来实现才能体现出来。当然更不要说寄希望于要Java来解救水深火热中的ruby了。<br />
另外么，有些ruby的缺点不要回避：<br />
16、ruby没有本地化线程，而是用的伪线程，根本无法利用多核CPU的优势。CPython使用了本地化线程，但是因为使用了GIL所以也是无法利用多核CPU优势的。但是Stackless的出现完全可以解决这个问题，并且stackless更是将Python提高到了并行计算的高度，这个高度的竞争对手可以是Erlang，ruby自然不必窥探。其中的超轻量线程技术可以确保一台很烂的机器上跑几十万的线程还很轻松。基于Twisted的异步编程方式也提供了一种选择。<br />
17、刚刚开始学Python的时候，就听说过一句&#8220;Python是主流动态语言中最慢的&#8221;，后来才知道，说那句话的人根本没把ruby放在眼里。如果把ruby也算进主流动态语言里，那么就会出现一个比Python还慢了一个多数量级的语言了。<br />
18、ruby流行么？是不是要走向PHP？PHP是个好东西，但是问题在于他只能作WEB编程，限制了PHP的应用范围，稍微需要系统一点的东西就要借助于C。而现在的ruby似乎也就是走着这条路。直到有一天，有人爆料"ruby是可以做客户端编程的"，赢得大家一片好奇。况且现在的ROR能否取代什么还是个未知数。从Java WEB开发中解救出来的人们也并不都是走向了ruby。<br />
<br />
<br />
<br />
-------------------------------------------<br />
<br />
<br />
<br />
评《选Ruby还是选Python？》<br />
<br />
这篇文章看来传播的算是比较多的，至少我看到的是转载。文中谬误颇多，在此纠正一下，当然还有少许经典语句这里也要提及。<br />
<br />
Python和Ruby的设计哲学确实有很大的差异，这个问题，我就不评论哪个更好了，各有所爱吧。至于效率，Ruby永远不要考虑跟Python相比。Ruby是伪线程，而且根本没有利用多核CPU的可能，直接pass。而Python使用native thread，仅仅由于部分模块不是threadsafe的而加入了GIL来限制应用多核CPU，而在我最近的测试中，在使用Twisted的异步线程之后，已经可以很好的利用多核CPU的计算能力了。执行效率上也不是一个数量级，自己试试就知道。<br />
<br />
拿Java对比Python，可见作者创造力之强悍，哈哈。开源项目是很符合达尔文的自然选择的，难道Ruby的开源项目少倒成了优点了？另外，在Python中我也没见除了WEB framework之外有什么项目有太多的重复。举个例子，pypcap就已经基本淘汰了pcapy了。<br />
<br />
谈到资源，Ruby还有很长的路要走，所以提到双方都很强的时候，麻烦不要太并列化了。至于Java社区的人倾向于学Ruby，我个人认为只是被Java折磨惯了的开发人员目光太狭隘所致。语言是工具，面向对象也是工具，纯粹的面向对象并不见得高明到哪里去，Python也有函数式编程的支持，作者怎么没有提到。另外，Python的很多做法是以开发效率为第一目标的而不拘泥于各类形式，甚至为很多智力有限的人所广泛诟病的C++中的多继承，Python也可以支持。问题不在于支持了什么让你不喜欢的东西，而是让尽可能多的人用上他们喜欢的东西。另外，一直被Ruby开发者所认为的Python不够OO的一个例子就是取一个序列的长度，Python使用len(x)的方法。这个问题，如果Ruby开发者认为x.length就可以算是OO的话，那么Python也大可以直接使用x.__len__()来获取长度。从用方法来封装属性的Java角度讲，谁更OO一些呢，哈哈。<br />
<br />
Ruby是一个日本人的作品，呵呵，这个就不多说了，不喜欢日本的国人有很多，在此我仅在技术层面就可以把Ruby贬低下去，无须用非技术的东西了。<br />
<br />
关于Ruby on rails，Ruby社区确实把几乎所有的精力都集中于此。但是这只能表现出Ruby的幼稚，事实已经证明了，ROR的很多模仿者已经推出无数的高级功能，远远超过了ROR，没有取代ROR只是出于先入为主的观念。如果现在的Ruby，突然失去了ROR又会是什么样子。至于作者提到的zend，居然用来跟ROR相比，有如以卵击石，我学过Python的2种WEB框架，平时也比较关注Python和Ruby的各种东西，但是zend这个东西，我是没有听说过的，不知是不是作者的作品，哈哈。如果一定要在WEB框架上有个较量的话，你可以用django,Quixote,mod_python之类的来比较一下。django，一个典型的ROR模仿品，还在成长，但是已经有很多优于ROR的功能了，而性能上远优于ROR自不必说。应用Quixote的douban.com是所有使用Python和Ruby网站中流量最大的，而且在相同硬件配置的情况下比ROR实现速度快了一倍还多，要知道去除WEB服务器等等的各种平等损耗之后，这可是要快上一个数量级的东西。至于mod_python，据说<a href="http://www.gnu.org/" target="_blank">www.gnu.org</a>用的就是这个。如果Ruby还想开源的话，那么就永远活在Python的阴影里面吧。<br />
<br />
至于上手的速度，各个人有不同的情况，不作评论。至于灵活性所带来的东西，仁者见仁，就不要评论了。作者谈到Python的入门不容易，真不知Ruby有个何等容易。我初学Python时，第11天就用Python写了一个词法解析器，至今仍然在我博客上可查。所以，入门难度这个东西，每个人还是自己去试试为好，不必听别人怎么说。<br />
<br />
提到ROR生成的目录有很多东西，要很久才可以都了解，这确实是IDE的综合症。在Python下，比较典型的例子是TurboGears，如果你希望了解整个应用程序的运行方式，你可以从核心cherrypy开始学习，然后开始使用TurboGears就没有什么可不了解的东西了。在这个角度上，ROR没有选择。再者，现在ROR可用的一种连接WEB服务器的方式scgi，当年也是Python的作品，又是一个在Python的阴影下活着的小东西。<br />
<br />
未来的发展么，孤注一掷的Ruby还很难说，但既然是孤注一掷，风险还是蛮大的。而Python么，我也以为真的会平稳的发展，但是后来Micro$oft的加入，让我们都难以预料Python的未来到底有多大了。我们再回头谈谈作者一直讨厌的Python的多样性，在我看来Ruby可以超越Python的东西屈指可数，而Python超过Ruby的东西，自然是Ruby难以逾越的鸿沟。所以从编程语言的多样性考虑，也就不建议大家学Ruby了吧，少了一种选择，聚集一些人气总是好的。</font> <br />
<br />
转自：http://www.winu.cn/viewthread.php?tid=109124
<img src ="http://www.blogjava.net/szhswl/aggbug/244866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/szhswl/" target="_blank">宋针还</a> 2008-12-07 14:36 <a href="http://www.blogjava.net/szhswl/articles/244866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>