2009年8月31日星期一

Ruby

Ruby

----------------------
LinFeiYu 2009,08,30

相信很多人开始接触 Ruby 都是从 Ruby on Rails 开始的。我就是这样子来的。
维基百科上介绍 Ruby on Rails 的历史上是这样说的:“于2004年7月,Rails 的创始人David Heinemeier Hanson从 37signals 公司的项目管理工具 Basecamp 里面分离出 Ruby on Rails,并且以开源方式发布。”于是对这个框架更加的有亲切感。为什么呢?因为公司的项目管理 SaaS 应用正是从 Basecamp 那里模仿汉化而来的。刚才偶尔翻阅旧文章时候发现了一篇介绍项目管理的文章:项目管理工具推荐:Redmine和DotProject ( http://www.kuangfeng.cn/blog/?p=1846 ) 。其中的 Redmine ( http://www.redmine.org/ ) 莫非就是由此而来?呵呵 :-)

学习 Ruby on Rails 当然要熟悉 Ruby 这个基本语言了。然而跟 Python 一样,中文资料还是比较缺乏的。刚又看了一个面向 Java 程序员的 Ruby 语言介绍: 脱离 Rails 看 Ruby ( http://www.ibm.com/developerworks/cn/java/j-ruby/ ) 。这篇文章中提到的 Ruby 的三个特色给我留下的印象比较深刻。

首先是迭代。 IBM developerWorks 的这篇文章中提到:“ Ruby 中支持 each 方法的任何类(比如 File)都允许以这种方式进行迭代。” Ruby 的 each 方法比较酷!而且非常常见,比如你在 Ruby on Rails 第一个教程中就可以看到它的身影。跟 Python 的链表推导式(List Comprehensions)相比复杂了一点点,还是比较好用好理解的。
Python 的链表推导式支持条件判断,那是相当的有用的。而 Ruby 也有,不过 Ruby 不仅用了 if 语句,还用到一个叫 unless 语句,估计比 Python 强一点点。可能就是在迭代出现符合条件的时候 break 跳出循环。
另外一个就是多态性了。在 Python 中我好像没找到多态性这个面向对象特性,因为默认情况下 Python 没有接口功能。尽管 zope 的组件思想中以接口为中心设计,而且把 zope 组件当成是 Python 组件,但是纯 Python 中并没有这个东西。而这篇文章中说 Ruby 中也不存在接口,但是却存在接口的功能,而且 Ruby 中的多态性只是对方法名进行匹配的问题。这是非常有趣的事情。

目前尚未真正接触 Ruby ,所以几乎一无所知。然而正如 IBM developerWorks 的这篇面向 Java 程序员的 Ruby 介绍文章中所提示的,掌握多种语言有非常多的好处。

关于 Python 和 Ruby 的细节比较,这里有一篇非常详细的介绍文章:Python vs Ruby ( http://regebro.wordpress.com/2009/07/12/python-vs-ruby/ )
确实地, Python 是一种非常优雅的语言。

关于 Ruby 的一个 web 服务器 Mongrel 作者的访谈录的中文翻译: 对SCGI/Mongrel的作者的访谈(关于Rails企业级应用、放弃SCGI等的言论) ( http://www.javaeye.com/topic/49543 )
其中提到的 “企业级应用” 这样的问题,在 Python 中也是非常的有争论的。比如在某些人的眼中,zope 就被定义为类似于 J2EE 等的 “企业级应用” ,而像 Django 等快速开发框架却被认为属于小型应用框架。然而, Django 之类的快速开发框架在 Python 社区的火爆,相对于 zope 的冷落没落,我们似乎应该改变些看法。也许只有当我们认真地去了解 Django 等快速开发框架之后我们才能作最后的结论!

没有评论:

发表评论