ruby on rails
工作需求,开始写ruby,因为基于web也就自然用上了rails。就这样开始接触ruby on rails,在已有代码的基础上很快就能上手开发了。刚开始对ruby可能有各种吐槽,不过写习惯了之后真心觉得ruby语言本身挺不错的,比Python的语法舒服多了呢。
刚开始
安装ruby真的够麻烦!装Java只要双击JDK然后配置环境变量即可;装Python只要双击python.msi然后配置环境变量即可;写这篇文章的时候我已经忘了怎么安装ruby了…只记得很麻烦,倒腾了很久! 而且安装ruby的mysql驱动更是麻烦,win至今没装上,linux的也很麻烦!
ruby语言本身相比于其他脚本语言的确难很多,语法略晦涩难懂。
和Python类似,改了很多关键字,让熟悉静态语言的编程者不太习惯,尤其是elsif;next取代了continue;rescure取代了catch
ruby的对象在外部,没有“属性”这个概念,只有方法!只有在类内部才有属性和本地变量。惊呆了
ruby的拟态函数,看着就像一条命令,着实让新手期的我非常困惑,一个不带()的函数名加一个空格后的参数;完全找不到函数的定义,可能在某些module中,可能根本没有函数体是个用rails的has_many或者named_scope动态定义的函数…模块定义的函数,实例函数和静态函数也傻傻分不清楚。
虽说Ruby和Java一样是纯OOP的语言,但是OOP的特性又很不一样,Ruby甚至不怎么推荐OOP的做法。
渐渐地
有点喜欢ruby了
- 函数名不带括号感觉很省事,导致写js的时候老忘了括号
- 类似
return nil if params[:id] == nil
的一行代码,还可以render_error and return [ if xxx ]
,感觉太棒 - 遍历list/hash是那么方便
- 函数随意带block,自定义化程度非常高
- rails是那么的强大,写web是那么的方便
rails和web
写web,静态语言就Java(.Net不熟),脚本语言比较多:PHP、Python、Ruby,基本以这些为主流。Java不必说,太复杂开发效率低;PHP最灵活方便,但是没有一个好用强大的框架支持,功能复杂就显得力不从心;Python基于web写的不多,10年的时候用过Django,只能说一般般,现在不知道怎么样了,公司里也有同事在用Python写web,但感觉明显没有rails爽。
- rails的ORM强大到没有朋友
- 对ruby核心库的加强(ruby可以往原有类中直接加入API,不需要像Java中Apache类库的StringUtils那样用新的类)
- view层面太方便的嵌套片段HTML;对ajax支持很好
- debug方便,不仅方便地打印出所有SQL和模板加载,甚至有加载时间,优化起来很顺手
深深的觉得,没有了rails,ruby真心没有太多闪光的地方…大概这也就是为什么ruby一直和rails绑定的关系吧
ruby和rails的不足
用到现在,受Java的影响,觉得ruby在以下几个方面用的还不是很灵活不习惯。很大程度上应该是自己对ruby和rails的了解还不够深入。
- 继承体系:没有丰富的继承体系,OOP怎么体现优势?但是感觉rails中,写rails的Model时候,很难使用到完全自定义很灵活的继承体系。或者说Ruby的理念就不怎么喜欢用继承体系,更喜欢用Module的扩展甚至打开类技术。
- 数据结构库不丰富:只有内置的list/hash,对于常用的LinkedList、OrderedHashMap、HashSet等替代实现没有找到