盼 望 着 ,盼 望 着 , 东 风 来 了 ,
chūn tiān de jiǎo bù jìn le 。
春 天 的 脚 步 近 了 。
yī qiè dōu xiàng gāng shuì xǐng de yàng zi ,
一 切 都 像 刚 睡 醒 的 样 子 ,
xīn xīn rán zhāng kāi le yǎn 。shān lǎng rùn qǐ lái le ,
欣 欣 然 张 开 了 眼 。 山 朗 润 起 来 了 ,
shuǐ zhǎng qǐ lái le ,tài yáng de liǎn hóng qǐ lái le 。
水 涨 起 来 了 ,太 阳 的 脸 红 起 来 了 。
xiǎo cǎo tōu tōu dì cóng tǔ lǐ zuàn chū lái ,nèn nèn de ,
小 草 偷 偷 地 从 土 里 钻 出 来 ,嫩 嫩 的 ,
lǜ lǜ de 。yuán zǐ lǐ ,tián yě lǐ ,qiáo qù ,
绿 绿 的 。 园 子 里 , 田 野 里 , 瞧 去 ,
yī dà piàn yī dà piàn mǎn shì de 。zuò zhe ,tǎng zhe ,
一 大 片 一 大 片 满 是 的 。坐 着 , 躺 着 ,
dǎ liǎng gè gǔn ,tī jǐ jiǎo qiú ,sài jǐ tàng pǎo ,
打 两 个 滚 ,踢 几 脚 球 ,赛 几 趟 跑 ,
zhuō jǐ huí mí cáng 。fēng qīng qiāo qiāo de ,
捉 几 回 迷 藏 。 风 轻 悄 悄 的 ,
cǎo ruǎn mián mián de 。táo shù 、xìng shù 、lí shù ,
草 软 绵 绵 的 。桃 树 、 杏 树 、梨 树 ,
nǐ bù ràng wǒ ,wǒ bù ràng nǐ ,
你 不 让 我 ,我 不 让 你 ,
dōu kāi mǎn le huā gǎn tàng ér 。
都 开 满 了 花 赶 趟 儿 。
hóng de xiàng huǒ ,fěn de xiàng xiá ,bái de xiàng xuě 。
红 的 像 火 ,粉 的 像 霞 ,白 的 像 雪 。
huā lǐ dài zhe tián wèi ér ,bì le yǎn ,
花 里 带 着 甜 味 儿 ,闭 了 眼 ,
shù shàng fǎng fú yǐ jīng mǎn shì táo ér 、xìng ér 、lí ér 。
树 上 仿 佛 已 经 满 是 桃 儿 、 杏 儿 、梨 儿 。
huā xià chéng qiān chéng bǎi de mì fēng wēng wēng dì nào zhe ,
花 下 成 千 成 百 的 蜜 蜂 嗡 嗡 地 闹 着 ,
dà xiǎo de hú dié fēi lái fēi qù 。yě huā biàn dì shì :
大 小 的 蝴 蝶 飞 来 飞 去 。野 花 遍 地 是 :
zá yàng ér ,yǒu míng zì de ,méi míng zì de ,
杂 样 儿 ,有 名 字 的 ,没 名 字 的 ,
sàn zài huā cóng lǐ ,xiàng yǎn jīng ,
散 在 花 丛 里 , 像 眼 睛 ,
xiàng xīng xīng ,hái zhǎ yā zhǎ de 。
像 星 星 ,还 眨 呀 眨 的 。
“chuī miàn bù hán yáng liǔ fēng ”,bù cuò de ,
“ 吹 面 不 寒 杨 柳 风 ”,不 错 的 ,
xiàng mǔ qīn de shǒu fǔ mō zhe nǐ 。
像 母 亲 的 手 抚 摸 着 你 。
fēng lǐ dài lái xiē xīn fān de ní tǔ de qì xī ,
风 里 带 来 些 新 翻 的 泥 土 的 气 息 ,
hùn zhe qīng cǎo wèi ér ,hái yǒu gè zhòng huā de xiāng ,
混 着 青 草 味 儿 ,还 有 各 种 花 的 香 ,
dōu zài wēi wēi rùn shī de kōng qì lǐ yùn niàng 。
都 在 微 微 润 湿 的 空 气 里 酝 酿 。
niǎo ér jiāng cháo ān zài fán huā nèn yè dàng zhōng ,
鸟 儿 将 巢 安 在 繁 花 嫩 叶 当 中 ,
gāo xìng qǐ lái le ,
高 兴 起 来 了 ,
hū péng yǐn bàn dì mài nòng qīng cuì de hóu lóng ,
呼 朋 引 伴 地 卖 弄 清 脆 的 喉 咙 ,
chàng chū wǎn zhuǎn de qǔ zi ,
唱 出 宛 转 的 曲 子 ,
gēn qīng fēng liú shuǐ yìng hè zhe 。
跟 轻 风 流 水 应 和 着 。
niú bèi shàng mù tóng de duǎn dí ,
牛 背 上 牧 童 的 短 笛 ,
zhè shí hòu yě chéng tiān liáo liàng dì xiǎng zhe 。
这 时 候 也 成 天 嘹 亮 地 响 着 。
yǔ shì zuì xún cháng de ,yī xià jiù shì sān liǎng tiān 。
雨 是 最 寻 常 的 ,一 下 就 是 三 两 天 。
kě bié nǎo 。kàn ,xiàng niú máo ,xiàng huā zhēn ,
可 别 恼 。看 , 像 牛 毛 , 像 花 针 ,
xiàng xì sī ,mì mì dì xié zhī zhe ,
像 细 丝 ,密 密 地 斜 织 着 ,
rén jiā wū dǐng shàng quán lóng zhe yī céng báo yān 。
人 家 屋 顶 上 全 笼 着 一 层 薄 烟 。
shù yè ér què lǜ de fā liàng ,
树 叶 儿 却 绿 得 发 亮 ,
xiǎo cǎo yě qīng de bī nǐ de yǎn 。bàng wǎn shí hòu ,
小 草 也 青 得 逼 你 的 眼 。 傍 晚 时 候 ,
shàng dēng le ,yì diǎn diǎn huáng yùn de guāng ,
上 灯 了 ,一 点 点 黄 晕 的 光 ,
hōng tuō chū yī piàn zhè ān jìng ér hé píng de yè 。
烘 托 出 一 片 这 安 静 而 和 平 的 夜 。
zài xiāng xià ,xiǎo lù shàng ,shí qiáo biān ,
在 乡 下 , 小 路 上 ,石 桥 边 ,
yǒu chēng qǐ sǎn màn màn zǒu zhe de rén ;
有 撑 起 伞 慢 慢 走 着 的 人 ;
hái yǒu dì lǐ gōng zuò de nóng mín ,pī zhe suō dài zhe lì 。
还 有 地 里 工 作 的 农 民 ,披 着 蓑 戴 着 笠 。
tā men de fáng wū ,xī xī shū shū de ,zài yǔ lǐ jìng mò zhe 。
他 们 的 房 屋 ,稀 稀 疏 疏 的 ,在 雨 里 静 默 着 。
tiān shàng fēng zhēng jiàn jiàn duō le, dì shàng hái zi yě duō le .
天 上 风 筝 渐 渐 多 了 ,地 上 孩 子 也 多 了 。
chéng lǐ xiāng xià ,jiā jiā hù hù ,lǎo lǎo xiǎo xiǎo ,
城 里 乡 下 ,家 家 户 户 ,老 老 小 小 ,
yě gǎn tàng ér shì de ,yí gè gè dōu chū lái le 。
也 赶 趟 儿 似 的 ,一 个 个 都 出 来 了 。
shū huó shū huó jīn gǔ ,dǒu sǒu dǒu sǒu jīng shén ,
舒 活 舒 活 筋 骨 ,抖 擞 抖 擞 精 神 ,
gè zuò gè de yī fèn ér shì qù ,“yì nián zhī jì zài yú chūn ”;
各 做 各 的 一 份 儿 事 去 ,“一 年 之 计 在 于 春 ”;
gāng qǐ tou er ,yǒu de shì gōng fū ,yǒu de shì xī wàng 。
刚 起 头 儿 ,有 的 是 工 夫 ,有 的 是 希 望 。
chūn tiān xiàng gāng luò dì de wá wa ,
春 天 像 刚 落 地 的 娃 娃 ,
cóng tóu dào jiǎo dōu shì xīn de ,tā shēng zhǎng zhe 。
从 头 到 脚 都 是 新 的 ,它 生 长 着 。
chūn tiān xiàng xiǎo gū niáng ,huā zhī zhāo zhǎn de ,
春 天 像 小 姑 娘 ,花 枝 招 展 的 ,
xiào zhe ,zǒu zhe 。chūn tiān xiàng jiàn zhuàng de qīng nián ,
笑 着 ,走 着 。 春 天 像 健 壮 的 青 年 ,
yǒu tiě yì bān de gē bo hé yāo jiǎo ,
有 铁 一 般 的 胳 膊 和 腰 脚 ,
lǐng zhe wǒ men shàng qián qù 。
领 着 我 们 上 前 去 。
伴随着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的未来,我们也将拭目以待。