.NET程序员学习Ruby on Rails的理由

你是一位资深的.NET程序员,而且已经用ASP.NET构建过许多Web应用。

无数个不眠之夜,为了让ASP.NET控件生命周期中的事件驱动模型按你想要的方式执行,你费尽心血,深入细节。

你精通于使用诸如Presentation Model、Model View Presenter这类设计模式对你的应用进行分层,以使其更易测试和维护。

你认为Ruby on Rails只不过是众多被吹嘘的技术中的一员。在它还没有获得可观的市场份额之前,你不会给予它过多的关注。

欢迎来到我的世界。如果你还在读这篇文章,我向你致敬。对于我下面的说法,你可能会充满了好奇。为什么我——一名资深的.NET程序员,在经历了一个月的Ruby on Rails学习后会认为:只有在我了解了Ruby on Rails之后,才能以较少的时间和编码完成以前开发过的许多应用?

老实说,我仍然认为.NET很棒。它为我提供了一个平台,能让我向客户源源不断地提供巨大的商业价值。但我时刻提醒自己:一个简单的问题,有大量不同的方法和技术可以解决它,并且总有一些比其它更好。衷情于某种技术,必然会产生一些无意识的偏见,这最终会阻碍我为客户提供商业价值的能力。例如,对像Ruby这样的动态脚本语言的了解,使我以为:与使用编译型的语言相比,我可以花费更少的时间去编写简单的自动处理的Batch/Shell脚本。

为什么不呢?

下面这几件事,是我(一个.NET程序员)学习Ruby时,发现的一些典型的不同。希望你能喜欢。

不需要编译Ruby中没有编译的概念。一切都在运行时发生作用。有人认为代码编译可以防止编码时的粗心。那么,你可能应该去看一下测试驱动开发是怎么工作的,连续的代码集成(当然了,不是每天都要构建),单元测试(不涉及数据库和web服务的测试)和依赖注入可以帮助你生成质量良好的代码,使你能够充满自信的灵活的改变你的代码。编译的保障作用一下子变的不那么重要了。

动态增加类的行为——不使用Decorator模式在静态类型语言中,要想动态增加类的行为,我们可以使用Decorator模式或者模板方法。而在Ruby中,有更多的方法可以在不复杂化对象设计结构的情况下,很简单地做到这一点。这只是因为语言本身对它的支持,例如:将模块作为minxin使用,使用class_eval, instance_eval方法等。事实上,甚至可以通过编程方式在运行时定义类的方法。在静态类型语言中,也可以通过代码生成来完成它。但了解更多的方法,可以让你向一个优秀的问题解决者迈进一步。

(译者注:mixin在面向对象编程语言中是一种提供某些功能给子类继承的类,但mixin并不能实例化。从某个mixin继承并不是什么特殊的形式,而它更适于收集功能。某个子类甚至可以通过继承一个或者多个mixin选择继承它的全部或者多数功能。一个mixin能延期到运行时定义和绑定方法,而属性和实例参数也可在编译时才被定义。这不同于我们常见的方式,比如先定义所有的属性、方法,并在编译时进行初始化等。)

时间: 2024-12-29 00:04:23

.NET程序员学习Ruby on Rails的理由的相关文章

利于程序员学习英语和不断进步的网站汇总

问题描述 对于我们的程序员来说,英语水平越好对我们越有利,还能去外企工作.或是出国等等,所以我想倡导一下各位朋友们,把你们所遇到的好的英语学习网站.开发网站.技术交流网站等等.总体概述为:利于我们程序员学习的网站告知其各位朋友们共同分享!共同进步!加油! 解决方案 解决方案二:新东方的不错

Java程序员学习Flex和BlazeDS的十三个理由

在阐述Java程序员应当学习BlazeDS的13条理由时,我以一个假想的苏打分派 系统来展示如何让已有的Java程序转变为RIA应用.通过这个例子,我同时还会 讲解到BlazeDS在已有Java应用或新建Java应用中的多种不同用法. 理由 一:开源 Flex软件开发工具箱(SDK)的核心是个开源框架,专门用来开 发.维护那些在不同浏览器.不同操作系统下界面都相同的RIA应用.Flex发布 采用的是Mozilla公共许可证(Mozilla Public License).编译后的Flex应用 在

写给自己的Java程序员学习路线图

如下是我做开发这几年经常使用一些技术和工具,当然这些技术也都是需要加强的(有些是我一直使用的,不过不深入,有些内部的原理等等不是很清楚) 前端部分: 1)HTML:网页的核心语言,构成网页的基础 2)CSS:使网页更加丰富多彩灿烂的利器 3)JavaScript:使网页动起来的根本,加强了网页和用户之间的交互 4)HTML DOM:换一种更加形象化的角度来看待网页,让我们更加方便的控制网页 5)HTML BOM:与浏览器交互不可或缺的工具 6)JavaScript库,主要是:jQuery及其插件

Java程序员学习一天半C++的感想

大学期间,学了一学期的C语言,当然包括学习数据结构时,用的也是C语言.当时刚刚接触计算机,对于编程更是一无所知.上课学习学习,偶尔会照着 书上敲一下代码.大二下学期,就丢掉了不用了.最近由于工作的需要,要使用Java Native Interface,所以就学习了1天半的C++,对C++有了一点点的了解,写一下自己的理解. 一天半时间,也学不多少东西,我主要就搞明白了下面几个问题: 1)指针 这么多年了,还记得在C语言时,最难以理解的,应该属于指针了.还记得谭浩强的那本C语言书(书名是啥,真的忘

Java程序员学习流程

问题描述 对Java很感兴趣,现在在学j2se,想知道怎样才能成为一名合格的java程序员呢? 解决方案 解决方案二:我一直用的java,简单说说我的想法,仅供参考.我一开始学java的时候是看基础书籍,理解了基础知识后,我就进入公司开始做项目了.那时候懂得很少,在做项目的过程中自己去慢慢学的.老实说自己去看书真的没有在项目中得到的锻炼多.等有一定的项目经验后,有时候回过头来再看看这些书籍,理解就会加深很多.还有补充一点,等你在项目中遇到这样那样的问题,在你解决问题的过程中,你就会不知不觉地学会

程序员学习资料分享---爱分享的程序员(新浪微博)

自从开始上大学读计算机以来,自己慢慢的也积累了不少计算机方面的文章和书籍,特别是一些自己读过的,觉得很不错的,一直想分享给大家.但是却没有时间一次性的把他们整理出来.于是我建了一个新浪微博:爱分享的程序员.每天分享一篇文章或者一本书,另外加上我自己的简单介绍,这样每天抽出时间整理一点,对于接受的人,每天收集一点,都不算累,可以更方便的吸收. 不说太多了,地址:http://weibo.com/u/5117848211 欢迎大家关注.

最简洁的PHP程序员学习路线及建议

为了你可以更好地学习PHP,这次主要是想说一下PHP的学习线路,文末还有10条php性能优化的小技巧介绍哦 适用于PHP初学者的学习线路和建议 我们要有一个循序渐进的学习过程,这里先把学习PHP的过程做一下概括,这和很多学习PHP的爱好者是不谋而合的: (1) 熟悉HTML/CSS/JS..网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉 (2) 理解动态语言的概念和运做机制,熟悉基本的PHP语法 (3) 学习如何将PHP与HTML结合起来,完成简单的动态页面 (4) 接触学习My

关于程序员学习以及工作效率的问题

问题描述 工作时间也已经有几年了.但是个人的能力,知识一直没有上去,一直都是处于行业的底层中.也许是我学习方法出了问题,也许是我根本就没好好的学习.走过路过.各位有什么好的学习方法,有什么好的习惯.欢迎踊跃发言,传授小弟一下 解决方案 解决方案二:工作时间也已经有几年了.学习你身边成功的例子呢解决方案三:java这个行业没有什么学习方法只有不断吸取新知识掌握更多的知识才有更好的话语权要培养对java的兴趣有了兴趣再去学习会事半功倍鉴于你说的这种情况应该是你总是上班吧交给你的任务做完就OK了并没有

《Ruby程序员修炼之道》(第2版)目录—导读

版权 Ruby程序员修炼之道(第2版) • 著 [美] David A. Black 译 钟凤鸣 陈雪静 责任编辑 杨海玲 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn • 读者服务热线:(010)81055410 反盗版热线:(010)81055315 版权声明 Original English language edition, entitled The W