`
皆乐
  • 浏览: 135750 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

选Ruby还是选Python?

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

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

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

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

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

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

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

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

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

对于未来发展,我认为Python的发展可预见,会较为平稳。Python已经属于一个社区,而非一个人,但Ruby由于种种原因,Ruby的作者maze的意志仍然会对Ruby的发展造成较大影响。Sun控制着Java,但由于sun的资源强大,且组织了jcp进行统筹,所以Java发展很不错,但Ruby能不能作到这一点,还需要时间来证明。
分享到:
评论
1 楼 ljmjava 2008-09-25  
你还是学php吧,和我一样,我学了ror,觉得太乱,开始搞php了。

相关推荐

    学编程选什么语言好?是PHP、Python还是Ruby?

    在互联网上,关于初学者应该选择哪种编程语言的讨论非常热烈,常见的选择有PHP、Python和Ruby。以下是对这三种语言的深入分析以及它们在实际应用中的优劣比较。 首先,PHP是一种广泛使用的服务器端脚本语言,尤其在...

    python和ruby,我选谁?

    ### Python与Ruby:异同与选择 #### 引言 在选择编程语言的过程中,开发者往往会根据项目的具体需求和个人偏好来做出决策。对于那些在Python和Ruby之间徘徊的开发者而言,了解这两种语言之间的区别和相似之处至关...

    Eclipse搭建Ruby开发环境

    - 在“APIs”选项卡中勾选复选框,语言选择 Python,并将需要的 .api 文件添加进来。 - 点击“Compile APIs”编译 .api 文件,这个过程可能需要几分钟的时间。 4. **使用 QtDesigner**: - 如果需要用到 Qt...

    Python安装之(linux mac windows)

    通过上述步骤,无论是在Windows、Linux还是Mac OS X环境下,都可以顺利安装Python,并开始您的编程之旅。不同操作系统的安装过程虽有所不同,但整体流程都是类似的,主要包括下载安装包、配置环境以及验证安装结果等...

    rule-engine:一种轻量级,可选类型的表达语言,具有用于匹配任意Python对象的自定义语法

    语法与Python最相似,其灵感来自Ruby。 该语言的一些功能包括: 可选的类型提示 用正则表达式匹配字符串 日期时间数据类型 复合数据类型(等同于Python dict,列表和集合类型) 资料属性 线程安全 用法示例 以下...

    基于 C 的 gRPC(C++、Python、Ruby、Objective-C、PHP、C#)

    gRPC – 一个 RPC 库和框架 ...为了最大限度地提高可用性,gRPC 支持向用户所选语言(如果有)添加依赖项的标准方法。在大多数语言中,gRPC 运行时都以包的形式提供,可在用户的语言包管理器中使用。

    用Python写网络爬虫-35

    脚本语言如Perl、Python、Java、Ruby等,简单、易学,良好的文本处理能力,可以方便网页内容的细致提取,但效率往往不高,适合对少量网站的聚焦爬取。 本文将主要介绍用Python写网络爬虫的方法。Python是一种相对...

    ruby培训资料

    此外,Ruby是免费和开源的,它在日本比Python更受欢迎,这可能是因为Ruby能够非常方便地处理多字节字符集。Ruby的语法具有可读性和易于学习的特点,被用于文本处理、Web应用、系统管理以及人工智能和数学研究等领域...

    selenium_webdriver(python)第一版.pdf

    - **为什么选Python**:Python以其简洁的语法和丰富的库,成为自动化测试的流行选择。 - **第一个脚本**:文档会引导读者编写第一个简单的自动化测试脚本,可能包括打开浏览器、导航到特定网址、查找页面元素并...

    Python是什么 Python的用处

    AI深度学习技术本身的特点决定了其不适合静态编译型语言,而Python语言被选作AI技术框架的基础语言,更多的是源于Python的动态特性及其开发效率高等性能优势。 基本输出 print(“Hello world!”) Python 的创始人为...

    mac系统安装Python3初体验

    这通常涉及到修改`/etc/paths`文件,将`/usr/local/bin`移动到列表的顶部,但这一步是可选的,并且可能需要谨慎处理。 如果你不修改PATH,可以使用全路径来指定Python 3版本,例如`/usr/local/bin/python3`。此外,...

    测量程序编制 - python 26数据类型:List(列表)-删除.pptx

    lang = ["Python", "C++", "Java", "PHP", "Ruby", "MATLAB"] # 使用正数索引删除 del lang[2] print(lang) # 使用负数索引删除 del lang[-2] print(lang) ``` 此外,del还可以删除列表中的一段连续元素,...

    selenium webdriver (python)第三版

    Python之所以被选作本书的语言,是因为它的语法简单,对初学者友好。如果读者具有C语言或Java语言的基础,那么学习Python将会变得相对容易。自动化测试脚本相较于开发程序来说,难度较低,对于希望进入编程领域的...

    梅森旋转算法

    梅森旋转算法是R,Python,Ruby,IDL,Free Pascal,PHP,Maple,Matlab,GMP和GSL的默认伪随机数产生器。从C++11开始,C++也可以使用这种算法。在Boost C++,Glib和NAG数值库中,作为插件提供。 在SPSS中,梅森选旋转算法是...

    规范:Python的规范样式鼻子测试输出

    spec是一个Python(2.6+和3.3+)测试工具,可以将其转换为: 到这个: 具体来说, spec提供了: 彩色,规格样式输出彩色回溯和摘要可选的时间显示,用于慢速测试测试运行的CLI工具,该工具启用有用的非默认选项,并...

    ruby-test-reporter:已弃用将Ruby测试覆盖率数据上传到Code Climate

    现在已弃用了Ruby,Python,PHP和Javascript的现有测试报告器。 将您的Ruby测试套件中的SimpleCov测试覆盖率数据发布到Code Climate的托管自动代码审查服务。 代码气候-https: 安装 此gem需要使用Code Climate上...

    cookiecutter-ruby:Ruby项目的Cookiecutter模板

    曲奇Ruby 这是叉子 你好! 我是,这(最初是) 对原始文件所做的更改(请参阅): 删除TravisCI改为使用CircleCI 删除pyup以支持GitHub 在自述文件顶部添加了注释和新的travis构建图标 README.rst中的一些空格...

    MAC平台基于Python Appium环境搭建过程图解

    8. PyCharm IDE(可选) **1. 搭建JDK** - 双击.dmg文件安装JDK - 使用终端配置环境变量:`vi ~/.bash_profile`,添加JDK路径并保存 - 通过`source ~/.bash_profile`使环境变量生效 - 验证JDK安装:运行`java -...

    K近邻、支持向量机两个分类算法

    目前,机器学习牵涉的编程语言十分多样,包括了MATLAB、Julia、R、Perl、Python、Ruby等等。小组内部之前对MATLAB较为熟悉,但考虑到拓展知识面、方便学习等因素,最后选择Python语言。原因包括:Python是解释语言,...

    SymEngine是一个快速的符号操作库,用C ++编写-Python开发

    其他语言,例如:C包装器允许从C使用,或作为其他包装器的基础(symengine / cwrapper.h文件)Python包装器允许从Python轻松使用并与SymPy和Sage(symengine.py存储库)集成Ruby包装器(symengine.rb存储库)Julia...

Global site tag (gtag.js) - Google Analytics