ozzzzzz 写道
本来这个星期我该开始讨论软件危机的问题了。但是这几天我忽然发现,ROR这个烫手的东西带给我们不可思议的效率,这个提高的来源究竟是来自何处,是一个目前很少有人讨论过的问题。而如果我们可以搞明白这个原因,我们对于今后技术和方法学发展的方向将有莫大的好处。
而由于我对于这个问题的结论还没有足够的实际例子做证据,因此我就不着急发言了。
我在2005年4月就听说RoR了,还看了他那个scaffold的例子,本来我对RoR也是持否定态度的,但是2006年在JavaEye有几个讨论打消了一些我的置疑,后来就开始用RoR了,这些讨论是:
http://www.iteye.com/topic/18675
http://www.iteye.com/topic/19534
http://www.iteye.com/topic/20298
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-stack
rails是一个概念一致的fullstack框架,不知道为什么,在Java世界目前只有Rife这一个可以和RoR相提并论的fullstack框架,但是Rife的实现并不好(作者从PHP转过来的,和DHH爆发过口水战)。
不过因为底层语法支持的不同,用Java是做不出来RoR框架的。因此也有人用Groovy做Grails,不过这帮人不太争气。
2、CoC
这个不用说了,现在很多Java框架开始吸收这一点
3、为web开发良身打造
web开发需要用到各种技术全部提供,绝对的贴心,如果用Java,这些东西都需要自己集成或者自己实现,省了一大堆麻烦事。
4、开发测试部署快速
这个不说了,Java劣势太明显了
暂时想到就这么多吧。
分享到:
相关推荐
总之,RoR性能优化是一个全面的过程,涵盖从操作系统到Web服务器配置,再到代码本身的改进。每个环节的优化都能显著提升网站的运行效率,使RoR应用能够更好地应对高负载和大规模用户的需求。通过学习和实践这些经验...
Ruby on Rails(RoR)是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。RoR强调“约定优于配置”,提供了一套完整的工具链,使得开发者...
`activesupport-1.4.4.gem`是这个库的一个旧版本,但依然包含了大量提高代码可读性和效率的工具。 `actionmailer`是Rails用于发送电子邮件的组件,它允许开发者用Ruby编写邮件逻辑,处理SMTP服务器的连接和邮件发送...
NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696
Ruby on Rails(简称ROR)是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在促进开发过程的简洁性和效率。Ruby on Rails的核心理念是“Don't Repeat Yourself”(DRY,...
"ror实例"可能指的是在学习或实践中,通过创建一个具体的Rails应用程序来理解和掌握RoR的工作原理和最佳实践。 在Ruby on Rails中,重要知识点包括: 1. **Gemfile与Gemfile.lock**:项目中的Gemfile用于指定项目...
ResNet的核心是引入了“残差块”(Residual Block),通过引入一个恒等映射(Identity Mapping)的跳跃连接(Skip Connection),使得网络能够更轻松地学习到输入数据的微小变化。在每个残差块中,输入信号可以直接...
另一个关键组件是ActionController,它处理HTTP请求并返回响应,是连接模型和视图的桥梁。 RoR的"Convention over Configuration"(约定优于配置)哲学使得开发更为简洁高效。例如,它规定了文件和目录的命名规范,...
标题 "我的ror的第一天" 暗示了这是一个关于Ruby on Rails(简称RoR)的初学者经验分享,RoR是基于Ruby语言的开源Web应用框架,它遵循MVC(模型-视图-控制器)架构模式,使得开发过程更加高效。 在描述中提到的...
基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。
- **第一天**:安装配置、哲学思想与MVC模式、创建第一个应用。 - **安装**:介绍了适用于不同操作系统的安装方法,包括InstantRails(Windows)、Locomotive(OSX)、MacPorts以及从源码安装(Linux)等。 - **...
- **DevKit作用**:DevKit是一个扩展库,用于增强Ruby的功能,尤其对于编译扩展模块非常有用。 - **下载与安装**: - 访问<http://rubyinstaller.org/downloads> 下载DevKit安装包(例如:DevKit-tdm-32-4.5.2-...
在给定的示例中,使用MySQL数据库创建了一个名为`records`的表,其中包含两个关键字段:`name`和`person`。`name`字段用于存储上传文件的名称,而`person`字段则是一个`MEDIUMBLOB`类型,用于保存上传文件的二进制流...
在命令行中输入`rails new project_name`,其中"project_name"是你项目的名称,这将生成一个完整的ROR项目结构。 为了实现更好的开发体验,我们需要集成IDE或代码编辑器。这里我们关注的是Eclipse。Eclipse是一款...
"ror留言板程序"是一个基于Ruby on Rails框架开发的简单应用,它主要用于实现用户在网站上留言和查看他人留言的功能。Ruby on Rails(简称RoR)是用Ruby语言编写的开源Web应用程序框架,遵循MVC(Model-View-...
TDD(测试驱动开发)也是RoR强调的一个重要方面,它鼓励开发者先写测试,再编写满足测试的代码,确保软件质量。 Rails社区活跃,拥有丰富的插件和gem(Ruby的库包),如Devise用于身份验证,CanCanCan进行权限控制...