• Ruby and Rails


          前段日子看完了一本《松本行弘的程序世界》,同时在网上检索了一下松本行弘本人,对这位业内前辈佩服得五体投地。既佩服其起对程序的狂热和以及对事业认真负责的态度,又佩服其淡泊名利、秉承开源的精神。

          很自然的,我怀着崇敬的心情,开始了Ruby之旅。

          首先,学的是Ruby语法本身,我被其优雅的语法迷住了,其语法更接近自然语言。我被块表达式迷住了,像数学公式一样简明。

    例如:

    def initialize(title, price_code)

        @title, @price_code = title, price_code

    end

    命名约定造就了简洁与优雅。  唯一构造函数,避免了C++中构造函数导致的一系列问题(operator=, default constrution, copy construction)。

    [[1,2],[3,4]].each do |a,b|

        p [a,b]

    end

    块表达式优雅,简洁,自然。

          我被开放类和猴子补丁给震撼了。 对一个习惯了强类型语言思维的人来说,第一感觉就是太危险了吧。一颗老鼠屎,真的可以坏一锅汤。在一个不起眼的角落,用一下开放类或者猴子补丁,整个后台程序的意义完全改变。

          同时,Ruby给了程序员更大的自由,比ASP.NET中的自动生成的partial 类强大多了。

          开放类也给了程序员更大的掌控能力。我不禁想到了J2EE的Spring框架,这个框架有两大功能:Bean 工厂和 面向切面编程,而以面向切面编程为甚(AspectJ)。而此时,我发现Ruby的开放类原生态支持面向切面编程。

    比如:application()方法是为了完成某一特定功能,现在我需要给application加一个入口日志beforeLog()和出口日志afterLog()。

    我只需要:

    tmp = application;

    application()

    {

        beforeLog();

        tmp();

        afterLog();

    }

    这种方式比Spring使用反射方式实现的切面编程直观简单得多。Spring配置方式作用原理 不禁让我想起了C++的模版,以及其导致的代码膨胀情景。

    我们教研室另一拨人改造Java实现GOP,据说是软件进化编程的一种。我不禁想Ruby是不是更适合做这个。

          然后,学习了一下Rails。

          久闻Rails大名。盛名之下,其实几何。亲自一看才知道。我用我熟悉的J2EE与Rails对比学习。

          J2EE是一个严谨的语言或者框架。同时它可以它可以给程序员一定的自由度和较大的参与度。

          说到这里,我不禁讨厌起ASP.NET,讨厌起微软的一些技术。因为我一直认为微软的产品的宗旨是将用户傻瓜化。比如:Windows与Linux相比,比如ASP.NET与J2EE相比。前者向用户隐藏了太多细节,比如MFC,比如ASP.NET。对于非专业用户这样很好,但是对于程序员,这可是毒药。当初刚学WEB编程时,我发现在ASP.NET2.0上面,你不需要懂HTML,不需要懂SQL,甚至在不懂客户端控件和服务器端控件区别的条件下 可以用 鼠标拖出了一个美观,功能完整的网站。当时,我就吓坏了。

          之后做完本科毕设之后就果断转向J2EE了。

          言归正传,转向Rails与J2EE比较。

          第一:Rails的惯例优先原则太牛了,省掉了海量的配置文件。想想Hibernate中大量的映射文件,想想Struts下的配置文件,以及Spring配置文件造成的多少头疼问题,尤其项目扩展时需要更新大量配置文件该有多头疼。

          其次:rails原生就是依据MVC模式组织的,这样就从根本上规范了项目的架构。

          Model功能上基本与Hibernate对应。但是,rails的Model是build-in的,比Hibernate这个第三方组建更轻量级,更契合。不过Hibernate支持双向映射,表结构<->JavaBean,不知道Rails是否支持从表结构到Model对象的映射。不过还是Java语法严谨,给人心底踏实的感觉。

          Control功能上与Struts2对应。同样,rails的Control是build-in的,而Struts是第三方组件。但是rails的内置的简洁url确实令我大吃一惊。

    例如:rails原生态支持  http://domain.com/show/1  这种简洁url。其中show就是Control中的方法。在J2EE中要实现这个,估计又要寻找第三方组件了。

          rails的View原生支持AJAX,比J2EE使用第三方库DWR方便多了。

          rails的单元测试很强大,竟然可以做登录测试,超出我意料之外。可能是ruby本身是弱类型,所以其安全性强烈依赖与测试,所以测试功能必须完备,测试必须严谨。而Java对测试要求没这么严格。

          J2EE的学习曲线真长。先要学习Java,然后学习JSP+Servlet,然后学习3大框架Hibernate+Struts+Spring, 还需要学习AJAX(JQuery,  DWR等)。尤其在没有人指导情况下学习,学习曲线更长。比如,学完JSP+Servlet之后,根本不知道自己要学习后面的框架,即使想学,也难以下手。

          而学习Ruby + Rails,你会发现这真是一条坦途。一条直路走到底,阅尽一切。岂不畅快淋漓。

           

          夜半随笔,直抒胸臆!

                                                                                                                                                                 Stan Sun

                                                                                                                                                                  2013-4-24晚

    !#Never too late to do it now#!
  • 相关阅读:
    eclipse 异常Unhandled event loop exception
    eclipse序列化生成serialVersionUID
    [转载]给10万pv的WordPress选择最便宜高可用的硬件以及WordPress高并发支持
    struts2日常
    JQuery表格展开与内容筛选
    记一次简单的清理挖矿程序过程
    【原创总结】服务为什么会报404?
    【原创总结】Tomcat进程为什么起不来?
    【原创总结】服务为什么会报500的错误?
    【原创】关于nginx.pid丢失的解决办法
  • 原文地址:https://www.cnblogs.com/harrysun/p/3041515.html
Copyright © 2020-2023  润新知