天堂的阶梯

暂无签名

  • 博客访问: 690352
  • 博文数量: 42
  • 用 户 组: 普通用户
  • 注册时间: 1970-01-01 08:00
个人简介

鏆傛棤浠嬬粛

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(42)

文章存档

2006年(7)

2005年(35)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
再论ruby 2006-04-10 21:05:25

分类: 开源技术

还记得几个月前我曾经说只有当我闲到无聊的时候才会去学学ruby,我说谎了。在我毕设答辩最忙的时候,我在偷偷地看programming ruby。在我工作的间歇,我在偷偷地看agile web development with rails。在我有机会写一些小应用的时候,我拼命地抓住机会用ruby。人的好奇心真是奇怪的东西,当ruby和ruby on rails整个community如此火热的时候,我没有挡住这种诱惑。

[@more@]

尽管我现在写过的ruby代码行数可能不到500行,尽管我甚至没有用rails写过web应用,但是我必须承认我当时的想法错了。ruby是那种第一眼看上去并不怎么样,但越用就越爱不释手的东西,有些东西只有用过之后才会有感觉。

很难通过哪一个点说出ruby比其它语言(尤其是Java优秀),有的时候一些语法的改进似乎是那么的不起眼,但是当这些细小的东西组合在一起的时候,那么种感觉是Oh my god!,真是太爽了。记得当时JDK 5引入了一个for each循环的时候,感觉只是一点点语法的改动,但是真正写起代码时才感觉到真是太方便了,而ruby远不止是for each循环这样的语法糖,当好多这些组合在一起的时候,给人的感觉是写程序竟然会那么easy,那么有趣。

Closure、正则表达式、range所有这些特性给人的感觉是写ruby的程序就象写诗一样,它是比Java更高级的语言,或者抽象程度更高的语言。ruby is beautiful。

然而,当全世界都在喧嚷着Java将会被ruby或被动态脚本语言所替代时,我不得不保持我的理智,语言的美丽并不能保证它会被大众所接受。很多人认为ruby很简单,因为它是比Java更高级的语言,因此它比Java更容易。他们错了。也许从语法上来说,他们是对的,尽管ruby的语法更具有灵活性,但是这点语法灵活性不会给ruby带来太大的学习门槛。也许因为类型的动态性,使IDE的IntelliSense statement completion不能用会造成很多人的不适应。也许因为ruby的动态类型,使很多的重构功能都不能使用会给人带来不变。

然而真正的问题是,ruby的动态数据类型会给人带来思维上的转变,而这种转变使得ruby的使用者所遵守的协议变得松散。
1、ruby的duck type使我们的面向对象思维颠覆,也使我们需要重新思考所有现有设计模式,因为我们不需要interface了,这曾经是我们面向对象设计的精华。类的核心是对象的行为,而不是类型,这就是duck type的基本理论,只要你飞得象鸭子、叫得象鸭子,那你就是鸭子。无需求任何abstract class或interface的约束,我们就可以完成任何事情!这真是太爽了, 太灵活了, 但这种灵活性使开发者无需去遵守interface所规定的协议,因为我们根本不需要interface的类型规定。但是同时这意味着危险性,这真的是一把可怕的双刃剑。使用不当,我们的程序将变成一堆散沙,很难追踪它的线索和思路。

2、method missing,动态数据类型、class的随处扩展使程序的追踪和可读性变得很困难。我们经常查了半天搞不清楚别人的方法到底是在哪里定义的,方法的返回值到底在哪里。

DHH用ruby写出了rails这样的framework,Dave Thomas可以在两个多月里写出5万行的ruby代码。ruby的这些特性对于Dave Thomas来说只有power,而绝没有上述这些困挠。但是come on, 全世界有多少个Dave Thomas?现在大部分的程序员是希望早上九点上班、晚上五点回家,过着幸福的小日子的年轻人,让他们用ruby开发大项目的后果会是怎么的? 我不敢想象。

ruby会成为软件工匠最好的利器,会使很多人有超爽的感觉,但是它究竟能达到什么地步?能不能取代java? 我只能拭目以待了。


阅读(239144) | 评论(0) | 转发(0) |
0

上一篇:做了一个Spring讲座

下一篇:换blog啦

给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册