请教一个新手是否应该选择Ruby的疑惑

Python016

请教一个新手是否应该选择Ruby的疑惑,第1张

本文从RoR对Ruby的影响、Ruby的优势等多个角度分析了Ruby比Python成功的原因。

伴随着RoR的风行,Ruby语言受到越来越多的开发者的关注,同为脚本语言,Python的地位却略显尴尬,什么样的原因,造成了这样的局面?

笔者认为有以下几个方面:

一、 RoR的推波助澜

笔者认为,Ruby的成功,很大一部分是由于RoR的带动。

几年前,如果你没听过RoR倒是情有可原,但如果今天,RoR对你来说,还是一个陌生词汇的话,那你就有点危险了。:)

什么是RoR呢?

全称,Ruby on Rails,简称,RoR或者Rails。

它是个全栈的(full-stack)web应用框架,它为开发者提供了构建一个web应用所需的完整基础结构,并且严格按照MVC(模型-视图-控制器)架构进行开发。

RoR致力于提高开发者的开发效率,希望通过尽量少的代码,完成尽可能多的功能。基于这样的考虑,RoR有两大设计原则,一是,不要重复自己 (Don''t Repeat Yourself);二是,惯例优于配置(Convention Over Configuration)。

使用RoR,你甚至可以通过简单的几条命令行、几行代码,就完成一个功能强大的web应用程序,这极大地提高了开发者的开发效率。

2004年7月,RoR一经发布,在短期内,便受到很多开发者的追捧。时至今日,RoR已经被全世界的开发者们所关注,它带给开发者的效率提升,是前所未有的;它带给业界关于软件开发的思考,也是意义深远的。

在RoR如此风行的大背景下,Ruby on Rails,这个需要使用Ruby进行开发的web框架,也自然地带动了Ruby语言的发展。

在下面的“Ruby语言受关注程度趋势图”上,可以清晰地看出,Ruby语言在RoR发布也就是2004年7月后,进入了高速发展期。

Ruby因为有了RoR这样的“杀手级”应用,变得春风得意,那么Python呢?

在《浅谈Python语言》一文中,我们提到了Python具有丰富的API库,在web开发方面,也有Django、Turbogears这样的一些框架,就运行速度而言,

Python比Ruby快;就社区而言,Python也比Ruby成熟,可是为什么Python没有产生一个像RoR这样的“杀手级”应用呢?

Python语言的创始人Guido在接受InfoQ采访时,是这样解释的:

“我不喜欢Killer

Application,因为那会让多数人或者社区将精力集中于一个地方。Python是一个应用广泛的语言,基于Python已经产生了很多好用的

Web框架,比如Django等。但是Python不Killer

Application,至少目前是这样,而且我相信随着Python社区的发展,会有很多Killer

Applications自然出现。我喜欢多样化的应用。”

通过这个观点,我们可以看出Python在其发展道路上,追求的是一种均衡,一种“大而全”。

“会有很多Killer Applications自然出现”,这点,我想我们需要拭目以待。单就“均衡”而言,笔者认为这很危险,作为一门脚本语言,试图做Java之类传统语言做的事情,不太可取。

以Java为例,在web应用上,有太多的框架可供选择,不错,“在不同的场景用不同的框架”,这想法很好。可是,在实际应用中,有多少开发者可以根据项目特点,正确、合理地选择框架?

与其到最后,用户还不知道该如何选择,还不如一开始就替用户做出一个选择。

作为Python的使用者,我更愿看到有个Python的“杀手级”应用出现,进而带动Python更快速地发展。

你可以说RoR成就了Ruby,可是Rails为什么偏偏选择了Ruby?!Ruby优势何在?

二、 Ruby的优势

1. 比Perl更强大,比Python更面向对象

“比Perl更强大,比Python更面向对象”,这是Ruby创始人Matz设计Ruby的初衷。

Python既支持面向过程的编程也支持面向对象的编程,而Ruby则是完全面向对象。

在Ruby中,任何东西都是对象,包括Python中的基本数据类型;每个过程或函数都是方法。

例如,取-3的绝对值,在Python中,是这样的:abs(-3)。

而在Ruby中,则是这样的:-3.abs。这种OO的方式,显得更加直观。

2. 强大的语法功能

单就语法的简单性而言,Ruby不及Python。但解决一些较复杂的问题,Ruby强大的语法功能,有助于降低问题的复杂度。

例如:

Ruby以“块”的方式来实现列表内的条件、循环语句,比Python的更灵活、更具通用性。

Ruby具有类似Lisp的彻底的函数方式的条件、循环语句等。

Ruby的迭代器功能可以将流程控制结构抽象化。

3. 强大的字符串处理、正则表达式功能

Matz认为:Ruby >(Smalltalk + Perl) / 2。

Ruby类库是对Perl语言功能的面向对象方式的重组,因为借鉴了很多Perl的东西,使得字符串处理、正则表达式这块,Ruby同样强大。

4. 不会僵住的“胶水语言”

同样是“胶水语言”,Ruby比Python更灵活。

使用过一段时间的Python,你会发现,Python比较依赖第三方的东西。相比较,Ruby则更依赖自身。例如,Ruby可以使用(UNIX的)绝大部分的系统调用,单独使用Ruby也可以进行系统编程等。

有优势,Ruby就一定可以成功了?Python同样也有很多优势!对,还得看当时所处的环境。

三、 时势造英雄

这点还得回到RoR的崛起。

Ruby,1995年12月正式发布,2000年进入美国;2004年7月,RoR正式发布。

RoR的出现时间,值得玩味。

在下面的“Java语言受关注程度趋势图”上,可以看到,2004年7月前后,Java处于一个相对“衰退期”。

提到Java,大家应该都会想到J2EE。

J2EE应用程序的广泛实现是从1999、2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是因其开发效率、学习难度和实 际性能的问题,在实践中没有获得完全的成功。作为J2EE核心技术的EJB(2.x),更是因其高昂的学习代价、极低的开发效率和极高的资源消耗,备受指 责。

在这样一个大背景下,2003年,Spring框架诞生了。

Spring的设计思想在于“使J2EE开发更加简单”。这个设计思想,在包括Java领域在内的众多软件开发领域引起了广泛关注。软件开发者们开始思考,如何让开发向着一个更简单的方向发展。

RoR在这一时期出现,无疑是顺应了这样一个潮流。

可以这么说,是历史选择了RoR,当然也选择了Ruby。

遇到合适的机遇,还不够,俗话说得好:“众人拾柴火焰高”。

四、 众星捧月

Ruby的出现,受到了两大主流平台Java和.NET的极力追捧。

2006年9月,SUN雇佣了JRuby的主要开发者Charles Nutter和Thomas Enebo;一年不到,2007年6月14号,JRuby 1.0正式发布。SUN在其Java IDE NetBeans 6.0 M10中,更是集成了对Ruby/JRuby的支持。反观Python的Java实现——Jython,则没有这么幸运,发展至今,它并没有得到SUN的 支持。

而Microsoft,也在2007年7月,推出了Ruby的.NET实现——IronRuby的预览版。

相信SUN和Microsoft对Ruby的竞相推崇,必然推动Ruby的进一步发展。

基于以上几点,笔者认为Ruby的成功不是偶然,并且相信这样的成功还会持续下去。对于Python的未来,我们也将拭目以待。

对于新入门的开发者,如何安装 Ruby和Ruby Gems 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 Ruby 开发环境。

此安装方法同样适用于产品环境!

系统需求

首先确定操作系统环境,不建议在 Windows 上面搞,所以你需要用:

Mac OS X

任意 Linux 发行版本(Ubuntu,CentOS, Redhat, ArchLinux ...)

强烈新手使用 Ubuntu 省掉不必要的麻烦!

以下代码区域,带有 $ 打头的表示需要在控制台(终端)下面执行(不包括 $ 符号)

步骤0 - 安装系统需要的包

# For Mac # 先安装 [Xcode]开发工具,它将帮你安装好 Unix 环境需要的开发包

步骤1 - 安装 RVM

RVM 是干什么的这里就不解释了,后面你将会慢慢搞明白。

$ curl -L

期间可能会问你sudo管理员密码,以及自动通过homebrew安装依赖包,等待一段时间后就可以成功安装好 RVM。

然后,载入 RVM 环境(新开 Termal 就不用这么做了,会自动重新载入的)

$ source ~/.rvm/scripts/rvm

检查一下是否安装正确

$ rvm -v

rvm 1.22.17 (stable) by Wayne E. Seguin [email protected]>, Michal Papis [email protected]>

步骤2 - 用 RVM 安装 Ruby 环境

$ rvm install 2.0.0

同样继续等待漫长的下载,编译过程,完成以后,Ruby, Ruby Gems 就安装好了。

步骤3 - 设置 Ruby 版本

RVM 装好以后,需要执行下面的命令将指定版本的 Ruby 设置为系统默认版本

$ rvm 2.0.0 --default

同样,也可以用其他版本号,前提是你有用 rvm install 安装过那个版本

这个时候你可以测试是否正确

$ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin13.0.0] $ gem -v 2.1.6

这有可能是因为Ruby的默认源使用的是cocoapods.org,国内访问这个网址有时候会有问题,网上的一种解决方案是将远替换成淘宝的,替换方式如下:$gem source -

要想验证是否替换成功了,可以执行:

$ gem sources -l

正常的输出结果:

CURRENT SOURCES

到这里就已经把Ruby环境成功的安装到了Mac OS X上,接下来就可以进行相应的开发使用了。

卢春如(Lu Ruby),台湾歌手。出生于台湾,9岁时就离开了台湾移民到加拿大,1998年年初从加拿大回台湾定居。毕业于加拿大一所科技学院的大众传播系的她对唱歌有极大的兴趣,后成为歌手。

中文名: 卢春如

外文名: Lu Ruby

国籍: 加拿大

出生地: 台湾

出生日期: 1978年12月27日

毕业院校: 加拿大卑诗省科技学院

代表作品: 《我不是她》

主要成就: 1996年新年歌唱比赛优胜奖

第二届温哥华中文新秀歌唱赛亚军

语言: 粤语、英语、普通话

粤语拼音: lou4 cen1 yu4

星座: 摩羯座

个人资料

卢春如(10张) 本 名:卢春如 卢春如

粤语拼音:lou4 cen1 yu4 英文名:Lu, Ruby 昵 称: Princess Ruby 国籍:加拿大 语言:粤语、英语、普通话 生 日:1978-12-27 星 座:摩羯座 身 高:156cm 体重:43~49kg 学 历:加拿大卑诗省科技学院大众传播系(BCIT) 兴 趣:音乐欣赏、电视电影、游山玩水、豢养宠物、发呆睡觉 专 长:唱歌、电影制作、广告设计

编辑本段演艺经历

1996年新年歌唱比赛优胜奖、加侨协会主办海华新春联欢晚会表演嘉宾、自由党温哥华区庆祝晚会特别 来宾。 1998年第二届中文新秀歌唱大赛温哥华擂台赛优胜奖、第二届中文新秀歌唱大赛温哥华比赛最佳台风奖 卢春如

。 1998年第二届中文新秀歌唱大赛温哥华比赛亚军,并代表温哥华去多伦多参加全加拿大新秀大赛,代表 歌曲是张惠妹的「Bad Boy」和 Whitney Houston的「I believe in you and me」等等。

卢春如和友友们的照片(20张)1998年温哥华百万行(Walk with the Dragon)表演嘉宾。 1999年发行第一张个人专辑『我不是她』。 现为飞碟电台主持人

编辑本段音乐作品

热门歌曲

01. 我不是她

02. 熄灯

03. mystery

04. understand

05. 希望我能飞

06. 不爱就走开

07. 温度

08. 坏东西

09. 现在就说爱我

10. 我不是他

查看更多 以上内容来自 专辑 显示方式:专辑列表 | 专辑详情 专辑名称 发行时间 语言 试听专辑 详情

我不是她 1999-01-01

唱片公司:EMI百代唱片中国部授权

专辑曲目(9) 01. Go on

02. Mystery

03. 不爱就走开

04. 坏东西

05. 温度

06. 希望我能飞

07. 熄灯

08. 现在就说爱我

09. 我不是她

试听整张专辑>>

编辑本段其他作品

戏剧

国中:舞台歌剧-"TheWeepingadonna","Makin''It" 高中:舞台剧-"David&Lisa","Fame!"…..etc.和一些小型戏剧表演

电视

客串主持温哥华新时代电视节目-"流行音乐时区"(粤语) 客串主持温哥华城巿电视节目-"城巿妙听闻"(国语) 1998年温哥华百万行(WalkwiththeDragon)表演嘉宾

卢春如参加活动照(11张)电台

客串主持加拿大中文电台节目-“茶包理论”三集Ruby

编辑本段所获荣誉

1996年新年歌唱比赛优胜奖 1996年加侨协会主办海华新春联欢晚会表演嘉宾 1996年自由党温哥华区庆祝晚会特别来宾1998年第二届中文新秀歌唱大赛温哥华擂台赛优胜奖 1998年第二届中文新秀歌唱大赛温哥华比赛最佳台风奖 1998年第二届中文新秀歌唱大赛温哥华比赛亚军,并代表温哥华去多伦多参加全加拿大新秀大赛,代表歌曲是张惠妹的"BadBoy"和WhitneyHouston的"Ibelieveinyouandme"….等等