BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

书摘与采访:Rails for .NET Developers

| 作者 Robert Bazinet 关注 0 他的粉丝 ,译者 王波 关注 0 他的粉丝 发布于 2009年3月10日. 估计阅读时间: 15 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

随着众多的PHP和Java程序员学习Ruby,近年来Ruby on Rails已经有了显著的增长,Ruby on Rails有助于快速创建业务解决方案。这里忽略了一批发现Rails优点的ASP.NET开发人员。他们给世界各地的公司编写C#、VB.NET和ASP.NET应用程序。

许多ASP.NET开发人员开始对Ruby编程语言和Web框架产生兴趣。这些开发人员了解微软以外的技术并发现这些技术更难掌握。他们要如何应对呢?InfoQ有幸采访了这样的两位开发者Jeff Cohen和Brian Eng,他们像众多微软开发者那样选择了Ruby on Rails并学习如何使用它的Web框架。

Jeff和Brian是Softies on Rails博客的维护人员,该站点记录了从微软技术转移到Ruby on Rails的历程。Jeff和Brian刚刚出版了《Rails for .NET Developers》一书,由Pragmatic Programmers发行。Pragmatic Programmers出版社给InfoQ提供了样章——《第二章 转移到Ruby》。

InfoQ借此机会采访了Jeff和Brian,谈谈他们从.NET转移到Rails的历程。

Robert Bazinet (RB) ::首先,自我介绍一下好吗?

Jeff Cohen (JC) :我一次性通过了MCSD考试,有着15年微软技术开发经验。主要使用C++创建MFC/ATL应用程序,后来编写C#桌面应用程序。我玩过几天的ASP和ASP.NET,但总的来说,更喜欢编写桌面和移动解决方案。就在2005年的时候,我发现了Rails,并完全使用Rails进行了为期1年的开发。现在我是Leapfrog Online的高级软件工程师,并在2008年中期成立了Purple工作室。

Brian Eng (BE) :我也是MCSD,并使用经典的ASP和ASP.NET进行了很多Web开发。2004年的时候,Jeff和我在一家大型零售商中一起开发触摸屏和平板PC 应用程序,同年Rails正式发布。与此同时,我尝试开始编写应用程序,并觉得使用Rails来重新创建以往用ASP.NET所创建的程序。那段经验也转换成实际的产品,副业变成了我现在的公司Bluebuzzard,一直运营至今。

RB:什么原因促使你从微软开发技术转移到Ruby on Rails呢?

BE:在过去的10年职业生涯中,我成功的使用着微软的技术,但基于某种原因,我并不喜欢每天使用的工具。有一天,我发现芝加哥的一些公司用来管理小型项目的工具Basecamp非常棒。我曾经和同事谈起过,他说“你知道吗?它是用Ruby写的”。对于我来说这实在太可笑了,所以我用Google搜索了一下,发现Rails并点击相关链接。

JC:我知道Ruby是一种脚本语言,并在2005年开始学习Rails。我下载了Windows版本的One-Click安装程序,并用Rails创建简单地 Hello World应用程序。我发现它的MVC结构比ASP.NET页面模型更加直观,并立刻发现用Rails创建网站非常有趣。相对于在Rails应用程序编写优美的Ruby代码,快速地编写C# ASP.NET代码就像在泥泞中蹒跚而行,从那时起我就被它深深的吸引。

RB:你们两人所面对的最大挑战是什么呢?

JC:使用Ruby真正的把钱用到了刀刃上,它是智能TDD。有了动态解释语言,就无需编译步骤来检查错误,可以直接进入单元测试。这非常的合适我。在使用Rails之前,我已经坚持敏捷开发多年。

在语言方面,有一些编程概念.NET中没有涉及过。事后意识到自己有点呆,但我不会钻牛角尖。尽管C#已经添加了yield语句,我从来没有使用过,如果要回忆的话它只适用于迭代。我阅读过一些关于C#匿名方法的.NET beta文档,与此同时我还是在学习Ruby。有趣的是,直到我理解了Ruby的程序块之后,回过头来才真正理解了C#匿名方法的潜在意义。也正是通过 Ruby社区,我开始理解延拓和函数式编程的概念。Ruby并没有同样的概念,但是使用Ruby的人们也能熟练使用其他语言,比如Smalltalk和 Lisp,两者都影响了Ruby语言的发展。懂得其他语言的前景和实现并不比自己使用的“主要”语言容易,但是我发现这更使得我深深感激周围的大型软件社区。所以有了新的挑战:要成为全面的软件开发人员,不能只会编写C#或者Ruby。

BE:当然,对于任何一个开发人员要从静态类型的编程语言转移到动态类型,都要费一番功夫。一旦了解学习Rails的动机,我们就会有冲动去使用Ruby方式代替自己熟悉的C#。这也经常意味着会过度思考问题及随之而来的过分复杂的解决方案。

RB:为什么.NET开发人员会对Ruby on Rails感兴趣呢?

BE:我曾学习Rails并在业余项目中使用它,与此同时我从事着2年朝九晚五的.NET开发。我惊讶于它对我思考.NET代码的影响。Rails使得我成为更好的开发人员,而且也非常适合通过它来学习Ruby。再者,作为技术人员,我们很容易会被新巧的事物所吸引。

JC:在Linux或者Mac平台如果仅有一个星期的时间,我希望所有的.NET开发人员都有机会用Rails开发简单的应用程序,而非Visual Studio。我觉得他们应该了解为什么Rails如此注目;为什么使用Linux和Mac并非听起来那么神秘;为什么作为一个优秀的软件开发人员,你并不总需要智能提示。再者,不管你喜欢与否,Ruby都会以IronRuby的方式成为Visual Studio的一部分。John Lam的团队正做着令人惊讶的事情,我们期待着它早日完成。也许ASP.NET MVC + IronRuby会成为大多.NET开发人员尝试的方式,就像我们使用Rails那样。

RB:若有的话,.NET社区会采用Ruby on Rails么?以及Ruby on Rails成功在哪里?

BE:从发布Rails开始,我们已经看到微软及其社区的变化。当然,微软已经包含并致力于MVC、REST和动态语言。更重要的是,我们看到许多.NET开发人员更关注他们的工作并懂得使用最好的工具来完成工作,并不仅仅是使用微软提供的工具。敏捷开发已经在.NET社区开展。独立的.NET开发人员借鉴 Rails的灵感开发了许多工具,就像Castle Project/MonoRail and Subsonic,对于.NET开发者社区来说都是非常有意义的事情。

RB:.NET开发人员如何开始学习Ruby on Rails?

JC:你可以读很多资料;要克服尝试新事物的恐惧,你需要做的事情就是尝试。下载Windows版本的免费One-Click安装程序,启动最喜欢的文本编辑器,开始吧!当Rails出现时,我第一次疯狂的举动就是使用记事本创建第一个“Hello World” Rails应用程序。输入变量名,迟疑了一下等待智能感知,但没有出现。听起来很有趣,但事实上这是我必须克服的困难。几天之后,我发现我不再需要智能感知了。记得Brain,我们一起尝试Rails,对如何基于某些条件来查找字符串中的某些元素,完全没有主意。所以我们只是猜测该方法为.select,却成功了!我们很快发现很多Ruby方法就像那样。所以.NET开发人员应该考虑尝试一下,不应该过早放弃,它用起来比想像中简单。

RB:对于正在学习Ruby on Rails的.NET开发人员,你对他们的建议是什么呢?

BE:以Jeff而言,我要补充一点,记住最重要的是不要害怕。从2004年起,到现在Rails已经经历了一段发展历程,而且在Rails开发社区方面的持续改变难以跟上。同时,理解和熟悉Java和PHP所带来的开源文化,可能会使得.NET开发人员望而却步。你不需要低价抵掉自己PC来购买Mac,至少今天不用。只要开始学习并进行尝试。

RB:如何看待IronRuby的发展来帮助.NET开发人员转移到Ruby on Rails?你觉得IronRuby是.NET将来实现Ruby on Rails的方式吗?

BE:IronRuby是极其重要的项目,因为它表示微软致力于发展并支持开源技术和动态语言。再者,打开Visual Studio、启动ASP.NET MVC项目并用Ruby或者Python来编写所有的事情,那是使用动态语言的重要一步。当.NET Web开发变得更“Rails风格”,可使得Rails社区能持续革新并保持领先,对于所有人来说都是好事。

RB:你认为.NET开发人员如何处理Rails在自身实现中的固有方法呢?也就是说,在.NET你有空白解决方案,微软让你随心所欲的做事情,尽管这种做法并不妥当。

JC:Rails固有的方式只适用于由数据库支持的Web应用程序。并非空白解决方案。所以,如果你编写数据库支持的Web应用程序,就会喜欢上它。站在巨人的肩上:简单易用的ORM(ActiveRecord)、内置的MVC架构、能创建最佳实践代码的代码生成器、未知数据库的架构迁移和内置的单元测试框架。你无需重新创建多个工具。大部分时间尽可能使用GOF模式就行了,然后就会套用Rails。紧粘着ASP.NET,只能这么说了。

RB:你如何看待.NET社区采纳Ruby on Rails后的长期发展呢?

BE:尝试使用Rails的.NET开发人员持续增长。大部分的开发人员有着和我们类似的经验;他们一边进行朝九晚五的.NET工作,一边在晚上和周末花时间进行业余项目的开发或者筹划下一件大事。如果你是这样,那么正好尝试Rails。你可以很快完成大部分的项目,同时学习新的知识。最终,你也许会放弃 Rails,并重新使用ASP.NET或者ASP.NET MVC。但是这种经验保证会使你成为更好的开发人员。

RB:微软已经使用称为ASP.NET MVC的自己的MVC实现来反击Ruby on Rails。你是怎么看待它和Rails之间的比较的?Rails社区应该关注ASP.NET MVC模式吗?

BE:如果有的话,已经证明Rails做对了。使用MVC/REST模式并完全控制页面的标记,对于我来说,总是觉得这是正确的。微软现在给予开发人员选择的权利。最终,对于每个人都是好事,因为它会使得工具更加完善,不管你喜欢那个。

RB:你写这本书的动机是什么呢?

JC:这本书是我们对两个本质理念交流的尝试,以及从.NET转移到Rails过程的介绍。首先,软件工程应该是充满乐趣的。无趣意味着你正使用玩具或者无价值的工具。我确实认为它是件令人高兴的事,实质是你是否享受着所从事的工作。其次,懂多种开发技术的任何人都可以快速掌握Rails。我们假设一个人有相当好的.NET编程知识,但对Ruby or Rail一无所知。那么这是横向转型的最好方式。我们编写本书就像写自己的博客那样:对于这个主题不了解的人,采用真实而非令人生畏的方式,但却有对于日常工作有用的主题。从开始,这个博客的使命就是为那些想尝试Rails的人扫清障碍,我们希望这本书确实起到这个作用。

RB:.NET开发人员熟悉Ruby on Rails开发的前5名资源链接有那些呢?

RB:谢谢Jeff和Brian接受采访。

要获取从.NET转移到Ruby on Rails的更多信息,请登录网站Softies on Rails,也可以通过该站点与Jeff和Brian联系。


给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

Ruby可以尝试一下 by yu ryan

可以尝试一下

rails 的思想的确很棒 by Huang Joe

rails 的思想的确很棒, 无论是ruby 还是 groovy
它减少配置,易于测试,我现在已经很难接受像struts,spring,这些mvc框架了,呵呵

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT