2006年09月04日

     最近在看Ruby的东西,虽然我是一个一直用Java的程序员并且适用Python也有2年了,但是还是禁不住诱惑去看看这个被大家吵了很久的Ruby。最近一周简单看了一下,发表一些个人的看法,只说说优点吧,毕竟接触时间太短不敢妄加评论。
    我觉得Ruby一个最大的优点就是它把某种约定当成了语法的一部分,比如变量的命名,类的命名都通过特殊的符号和大小写来进行了约定,对于异常处理也进行了简化,只有rescue和ensure。再说说Ruby on Rails 同样是作了很多约定,把应用严格的分层那而且定义了路径。给人的第一感觉是“简单”,但是是否不够灵活?指南是仁者见仁,智者见智了。我认为对于中小型应用,或者追求快速开发的应用,这种约定是可去的,而且确实达到了简化的目的。至于是否适合大型的应用就不好说了。另外一个值得称道的就是Ruby中对闭包的支持,可以说是Ruby中的一个亮点,尤其是后续版本中闭包几乎成了Ruby中不可缺少的部分。
    最后说一点对Ruby的担心,尤其是对于准备把Ruby利用到新的项目中的人。我觉得Ruby的支持库还是太少(也许是我了解的少),它不像Java、Python这样的语言,由于发展事件较长而且适用的开发人员也很多(几乎所有的Linux中都内置了Python),所以相应的支持库非常多,而Ruby就显得相对较弱了。这也是为什么我认为它不适用于大型的开发应用中。
    有关Ruby的一些看法就是这些,你有什么不同的意见大家不妨探讨一二。

2006年09月03日

     今天看了一部分Ruby文档,Ruby是一个面向对象的脚本语言,和其它面向对象的语言非常类似,现在把自己理解的一些相似之处记下来:

  1.    Ruby中没有{}:这是和Java比较的Java中类或者方法都需要通过一对{}括起来,Ruby中适用的是def ….end的格式,包括if和while等条件和循环语句也是以end作为结束标志。和Python不同他没有语法缩进的要求(我比较喜欢这一点,懒吗)。
  2.   没有;:和Python中一样没有;作为语句的结束标记。
  3.   类定义 :和其它面向对象语言一样通过class关键字来定义类,同样以end作为结束。
  4.   #作为注释标记:所有以#开头的行都会被解释器忽略。
  5.  数组和哈希表:Ruby和Python一样有数组和哈希表(Python中叫字典)
  6. 函数定义通过def开始
  7. Ruby中不需要声明变量的类型。
  8. Ruby中有闭包的功能(或者叫代码块),它可以当作参数来传递。
  9. 方法中传入的变量可以通过#{变量}来引用,有点类似jsp中的<%=变量%>方式。
  10. 全局变量用美元符作为前缀($),而实例变量用@开头,类变量用两个@开头。
  11. initialize方法是一个特殊的方法,它是类的构造函数,类似与Python中的__init__方法。
  12. Ruby 的继承是通过<符号实现的,Java中用的是extends关键字而Python是通过(:超类)的方式来实现的。
  13. Ruby设置类对象属性字段是否可读的方法是attr_reader和attr_writer,这类似于java 中的setter和getter
  14. Ruby 中的对象有to_s相当于Java中的toString(),to_i相当于Java中的Integer.valueOf(Object),都是用于类型的转换,相信还有其它转换方法,具体可以查看API文档。
  15. Ruby中的数字长度是没有限制的,内存越大数字长度越大。
  16.  Ruby 中的异常 通过rescue 和ensure来实现,这两个关键字相当于Java中的exception 和finally。
  17. Ruby 中的文档工具适用ri 类名或方法名。这个工具类似于Python中的help(类名)。
  18. Ruby 中一个类似Python的命令行交互工具是irb。通过键入这个命令你可以在控制台直接写脚本并查看输出结果。

今天先记录这些,以后在逐渐增加吧。