选Ruby还是选Python?

2005.11.01  来自:CSDN

最近,我需要一种快速开发语言,目前炙手可热的快速开发语言就是PythonRuby了。RubyPython都是非常优秀的脚本语言,虽然他们的设计哲学几乎完全不同,但他们效率差不多,应用领域也差距不大,似乎天生就是竞争对手。到底选那个呢?我做了一些简单的比较。

我们比较两种语言的时候,抛开性能问题不说,一般最在意的大概就是资源和学习曲线。

总体的印象,用一个不大恰当的比喻:如果PythonJava,那么Ruby就是.net。我们知道,Java世界非常复杂,非常多样性,任何一个需求,都会有很多开源项目,他们用不同的思想来实现,性能特点迥异,到底选那个,总是令人犯难。现在Python也是如此,而由于Python开发难度远远低于Java,导致Python的相关项目比Java还要多得多。

资源上,两者社区都很强,有趣的是,现在Java社区存在被Ruby同化的危险,至少我订阅的几个Java blog聚合中谈RubyJava还多。Ruby的社区较为集中,Python则比较分散。我总怀疑Ruby的日本用户较多,但因为不懂日文,很难确认这个想法。对于一个母语非英语的创始人,我总是有点恐惧,怕很难理解他,怕很难得到最新消息等等等,虽然这个担心目前看来并无必要,不过,谁知道会怎么样呢。

Ruby之所以现在突然变得热门,和rails这套架构是分不开的。考虑Ruby,就要考虑到Ruby on railsrails提供了一套非常好的web开发框架,开发效率非常高。Python虽然有很多类似的架构实现,但并没有出现一个能够一统江湖的架构。Pythonzend虽然完整,但更偏向于web服务器,不能用来和rails比较。

Rubypyton更容易上手。从语言特征看,Ruby有很多有意思的创造,比如说block,但大规模的应用这些好玩的东西让程序变得混乱。Python语法强调简单,但是由于太灵活,简单得太过分,于是传统程序员经常会看到一些令人大吃一惊的表达方式。我不知道这应该算优点还是缺点,至少我认为语法过于灵活,容易导致不同程序员的代码风格差异过大,增加了学习成本。

初期入门,Ruby更容易,但一旦达到一定复杂度,那么Ruby的难度骤然加大。Python入门不容易,复杂的时候也不会太痛苦。rails有入门简单,深入难的问题。rails生成的目录是做什么用途?o/r mapping如何实现的?如何把数据从web中传递到数据库的。这些都是Ruby程序员早晚要面对的问题。  Python则不会这样,如果搞不清楚这些,大概根本没办法开始。集成度太高的快速开发工具都有这个特点,无论是VBDelphi,还是.net,有多少使用了半年以内的开发人员可以说清楚工程目录下面所有的文件的用途、每个文件中的语法?我相信很多很有经验的用户也未必说的清楚。

从架构上看,二者虽然实际上相差甚远,但最后表现出来的结果反而很相似。Ruby是纯粹的OO语言,而Python是函数和OO混合型。虽然Ruby也能用函数风格的编码方式,但实际上是模拟出来的。他们的这个差距对于普通的程序员影响并不大,毕竟看起来差不多。

    总体来说,如果是非专业人员初尝开发,Ruby是合适的。对于专业的程序员,我还是建议选择Python

对于未来发展,我认为Python的发展可预见,会较为平稳。Python已经属于一个社区,而非一个人,但Ruby由于种种原因,Ruby的作者maze的意志仍然会对Ruby的发展造成较大影响。Sun控制着Java,但由于sun的资源强大,且组织了jcp进行统筹,所以Java发展很不错,但Ruby能不能作到这一点,还需要时间来证明。

cloudzm

  XChilde: 个是类库设计问题,不是设计造成的,不管是to_i也好,to[int]也好,只是向消息。你完全可以自己实现一个这样转换方法。
  Perl
里的字符串到数字的自动转换才是丑陋的法。   (2005.11.23)

XChilde

  比如“obj.to[int]”把要转换成的型做一个型参数。
  
“$i=1+“2“”这样的代码实际编程中是很少用到的,一般都是是用字符串量,比如“$i=1+$a”这样就美多了。   (2005.11.23)

cloudzm

  XChilde有什obj.to_i更直的方法int(obj)?
  
丑陋的,我没见过$i = 1 + “2“更丑陋的了   (2005.11.22)

XChilde

   Ruby有些设计得很愚蠢、很丑陋。比如像“obj.to_i”这样设计然可以有更美、更直实现方法。目前Ruby UNICODE的支持差。Ruby有一些好的想法,但是和Perl言相比,无言本身是它的社区都很不成熟。另外Ruby缺乏像 Perl的丰富、成熟的类库支持。目前也没有哪家大公司明确的支持Ruby。我在要用Ruby严肃开发还为时过早。   (2005.11.22)

liuhaimiao

  这东西,大同小异,只不是工具,重要的是思想。
  
既然大同小异,干要用小日本的呢?   (2005.11.22)

jljljjl

   科技无国界。不承日本的技呢?中国和日本的矛盾来深重,但如果我排斥一切,就像迅先生所的:是昏蛋!”Ruby 并不是什新事物,也有不少年史了,而且它是源的,世界上有很多人参与,本身就淡化了其日本背景。一点心自,我能做到什程 度?我是做源的,中国人干的龌龊事我得多了。就搞什用都没用,有什么资格批  (2005.11.22)

madmanahong

  lua   (2005.11.21)

my_sunshine

  CSND最近常炒作日本鬼子的言呢?道老美的?
  
决反用日本人开发!!   (2005.11.21)

linuxdotnet

  搞不明白,老搞 日本鬼子的西干嘛啊?不用老外的,特是日本鬼子的,中国早就搞出来自己的强劲开发语音以及开发工具了,中国缺的并不是人才,看看 原子 不到,中国就搞出来了,反正能到的咚咚,中国就搞的N不到的,搞的也嘛,这说明了什……   (2005.11.21)

linuxdotnet

  太不负责任了,老是弄错误咚咚出来误认   (2005.11.21)

mikeshi

  to cheyo:主要是因好像csdn中某人特别钟爱故吧,好像是透明……   (2005.11.21)

mikeshi

  Python的叫Zope,不叫Zend,真是的,csdn是在砸杂自己的牌子   (2005.11.21)

cheyo

  CSDN最近老在炒Ruby  (2005.11.21)

woodhead99

  ruby是日本人写的,是用python
  java
都嫌复杂世界越来越惰了   (2005.11.08)

XChilde

  另外生物学域也常用Perl来分析DNA序列。在想研究生物信息学,Perl是必修  (2005.11.07)

lile2002

  To Suninny: perl 可不是玩具,在Unix 世界上,perl 的地位可不低啊,系的通用工具言。
  “
而不是
了什么钱途或是开发么项目之东东^^
  Nokia
有一个
目里面就用perl 开发作的网的平台,跑在Sun的机器,Netscape EnterPrise server web上面的
     (2005.11.07)

sleetdrop

  呵呵,学脚本有的候就是,可偶也能方便解决一下身问题更是另人心,做人不必那么认,上网看PLMM是一,写个cool脚本也是  (2005.11.07)

Suninny

  to flowerknight:
  
一般选择Perl/Ruby/Python这类脚本言的,大都是将其作种爱好啦。而不是了什么钱途或是开发么项目之东东^^
    to all:
  
认为大家是分清一下好者与件工程  (2005.11.05)

leasun

  我想问问各位评论的兄弟,有真正使用Python或者Ruby过开发?自以是可是技的大
  
我碰巧使用Python小型目的开发,出于言的趣,Ruby我也了解。其体感上二者却有很多相似的地方。不二者的明者的文化背景不同,Python更崇尚自由,而Ruby要求的是严谨从二者的法上就可一般。
  
就社区而言,Python社区似乎更活,但是自由性太,往往有四蔓延,没有主趋势。而Ruby社区主似乎比较严谨集中。
  
实选种语言并不重要,就我个人的感种语言都是非常秀的。重要的是,精通其中一个,了解他的点和缺点,合理的利用。
  
至于那些那PythonRubyC/C++JavaPHP的朋友,了解,每种语注的域是不同的,你可以C在某个域极为强 大,但是在其它域它可能就一无是个例子,在人工智能研究域,很少有人会想到使用C,而数学运算的秀算法,通常都是Fortran写的,用 C/C++写的最好的数学算法仅仅能做到与Fortran算法相当的水准。
  
至于php,基本上没有人在web以外使用它吧?呵呵。   (2005.11.05)

littlecpu

  ,Ruby和什Python屁用啊?
  
做不到c.netjava, delphi, vb的大面流行.性广
  
这种东西碰上倒霉,
  
又得担心某些点上的功能,
  
又得担心将来人员变换维护风险,
  php
炒了5, 6,除来用来做论坛,信息网站,谁还敢用它来搞其他数据库应用啊?
  
很明一个老ASP都在企上比PHP流行啦
  
何况是什ruby, python,都不足各体毛长齐了没有   (2005.11.05)

MHB

   我很flowerknight点,cloudzmr_mosaic二位强调片面的技,有一个大的IDE开发的后盾是再好不,一是提 高生率,二是可调试。会用edit写二行就自以是,那是自欺欺人。cloudzm,如果手机开发有一个好的IDE工具就不用像你这样的,javascript也一  (2005.11.04)

XChilde

  lile2002
  Pugs
只是一个玩具而已,太当回事儿。   (2005.11.04)

cloudzm

  flowerknight
  
是思太狭隘,并不是所有的程序都可以在IDE调试的。
  
比如我
做的手机的件,有汇编,有C,有Javacode是放在ClearCase里的,build是在build server上做,在本地PC上是无法的。你得能用Eclipse或者VS写、调试吗
  
况且大的个人只能负责其中一小部分code,不可能把所有的code都放在一个IDE里的,如果真的能有这样IDE,那它的运行速度....     (2005.11.03)

gu1dai

  不明白放着成熟的php不用,去搞什python Ruby   (2005.11.03)

gu1dai

  用什么语言来写脚本呢?
  
-----------
  php,asp,jsp   (2005.11.03)

gu1dai

  于新入行的或准入行的程序,是那句,跟当前市的主流,在巩固技能力的同强业务,而不要去追逐那些尚在萌芽或者成长阶段、范制定并不完整的言,浪不必要的精力。
  -------------------
  
谢谢你。
  ------
  
会写程序的程序
  ------------
  
呵呵,大家都在写   (2005.11.03)

r_mosaic

  我想澄清一个问题Python 是如前所,是部落言。但是这样简单易用的言如果没有的,用什么语言来写脚本呢? Java C# 于脚本写都复杂 Python 至少比 javascript 多了面向象的功能了!   (2005.11.03)

gu1dai

  部落个概念我是第一次听 (2005.11.03)

r_mosaic

  to alaclp:不是没有用程序定义语言。我写生成器,目前在用,就是用 javascript 写的。根本没有必要再搞一个什用程序定义语ESR 说过,写会写程序的程序  (2005.11.03)

r_mosaic

  to flowerknight:你大概从没写脚本吧, javascript 这么流行的脚本言都不提一下?你是不是只写 100 行以上的程序?从不写 100 行以内的程序?   (2005.11.03)

 

flowerknight

  to cloudzm again:
   “
C程的人....“,那到要看是来写个程序,如果大师级的人物,这种以品和信誉作自己追求目的人自然人放心;如果是个刚毕业的菜我 宁愿他用Eclipse或者VS来写个程序,因为这些工具提供了充分的测试调试功能,于初、中程序提高生效率和自我检查有百利而无一害。 另外,我不是写windows程序的,也不是的。我只是将我对这种部落级语言在目立项过程中很容易被K的事实说出来,也将来它可能会王 国言、会提供秀的IDE,但那竟是将来。
  
  to Suninny:
  
于新入行的或准入行的程序,是那句,跟当前市的主流,在巩固技能力的同强业务,而不要去追逐那些尚在萌芽或者成长阶段、范制定并不完整的言,浪不必要的精力。   (2005.11.03)

 

alaclp

  没有用程序定义语言啊?
  
他就我生成什
  
以后是机器人的代,人类连Coder都没得作,哈哈哈   (2005.11.03)

 

Suninny

  “flowerknight:。。。与其在部落冲突中搞死自己,不如来捍JAVA.net的国度。在外企呆了三年,看到多少想采用部落级语开发目被Kill掉,各位别费那个精神与力气。 。。。。。
  
。。。您老人家是呆在地窖中吧,这样更保哦。。。   (2005.11.02)

 

Suninny

  RubyPython不是一个次的。根本不存在冲突嘛。。。
  
程菜鸟还是推荐用Python--简单也是Python的核心哲学),而且料和用都相对较多。
  
的就不用推荐了,他大都会选择Ruby,并上她,hehe~   (2005.11.02)

 

cloudzm

  flowerknight
  
认为C程的人都有IDE可以用?是不是你写windows程序写多了
  
你又去
哪些企,怎知道的企都是用IDE写程序的?   (2005.11.02)

 

tonyhawk

  python将是java后又一个王者   (2005.11.02)

 

flowerknight

  to cloudzm
  
一个件企开发不可能人人是,是分初、中、高的,是起的人力源配置,而且在具体开发中真正充当主力开发写代量最 多的是初、中程序,高程序担任核心或框架部分的开发,如果你不初、中的程序提供方便易用、可以自我调试测试IDE平台,他提 高工作和生效率。从没见过那个企业级目是一群人在文本编辑器中实现的。如果这样的程序出来了,我也会打回去,去做文件的排版和   (2005.11.02)

 

cloudzm

  holy_phoenix:
  
如果你喜lambdaruby里也有似的西。而Python里的lambda太弱,Python的作者都已lambda去掉了,似乎reduce,map,filter的也要一并去掉。
  flowerknight

  
我看你才是真正的菜
,没有IDE开发不出好的目??用IDE的就是老??   (2005.11.02)

 

wanghui0380

  是比python,个人喜工具集式的方式,而不喜大框架的西,呵呵,大框架太麻,做小西方便,做大西,一但及底,就得及全身。   (2005.11.02)

 

flowerknight

   跟着主流王国级语言走吧,RubyPython这种部落级语言的生命力不会久的,一个很简单理由,个像IDE都没有,凭什一群菜用文本编辑 器就能开发出好目来;就算有几个老,恐怕也只能开发有限个目。与其在部落冲突中搞死自己,不如来捍JAVA.net的国度。在外企呆了三年, 看到多少想采用部落级语开发目被Kill掉,各位别费那个精神与力气。   (2005.11.02)

 

ripper

  “Pythonzend然完整“...,是啊PHPZOPE也不   (2005.11.02)

 

lile2002

  to XChilde:
  perl6
问题,在于开发走了一条错误的道路,整个开发perl6编译器的划必从新修正。
  
但是有个中国人去的perl6开发通通都不管,从新写一个解pugs直接运行perl6
  
嗬嗬,也perl6 会有Apocalypses pugs 2编译器。pugs目没有得到perl基金会的金支持。唐认为自己力来独立完成目,所以就没有要perl基金会的助。
  http://www.perlchina.org/archive/archive.php?action=archive&page=27
  
,我perl5 目前已好了,用的。  (2005.11.02)

 

holy_phoenix

  Python 中的λ算子很,我就喜欢这个。
  
  
个人认为 Python C++ 更相似一点,都是支持多范型程方式的言。
  
  
Ruby 没有怎,不里面的 block 绝对不是 Ruby 的,至少 Smalltalk 里面就有 block,很大,相比于 Java 中的匿名方便太多。   (2005.11.02)

 

xiangding

  python,比Ruby好多了。小日本的西,不要在中国来宣!!!!!!!!!!!   (2005.11.02)

 

rainbow_wzx

  “JavaScript法不够简洁够简洁了吧。至少C/Java程序
   “
也没有一个丰富的,不太容易用来做一般的开发倒也是的。不,在JVM/.NET代,更多的是由平台提供,在多言中共享。 rhinojavascript实现,跟java的整合就相当不,只不,适用范受到很大的限制,只能在Java境中使用。   (2005.11.02)

 

XChilde

  JavaScript法不够简洁,也没有一个丰富的,不太容易用来做一般的开发  (2005.11.02)

 

iasky

  支持Python`~   (2005.11.02)

 

JamBoL

  连编码都得用小日本的西了,不过对日本人的技术还是很  (2005.11.02)

 

rainbow_wzx

  有没有人喜javascript?并拿javascriptruby/python
  
javascript有点感情,主要是简单java/c的程序基本上不用学也不会忘。另外基于prototype的面向象模型刚开始有点拗口,但功能是非常大,且灵活的。   (2005.11.02)

 

XChilde

  tx18
  
  
你乱广告,所以我们讨厌你做的西!
  
  lile2002

  
  Perl 6
迟迟不能布,有很多人因为这个原因Perl敬而之。有人甚至Ruby就是Perl 6,呵呵。Perl是好,但是如果继续这样拖下去,只会流失更多的用的。   (2005.11.01)

 

cloudzm

  作者真是无知啊。
  Python
的作者被称作温柔的独裁者,可Python展的决定作用。
  
Ruby的作者也不叫maze,叫松本行弘、Matz   (2005.11.01)

 

tx18

  何不拿出勇气来试试自己的东东!
  
www.SqlServer.com.cn   (2005.11.01)

 

mrkissinger

  呵呵,在下也是比perl   (2005.11.01)

 

lile2002

  perl catalyst 2者要
  
CPAN 源作后盾。   (2005.11.01)

 

lile2002

  Perl 2者都要好,原因是他源不如perl
  
就如同windows 的可以用
源比linux多一
  
何况Perl Catalyst 框架超。。。CPAN
  
只要一条命令,就可以安装完函数和OO混合型,Perl都能任。   (2005.11.01)

 

sleetdrop

  是抱着老perl不放,呵呵。
  
只要熟悉一个脚本,就能方便很多的日常工作。
  
不要小看脚本,也把它看成是万能的。
  
有了它,世界更美好而已......   (2005.11.01)

 

LuZhou

  是比看好Python,因为时间久,也经过践。   (2005.11.01)

 

tinydust

  的没,我最近玩种语言也是个感   (2005.11.01)

 

 

你可能感兴趣的:(选Ruby还是选Python?)