`
ytfei
  • 浏览: 89626 次
社区版块
存档分类
最新评论

Ruby 初探1

    博客分类:
  • ruby
阅读更多

以下内容来自网络:

 

一、介绍

 

在Ruby中,一切皆是对象。下面举一个例子来更直观地说明Ruby语言的这一特点。

在Java中,求一个数的绝对值的代码如下。 int c = Math.abs(-20); 而在Ruby语言中,一切皆是对象,也就是说“-20”这个数也是一个对象,

因此,求一个数绝对值的Ruby代码形式如下。 c = -20.abs 这样的代码编写方式是不是更形象一些呢?

Rails 框架是一个更符合实际需要而且更高效的Web开发框架,Rails结合了PHP体系的优点(快速开发)和Java体系的优点(程序规整)。

Rails是一个全栈式的MVC框架,换句话说,通过Rails可以实现MVC模式中的各个层次,并使它们无缝地协同运转起来。 

在实际开发一个MVC模式的Web应用项目时,如果使用Java开发,需要用到Struts、Hibernate和Spring等框架,而且需要额外整合3个框架开发出的内容。而使用Ruby语言开发相同的项目时,只需要用到Rails框架就可以完成。

RoR的效率肯定要比Java高一个数量级,这确实是事实,比PHP至少也要高好几倍,这也是事实,这一点在这篇文章中不展开了,

但是为什么开发效率这么高,我也想谈谈我的看法,当然还很不成熟的看法:

一、主要原因是ruby语言的语法非常强大我记得庄表伟说过一个观点:“框架是强化的语法”,意思就是说语法比较弱,所以才需要n多框架,如果语法很强,框架就很少。

这一点在Java和ruby身上得到了验证。

1、ruby的open class VS Java的AOP,反射、动态代理,字节码增强等技术JDK1.3开始引入反射,

就已经打开了Java这种静态类型语言通往动态类型语法的潘多拉魔盒。随后的动态代理技术,字节码增强技术,

静态和动态的AOP技术开始层出不穷,为什么呢?就是需要在程序运行期动态改变对象的行为。但是对于ruby来说是open class的,

语法级别上就支持程序运行期修改对象行为,所以Java需要很复杂技术才能实现的功能对于ruby来说就是非常简单的搞定了。

2、ruby的duck typing VS Java的IoC,泛型Java的IoC不用说了,泛型在库级别也开始广泛使用。IoC就是根据对象行为来进行对象组装,

泛型就是在不确定对象行为的情况下确定对象的交互。但是ruby的对象行为是在运行期才确定的,天然就是泛型的,行为不是静态的,所以不需要IoC。

3、ruby的block,closure VS Java的匿名内部类大家对spring的Template肯定印象很深刻,但是这是ruby标准的用法,所以各种资源释放,

异常处理在语法级别上就支持的很好,做起来很简单。

4、ruby的Meta programming VS Java缺乏method_missing机制大家耳熟能详了,Java没有这么强的Meta programming,很多ruby magic耍不出来。

5、脚本语言 VS 编译语言这也是一个很大的优势,脚本编程速度确实快。

 

二、rails框架确实做的很棒

1、full-stackrails是一个概念一致的fullstack框架,不知道为什么,在Java世界目前只有Rife这一个可以和RoR相提并论的fullstack框架,

但是Rife的实现并不好(作者从PHP转过来的,和DHH爆发过口水战)。不过因为底层语法支持的不同,用Java是做不出来RoR框架的。

因此也有人用Groovy做Grails,不过这帮人不太争气。

2、CoC这个不用说了,现在很多Java框架开始吸收这一点。

3、为web开发良身打造web开发需要用到各种技术全部提供,绝对的贴心,如果用Java,这些东西都需要自己集成或者自己实现,省了一大堆麻烦事。

4、开发测试部署快速这个不说了,Java劣势太明显了关于“效率提高的来源”问题,我的理解就是次要复杂性被ROR降低到了极致。

说的难听一点,不是ROR太聪明,而是我们以前做得蠢事太多了。

各种各样的xml, taglib,单元测试困难 ... ...做过项目的人都知道这些次要复杂性很多情况下真的是要命的。

ROR没有降低软件的内在复杂性,也就是业务问题。但是它把复杂性降低到无限趋近于业务复杂性,也有人称ROR是Web开发的DSL。

而解决业务问题正是人发挥聪明才智的地方,ROR不能代替人,但是它把人从次要复杂性的泥潭之中解救了出来。 

参考资料:南京赛威信息科技

 

 

二、

学习书籍推荐:http://www.iteye.com/topic/107479 

分享到:
评论

相关推荐

    使用Ruby on Rails开发LBS网站初探示例代码

    这几天一直在学习使用RoR(Ruby on Rails),想建立一个功能全面一点的LBS(Location Based Service)网站。但是对于我这个RoR的初学者(仅有几天时间)来说,毕竟太复杂了。因此本文试图简化原来的设计思路,抛弃一切...

    Ruby基础语法初探

    这两种形式的区别在于,当构造字面量时,Ruby对字符串所做处理的多少有所不同。Ruby对单引号串处理得很少。除了极少的一些例外。键入到字符串字面量的内容就构成了这个字符串的值。 Ruby对双引号字符串有更多的处理...

    初探ROR

    1. ActiveRecord:Ruby on Rails的ORM框架,通过简单的Ruby代码即可完成复杂的数据库操作。 2. Active Record查询接口:提供了丰富的查询语法,如链式查询和条件查询。 3. Testing:Rails内置测试框架,包括Unit ...

    rack教程(ruby)

    #### 1. 什么是Rack? Rack是Ruby世界中的一个轻量级、灵活的Web服务器接口规范,它定义了一个统一的标准,使得Ruby Web应用能够与不同的Web服务器无缝集成。Rack简化了Ruby Web应用的部署过程,同时也提供了强大的...

    ruby_with_head_first

    《Ruby编程语言初探——以Head First风格学习》 Ruby是一种动态、面向对象的脚本语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年设计并开发。Ruby的设计理念强调程序员的生产力和代码的可读性,它将简单性和...

    ruby-assignment-3

    《Ruby编程语言在RottenPotatoes演示应用中的实践——初探Rails Intro》 在IT行业中,Ruby作为一种简洁、优雅的编程语言,因其强大的Web开发框架Ruby on Rails而广受开发者喜爱。本篇将深入探讨一个名为"ruby-...

    selenium+junit+hudson自动化测试初探

    【Selenium自动化测试初探】 本文旨在探讨如何利用Selenium、JUnit和Hudson构建一个自动化测试框架。Selenium是一款强大的开源Web功能测试工具,支持多种编程语言,如Ruby、Python、Java、Perl和C#。它能直接在...

    prohunter:这是我使用Ruby on Rails的第一个投资组合

    《Ruby on Rails初探:构建ProHunter投资组合》 Ruby on Rails(简称Rails)是一种基于Ruby语言的开源Web开发框架,以其MVC(Model-View-Controller)架构、DRY(Don't Repeat Yourself)原则以及“Convention over...

    基于C语言的自定制脚本语言设计方法初探.pdf

    文中提到的Crowbar语言,是一种静态无类型的语言,与Perl、Ruby、Python等解释型脚本语言有一定的相似性。其特点是无需声明变量类型,编译器在变量初值赋予的过程中,自动处理了变量声明。而变量的命名规则要求变量...

    基于SVM的哈萨克语文本分类初探

    这篇文章标题为《基于SVM的哈萨克语文本分类初探》,描述部分信息不完整,但根据标题可以推测文章主要研究了如何利用支持向量机(SVM)算法进行哈萨克语文本的分类工作。SVM是一种常见的机器学习算法,广泛应用于...

    PersonalBlogV1

    《PersonalBlogV1:Ruby构建个人博客初探》 在当今互联网时代,个人博客成为许多技术爱好者、作家、学者分享思想、记录生活、传播知识的重要平台。"PersonalBlogV1"项目就是一个基于Ruby语言构建的个人博客系统,...

    雨松MOMO程序研究院

    FingerGestures研究院之初探Unity手势操作(一) iTween研究院之学习笔记Move移动篇(一) Android研究院之应用程序对话框大合集(一) Cocos2D研究院之构建游戏开发环境(一) Direct3D研究院之创建第一个...

    javaeye热点阅读

    1. Java 5 Concurrent包中的锁机制:Java 5引入了Concurrent包,它为多线程编程提供了丰富的工具和类,如`java.util.concurrent.locks`包中的锁机制,包括可重入锁、读写锁等,极大地提高了并发性能和开发效率。...

    每日E测第四期.pdf

    性能测试用例设计初探 这一章节可能会讨论性能测试的基本概念、设计思路以及具体的测试案例。例如: - **性能测试的目标**:识别系统瓶颈,优化性能指标。 - **测试用例设计原则**:确保测试覆盖全面,结果准确...

    Artist-Rails-App:这是我的第一个Rails应用程序,其中我创建了两个脚手架并将它们连接在一起

    《初探Rails应用:Artist与Tracks的交互》 在编程世界中,Ruby on Rails(简称Rails)是一款基于Ruby语言的开源Web开发框架,以其“约定优于配置”(Convention over Configuration)的理念深受开发者喜爱。本篇...

    chefspacerepo

    【标题】:“chefspacerepo”初探:基于JavaScript的配置管理实践 【描述】:在当前的IT环境中,自动化运维和配置管理扮演着至关重要的角色。"chefspacerepo"似乎是一个针对这方面需求的项目,尤其适用于那些希望...

    python学习源码和开发应用技术

    - **Python_3_初探**:适合想要了解Python 3新特性的学习者,通过对比Python 2版本的不同之处,帮助读者更好地适应新版语言的变化。 - **Python_Pro编程_FAQ**:汇集了常见的Python编程问题及其解答,是解决实际编程...

    FullStack:这是我的第一个全栈Web应用程序

    在这个“FullStack:这是我的第一个全栈Web应用程序”项目中,开发者可能初探了全栈开发的各个环节。 全栈Web开发的关键在于理解并掌握多种技术,包括但不限于HTML(超文本标记语言)、CSS(层叠样式表)和...

Global site tag (gtag.js) - Google Analytics