[RoR小学生] - 不忍直视Ruby的美

     一直以来都想学习一门脚本语言(Scripts Language),很久之前用过Ruby做过一个自动下载源代码,上传编译服务器编译、打包再SCP到发布服务器上的小工具;也用Perl做过一个检查邮件状态的小工具;Python呢是如雷贯耳,加上Google的背后支持,相比前途似锦。其实现在的主流脚本语言大概就是这三种。其中Perl年纪最大,拥有强大的Legacy;Python傍上大款,也有很多社区支持和现有的开发库可用;Ruby最年轻,而且是小日本的产品,随着ROR才开始大热,社区和开源库应该是远不及Perl和Python.

      考虑到Perl年纪较大,虽然不排除在维护类应用方面还有需求,但是IT发展的摩尔定律告诉我,应该放弃Perl。看过很多帖子是Ruby Vs. Python,基本上是公说公有理,婆说婆有理,各抒己见。有的说Python是严谨的语言,有理由阅读,开源库和性能要优于Ruby;有点说Ruby写代码是一种享受,社区也很红火,而且Ruby 2.0改写了虚拟机之后性能大大提升,有测试表明Ruby 2.0之后红黑树的性能是最高的....
      于是我选择了一个很无厘头的理由来选择Ruby....因为我手头正好有一本枕头书--Ruby Programming Language 2nd Edition....,而且Ruby的官方网站看起来比Python的顺眼多了...
      其实之前用过一段时间RoR,最近又看了看Django,这两个框架基本上都能满足快速WEB开发的需求,但是觉得Python在处理ORM的方式上没有Ruby那么优雅...RoR用hasOne,hasMany这样的语法很容易让开发者读懂Model对象之间的关系;Django还在使用比较生涩的Foregin Key。虽然两个框架都是做到数据库透明,但是Django的做法还是需要开发者多多少少具有一定的数据库知识。这也许就是很多帖子里面说到的Ruby很容易上手,但是要掌握、弄懂就必须再深究下去。
      也有人说Python缩进好与Ruby的def...end,并且不喜欢Ruby的一行书写方式...我觉得这是见仁见智的事情了,每个人都有自己的习惯和方式;我个人喜欢有头有尾,同时也觉得必要的缩进有利于阅读;对于可以一行描述清楚的事情,为啥不用一行呢?下面的例子那个看起来更容易阅读和更清新呢?
     
 

      既然选择了Ruby,就要坚持了,刚刚草草看完对象的属性accessor这块,被Ruby里面setter的写法深深的折服....
     
 
     Ruby里面的对象可以用attr_reader/attr_writer快速设置所有属性的accessor(getter/setter)。上图是比较原生的setter写法,竟然是‘属性名=’,太cool了,太形象了...有点点类似运算符重载,又不完全一致,但是你会发现读起来真的很easy!!!
      为了帮朋友写一个应用匆匆忙忙的看到Programming Ruby的第8章 More About Methods。Ruby定义的method也是可以支持可变参数的,在使用*作为前缀的参数就是可变参数。在初次见到这样写法的时候,我心一凉啊,难道我又要面对万恶的指针么?!现在心里有底了...Ruby的可变参数定义比较友好,解析为了一个数组,
 

 
     Ruby比Java更棒的地方在于一个Block可以作为参数传入一个method
 
更多美好的地方等待我去探索啊

你可能感兴趣的:(Ruby)