李刚老师谈Ruby语言的未来
《Ruby on Rails敏捷开发最佳实践》作者李刚
51CTO记者:有人说Ruby简单上手,但是环境的搭建相对比较麻烦,而且在有些平台上不怎么稳定。您对Ruby学习、使用及环境搭建是怎么看的?
李刚老师:个人觉得:Ruby语言上手确实很简单。它甚至不需要你像Java那样定义类,它也不需要你像C那样定义函数,你只要直接写一条puts "Hello World!"语句就是最简单的Hello World。
至于说环境搭建很麻烦,其实也不是,如果你只是安装Ruby解释器,只要登录Ruby官方站点下载一个安装文件进行安装即可。从这个角度来说,搭建Ruby开发环境并不会比Java、PHP、C更复杂。当然,如果要安装一些额外的框架和服务,可能需要花费一些时间和精力,不过总体来说,初学者只要能找到系统的、好的文档和书籍,按照书中内容一步一步地走,搭建环境应该是很简单的事情。
51CTO记者:据我所知,过去一年间Ruby社区的发展比较慢。而对于Ruby框架,很多人只听说过Rails。您对Ruby社区的发展乐观么?能否为我们介绍/推荐一些Ruby开发工具以及框架呢?
李刚老师:其实Ruby语言作为动态、脚本语言的代表,本身也是一门非常优秀的编程语言。通常我推荐每个程序员在静态语言、动态语言都应该有所涉足,所谓他山之石,可以攻玉嘛。如果总是局限于一门编程语言,往往很难真正全面地掌握它,真正了解这门语言所存在的制约和不足。
对于Ruby而言,在国内影响较大的当然是Rails框架了,其实Ruby虽然不像Java拥有那么广泛的开发群体,开源框架也没有Java框架那么活跃。
但实际上仅就Ruby在Web领域的开发框架也不少,比如Merb,它是和Rails非常接近的框架。还有Camping,它是一个非常小巧的微框架(Microframework),使用ActiveRecord作为ORM解决方案;模板系统使用Markaby。通过使用Markaby作为模板语言,允许开发者使用纯Ruby开发HTML模板。
个人觉得Merb的发展思路与Rails是不同的。Rails是一种“一站式”的解决方案,这既是Rails的一个优势:开发者日常开发需要解决的问题,Rails基本上都提供了解决方案。
从某种曾度上来看,这也未尝不是Rails的缺陷:开发者真正能自己选择、控制的部分不多。
比如我只想用Rails的ActionController部分,这很难。从这个角度来看,我觉得Merb的思路对Rails应该有些启发,Merb放弃成为一个大而全的解决方案,现阶段,它可以整合Rails;如果未来有更好的解决方案,Merb也可与其整合。
其实广大Ruby爱好者完全可以登录http://rubyforge.org/softwaremap/trove_list.php看到大量Ruby语言开发的项目。
对于Ruby的未来,我还是比较有信心的。不管是Sun(现已被Oracle并购)的JRuby,还Microsoft的IronRuby,都体现了两大软件厂商对Ruby的信心,而且这两个软件厂商的支持必然让Ruby更流行。
51CTO记者:在前几个月的一次对脚本语言的调查中,Ruby在代码可读性和可维护性这一项得到了相当高的分数。从您对Ruby的了解来看,您认为是什么为Ruby带来了相对较高的代码可读性和可维护性?
李刚老师:如果从代码可读性角度来看,我并不觉得Ruby有多大的优势,而且个人觉得:一份程序的代码可读性只和程序员的素质和态度有关,和语言无关。也就是说,任何编程语言,如果让有良好编程习惯、良好编程素质的程序员认真地写,这份代码总能保持较好的可读性。再好的编程语言,也有可能写出糟糕的源代码。关于程序可读性,我认为关键在于人。
当然,总体来说,高级语言的代码可读性总比低级语言的代码可续行强。
51CTO记者:Web发展的趋势是个人信息都向互联网上流动,因此网站的安全性十分重要。前一阵子听说Ruby解释器及其API库有众多安全缺陷。对于Ruby网站的安全性,您有何见解?
李刚老师:这个问题前段时间也有看到。这种属于语言本身带来的有些缺陷,我们只能等待最新的补丁。
51CTO记者:您认为在未来几年的Web开发中,Ruby最大的优势在哪里(比如它的敏捷)?最大的短板又在哪里(如:可扩展性不佳)?Ruby将会成为一个Web开发的主导语言么?或者,像是Twitter那样的Ruby+Scala模式将会成为更好的趋势?
李刚老师:对于Ruby语言来说,语言简洁、语法随意是它的一个很吸引人的地方。单纯地从代码量的角度来说,Ruby程序的代码量就要小得多。
而且Ruby语言的语法非常随意:就调用方法而言,你既可以用info,也可用info '张三',还可用info('张三' , 24)。