`
皆乐
  • 浏览: 133557 次
  • 性别: 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?需要的朋友可以参考下

    python和ruby,我选谁?

    本文给大家对比了下python和Ruby的异同以及各自的优缺点等,向大家展示了python与Ruby的资源以及学习曲线,非常适合在此两种语言中犹豫不决的小伙伴,希望大家能够喜欢

    Python网络编程基础

    简单的就是好的来说,选 Python 是没错的。Python 适合寻找简单语言的人,这很可能造成 Python 更流行,因此也有更多的支持。但如果要追求更强大的语法功能,则 Ruby 是好的选择。因为 Ruby 和 Python 的哲学有很多...

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

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

    Python是什么 Python的用处

    AI深度学习技术本身的特点决定了其不适合静态编译型语言,而Python语言被选作AI技术框架的基础语言,更多的是源于Python的动态特性及其开发效率高等性能优势。 基本输出 print(“Hello world!”) 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中的一些空格...

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

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

    在Python的Django框架上部署ORM库的教程

    在这篇文章里,我们将来看看几个流行的可选ORM 库,以此更好地窥探到Python ORM 境况。通过写一段脚本来读写2个表 ,person 和 address 到一个简单的数据库,我们能更好地理解每个ORM库的优缺点。 SQLObject ...

    mikon:Ruby 的 DataFrame 库

    Mikon 是一种灵活的 Ruby 语言数据结构,灵感来自 R 的 data.frame 和 Python 的 Pandas。 它的目标是使操作真实数据变得容易,对其应用统计函数并用 Ruby 语言可视化结果。 它与Nyaplot::DataFrame和Statsample::...

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

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

    【最新版】platypus5.3.zip【亲测可用】最好的创建本机Mac应用程序

    Platypus是一个开发人员工具,可以从命令行脚本(例如Shell脚本或Python,Perl,Ruby,Tcl,JavaScript和PHP程序)创建本机Mac应用程序。这是通过将脚本与运行脚本的应用二进制文件包装在macOS 应用程序捆绑包中来...

    ECMAScripter:用于 ECMAScript/JS/Python/Ruby/Kotlin/Groovy 的轻量级 IDE-开源

    ECMAScripter 是 JVM 语言的 IDE。 这个IDE非常简单易用。 因此,您可以轻松地使用知名语言编写和测试您的算法。

    pq:用Python编写的PostgreSQL简单事务队列

    用Python编写的PostgreSQL事务性队列系统。 它允许您以各种方式将项目推送和弹出队列,以及从队列中弹出项目,还提供了两个计划选项:延迟处理和优先级。 系统使用单个表来容纳所有队列中的所有作业。 具体细节...

    SymEngine:一个快速的C++符号数学运算库-python

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

    基于AWSLambda持续集成工具LambCI.zip

    目前已经支持大部分主流语言了,比如:C,Java,Python, Nodejs,Go,Rust,Ruby 等等。类似 Jenkins, Travis 和 CircleCI。使用效果图:特性:开箱即用,支持至少100并发无需维护的Web服务器,构建服务器或数据库...

    pad++ 可以竖选的文本编辑器

     自定义语法高亮,支持HTML, XML, CSS, JavaScript, VBScript, ASP, PHP, CSS, Perl/CGI, C/C++, C, Java, VB, Pascal, Assembler, SQL, Python, NSIS, INI, REG, INF, BAT, DIFF, Ruby等众多文件。

    paper-gamification-website:对应的 rails 网站在 "paper-gamification" 处呈现由 python 脚本计算的统计数据

    这是我的另一个存储库中 python 脚本生成的统计数据的可视化网站: 。 可视化的主要部分是在 HTML <canvas>和几个脚本的帮助下完成的。 安装 1) 部署 在 `author.yml 中更改凭据 目前,我使用 Heroku 进行部署,但...

Global site tag (gtag.js) - Google Analytics