`
javafenger
  • 浏览: 249538 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Ruby创造的奇迹

阅读更多
 

 

Ruby on Rails诞生于7月,创始人浪漫的用七月的诞生石红宝石(Ruby)为它命名。在Web领域,Ruby真的是软件开发的“银弹”吗?

Ruby on Rails是Web应用开发领域的一个奇迹,这个诞生于2004年7月的Web开发框架在短短两年时间内已经成为引领Web应用变革的旗手,在软件开发领域掀起了无数的波澜。

Ruby on Rails一诞生就号称可以达到J2EE开发速度的10倍,被很多人视为软件开发的银弹;刺激了一大群模仿Ruby on Rails的开发框架如雨后春笋般的涌现出来。

软件开发界的奥斯卡2005年Jolt Award颁奖礼,RoR出尽了风头。Rails框架的作者David Heinemeier Hansson(以下简称DHH)当选由Google,Yahoo,O'Reilly等业界巨头主办的2005开源软件OSCON年度最佳黑客(Hacker of the Year at OSCON),就足以说明Rails框架在当今Web开发领域所取得的巨大成绩和广泛认同了。

此外,RoR吸引的并不仅仅是开发人员的目光,2006年《连线》杂志使用了DHH的大幅照片作为封面人物,报道了RoR所取得的成就,在《连线》的封面上,DHH身穿《骇客帝国》中Neo的连身黑衣,仿佛化身为软件开发领域的领航者,以拯救软件领域众生的姿态出现。

与此同时,Rails社区正在以惊人的速度增长,社区的活跃程度也完全可以用火爆来形容,2005年2006年连续两年举办的Railsconf更是成为了Rails开发者和爱好者的盛会。为什么RoR能够成就这些奇迹呢?

Rails威力的源泉

Ruby是一种面向对象的动态脚本语言,由日本人松本行弘(Matsumoto Yukihiro)在1993年创造,1995年Ruby正式发布第一个版本。自从2000年《Programming Ruby》(俗称“镐头书”)的出版,Ruby开始在全球范围引起关注。但是让Ruby得以迅速推广的催化剂正是由于Rails框架的推出和互联网Web2.0时代的来临。

Ruby之所以能够创造出Rails这样的框架,与其动态面向对象语言的诸多强大能力是分不开的:

脚本语言

不需要编译过程,可以直接运行,因此可以大大加快编写-部署-运行的过程,提高开发速度,脚本语言的这一优势是编译语言很难逾越的。

动态语言

对象的类别可以在程序运行期被动态的改变,动态语言的特性使得Ruby的能力变得异常强大。而Java则不具备这种能力,在程序运行期无法动态改变这个对象的行为。虽然Java也逐步引入了动态反射和代理机制,期望为Java的对象在运行期织入更多的行为,从而提供更加强大和灵活的功能。

Java领域的所有这些努力其实正是AOP(面向方面编程),这几年来Java的AOP编程得到了长足进步,也一直是Java领域的热点技术之一。不过对于Ruby来说,由于语言本身具备的动态能力,所以根本不需要AOP,Ruby自身的动态能力就比任何Java AOP框架提供的能力都要强大、灵活和方便的多。

不需要指明对象

形象的说法就是:如果一只动物走起路来像鸭子,而且叫声也像鸭子,那我们就认为它是一只鸭子。

在Java语言中,一个对象的行为是由这个对象的类所实现的接口所定义的,这个接口指明了该类型应该具备什么样的行为,即类型决定行为。

但是对于Ruby来说,恰恰反过来,是行为决定类型,而不是类型决定行为。一个对象在程序运行期表现出来是什么行为,那么他就是什么类型。因此,Ruby不需要接口,也不需要IoC容器。

Ruby还有很多有趣而强大的功能,这些功能比Java要强大和简单的多,而Rails框架的威力正是来自于Ruby语言这些远远超越了Java的强大能力。

Rails为什么这么流行?

Rails框架的诞生颇有传奇色彩:Rails的作者DHH在2003年的时候还是丹麦的哥本哈根大学本科生,在接触Ruby语言之前,仅有两年的PHP编程经验和一个J2EE毕业设计项目的经验。当时DHH接到美国芝加哥的37signals公司的邀请,帮助37signals开发一个基于Web的项目协作管理软件——basecamp。DHH在朋友的推荐下决定使用Ruby来开发这个Web项目,在4个月之后,DHH完成了basecamp的开发。在这之后,DHH将应用在basecamp当中自己编写的底层框架剥离出来,命名为Ruby on Rails,于2004年7月正式发布,随后Rails引发了整个Web开发领域的地震。是什么让Rails具备如此大的魔力呢?

开发速度惊人

Rails宣传是J2EE开发速度的10倍,这并非夸夸其谈,根据笔者自己开发的实际经验,和来自其他Rails开发人员的反馈,Ruby on Rails确实可以达到Java开发Web项目10倍左右的效率,即使不很熟悉Rails的开发人员也往往可以达到Java5倍的开发速度。10倍的速度意味着本来10个月完成的工作,现在只需要1个月就可以完成,生产力能够得到10倍的提高,想不引起轰动确实不太可能了。

开发代码量非常少

用Rails开发,项目的代码量非常少,一个比较典型的看法是,Rails项目的代码量是Java项目代码量的1/4左右。也许这个算法包括了页面代码在内,根据笔者的实际经验,不统计页面代码,只统计后台程序代码,Rails项目的Ruby代码和配置只有Java项目的Java代码和XML配置行数的1/10。

项目代码量的大幅度减少不但可以有效加快开发速度,而且可以大幅度降低项目维护的成本,毕竟维护5000行代码和维护50000行代码相比,维护成本不是等比增加的,而是指数增加的,最后,对于开发者来说,面对5000行代码的心理压力和面向50000行代码的心理压力也不可相提并论,在轻松愉快的心情下,软件的代码质量也会非常高。

 

 

简单就是美

对于一个Java开发者来说,要具备熟练运用主流框架开发Web项目的能力,至少需要培养6个月时间,但是一个Ruby开发者,要熟练运用Rails框架开发Web项目,至多一个月足够了。学习门槛大大降低了,开发人员的培养周期大大缩短,这也是为什么Rails能够在短短两年时间迅速流行的主要原因之一,只有越简单才能迅速让更多人掌握。

Web 2.0推波助澜

Ruby on Rails本身就是为了开发典型的Web2.0应用而生的,因此Ruby on Rails就像是为Web2.0网站开发量身打造一般,迅速得到了众多Web2.0网站开发者的青睐。随着Web2.0时代的来临,RoR自然而然占据了Web开发者的眼球。

当然也有人怀疑脚本语言是不是能够完成企业级的程序开发,编译语言的静态编译检查其实没有想像中那么可靠,随着Java项目中大量使用AOP,动态代理技术,字节码增强技术,实际上已经严重破坏了编译检查带来的安全保证。

通过Rails开发项目实践,并没有发现脚本语言在这方面带来多少困扰。反而由于脚本语言编程简单,所以能够明显提高软件代码的质量。

Rails创始人在介绍RoR

RoR与J2EE的形象对比

 

 

分享到:
评论

相关推荐

    漫画作品与时间旅行题材.doc

    漫画作品与时间旅行题材

    基于SpringBoot框架的的在线视频教育平台的设计与实现(含完整源码+完整毕设文档+PPT+数据库文件).zip

    Spring Boot特点: 1、创建一个单独的Spring应用程序; 2、嵌入式Tomcat,无需部署WAR文件; 3、简化Maven配置; 4、自动配置Spring; 5、提供生产就绪功能,如指标,健康检查和外部配置; 6、绝对没有代码生成和XML的配置要求;第一章 绪 论 1 1.1背景及意义 1 1.2国内外研究概况 2 1.3 研究的内容 2 第二章 关键技术的研究 3 2.1 相关技术 3 2.2 Java技术 3 2.3 ECLIPSE 开发环境 4 2.4 Tomcat介绍 4 2.5 Spring Boot框架 5 第三章 系统分析 5 3.1 系统设计目标 6 3.2 系统可行性分析 6 3.3 系统功能分析和描述 7 3.4系统UML用例分析 8 3.4.1管理员用例 9 3.4.2用户用例 9 3.5系统流程分析 10 3.5.1添加信息流程 11 3.5.2操作流程 12 3.5.3删除信息流程 13 第四章 系统设计 14 4.1 系统体系结构 15 4.2 数据库设计原则 16 4.3 数据表 17 第五章 系统实现 18 5.1用户功能模块 18 5.2

    PyTorch入门指南:从零开始掌握深度学习框架.pdf

    内容概要:本文作为PyTorch的入门指南,首先介绍了PyTorch相较于TensorFlow的优势——动态计算图、自动微分和丰富API。接着讲解了环境搭建、PyTorch核心组件如张量(Tensor)、autograd模块以及神经网络的定义方式(如nn.Module),并且给出了详细的神经网络训练流程,包括前向传播、计算损失值、进行反向传播以计算梯度,最终调整权重参数。此外还简要提及了一些拓展资源以便进一步探索这个深度学习工具。 适用人群:初次接触深度学习技术的新学者和技术爱好者,有一定程序基础并希望通过PyTorch深入理解机器学习算法实现的人。 使用场景及目标:该文档有助于建立使用者对于深度学习及其具体实践有更加直观的理解,在完成本教程之后,读者应当能够在个人设备上正确部署Python环境,并依据指示独立创建自己的简易深度学习项目。 其他说明:文中所提及的所有示例均可被完整重现,同时官方提供的资料链接也可以方便有兴趣的人士对感兴趣之处继续挖掘,这不仅加深了对PyTorch本身的熟悉程度,也为未来的研究或者工程项目打下了良好的理论基础和实践经验。

    古镇美食自驾游:舌尖上的历史韵味.doc

    古镇美食自驾游:舌尖上的历史韵味

    基于人工神经网络(ANN)的高斯白噪声的系统识别 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    漫画作品与神话传说融合.doc

    漫画作品与神话传说融合

    实时电价机制下交直流混合微网优化运行方法 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    ADC推理软件AI程序

    ADC推理软件AI程序

    漫画作品与科幻元素融合.doc

    漫画作品与科幻元素融合

    【电缆】中压电缆局部放电的传输模型研究 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    基于人工神经网络的类噪声环境声音声学识别 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    多约束、多车辆VRP问题 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    基于麻雀搜索算法(SSA)优化长短期记忆神经网络参数SSA-LSTM冷、热、电负荷预测 附Python代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    java-springboot+vue景区民宿预约系统实现源码(完整前后端+mysql+说明文档+LunW+PPT).zip

    java-springboot+vue景区民宿预约系统实现源码(完整前后端+mysql+说明文档+LunW+PPT).zip

    56页-智慧园区解决方案(伟景行).pdf

    在智慧城市建设的大潮中,智慧园区作为其中的璀璨明珠,正以其独特的魅力引领着产业园区的新一轮变革。想象一下,一个集绿色、高端、智能、创新于一体的未来园区,它不仅融合了科技研发、商业居住、办公文创等多种功能,更通过深度应用信息技术,实现了从传统到智慧的华丽转身。 智慧园区通过“四化”建设——即园区运营精细化、园区体验智能化、园区服务专业化和园区设施信息化,彻底颠覆了传统园区的管理模式。在这里,基础设施的数据收集与分析让管理变得更加主动和高效,从温湿度监控到烟雾报警,从消防水箱液位监测到消防栓防盗水装置,每一处细节都彰显着智能的力量。而远程抄表、空调和变配电的智能化管控,更是在节能降耗的同时,极大地提升了园区的运维效率。更令人兴奋的是,通过智慧监控、人流统计和自动访客系统等高科技手段,园区的安全防范能力得到了质的飞跃,让每一位入驻企业和个人都能享受到“拎包入住”般的便捷与安心。 更令人瞩目的是,智慧园区还构建了集信息服务、企业服务、物业服务于一体的综合服务体系。无论是通过园区门户进行信息查询、投诉反馈,还是享受便捷的电商服务、法律咨询和融资支持,亦或是利用云ERP和云OA系统提升企业的管理水平和运营效率,智慧园区都以其全面、专业、高效的服务,为企业的发展插上了腾飞的翅膀。而这一切的背后,是大数据、云计算、人工智能等前沿技术的深度融合与应用,它们如同智慧的大脑,让园区的管理和服务变得更加聪明、更加贴心。走进智慧园区,就像踏入了一个充满无限可能的未来世界,这里不仅有科技的魅力,更有生活的温度,让人不禁对未来充满了无限的憧憬与期待。

    边境自驾游异国风情深度体验.doc

    边境自驾游异国风情深度体验

    武汉东湖高新集团智慧园区 22页PPT(21页).pptx

    在智慧城市建设的大潮中,智慧园区作为其中的璀璨明珠,正以其独特的魅力引领着产业园区的新一轮变革。想象一下,一个集绿色、高端、智能、创新于一体的未来园区,它不仅融合了科技研发、商业居住、办公文创等多种功能,更通过深度应用信息技术,实现了从传统到智慧的华丽转身。 智慧园区通过“四化”建设——即园区运营精细化、园区体验智能化、园区服务专业化和园区设施信息化,彻底颠覆了传统园区的管理模式。在这里,基础设施的数据收集与分析让管理变得更加主动和高效,从温湿度监控到烟雾报警,从消防水箱液位监测到消防栓防盗水装置,每一处细节都彰显着智能的力量。而远程抄表、空调和变配电的智能化管控,更是在节能降耗的同时,极大地提升了园区的运维效率。更令人兴奋的是,通过智慧监控、人流统计和自动访客系统等高科技手段,园区的安全防范能力得到了质的飞跃,让每一位入驻企业和个人都能享受到“拎包入住”般的便捷与安心。 更令人瞩目的是,智慧园区还构建了集信息服务、企业服务、物业服务于一体的综合服务体系。无论是通过园区门户进行信息查询、投诉反馈,还是享受便捷的电商服务、法律咨询和融资支持,亦或是利用云ERP和云OA系统提升企业的管理水平和运营效率,智慧园区都以其全面、专业、高效的服务,为企业的发展插上了腾飞的翅膀。而这一切的背后,是大数据、云计算、人工智能等前沿技术的深度融合与应用,它们如同智慧的大脑,让园区的管理和服务变得更加聪明、更加贴心。走进智慧园区,就像踏入了一个充满无限可能的未来世界,这里不仅有科技的魅力,更有生活的温度,让人不禁对未来充满了无限的憧憬与期待。

    ,,CAD、DXF导图,自动进行位置路径规划,源码可进行简单功能添加实现设备所需功能,已经在冲孔机,点胶机上应用,性价比超高 打孔机实测一分钟1400个孔 ,CAD、DXF导图;自动位置路径规划;源

    ,,CAD、DXF导图,自动进行位置路径规划,源码可进行简单功能添加实现设备所需功能,已经在冲孔机,点胶机上应用,性价比超高。 打孔机实测一分钟1400个孔 ,CAD、DXF导图;自动位置路径规划;源码功能添加;设备功能实现;冲孔机点胶机应用;高性价比。,CAD导图DXF,自动规划位置路径,实测打孔速度惊人!性价比超高冲孔机实现多功能定制

    一种鲁棒的可变功率分数LMS算法研究 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    本地部署,LM Studio,可以让大家本地部署在自己家里的电脑deepseek,再也不用忍受网站上deepseek的服务器繁忙的烦恼

    本地部署,LM Studio,可以让大家本地部署在自己家里的电脑deepseek,再也不用忍受网站上deepseek的服务器繁忙的烦恼

Global site tag (gtag.js) - Google Analytics