生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

跟 Michael Hartl 学习 Ruby on Rails

  • 2011-05-09
  • 本文字数:2566 字

    阅读完需:约 8 分钟

学习一门新语言很容易让人焦躁,人们也往往不知从何处开始着手。要是再同时学一个新的 web 框架,那可就真的是找不着北了。

Ruby 始创于上世纪 90 年代 ,日渐为人熟识。 Ruby on Rails 也成了耳熟能详的名词,越来越多的公司在用它快速搭建 web 应用。

要学一门新语言和一个新框架,该从哪儿开始学呢?这方面的好书有很多,有些是写给新手的,有些则是给老鸟看的。

不管你用的是 Java 还是.NET,或者其它任何语言,都可以通过 RailsTutorial.org 来学习 Ruby on Rails 3。这个网站是 Ruby 专家 Michael Hartl 创建的,其宗旨就是为 Ruby 新手提供服务。而且无论你是喜欢看书学习还是看视频,这网站上都有。

我们最近跟 Michael Hartl 聊了聊他是怎么教别人 Ruby On Rails 的,还谈到了他的新书" Ruby on Rails 3 Tutorial "。经过作者允许,InfoQ 现提供该书的第八章下载,章节名"Sign Up"。这章讲述的是如何在Rails 应用中创建一个用户注册页面。

Robert Bazinet (RB):来给我们介绍一下你的背景吧。

Michael Hartl (MH):我是个程序员、教师、企业家。我跟人合写过 RailsSpace 这本书,2007 年出版的,曾经在 Rails 指南类图书中名列前茅。我跟人一起创立了 Insoshi,它是用 RoR 开发的一个比较流行的社交网络平台,我还是其中的技术领导。之前我在加州理工学院教过理论物理和计算物理,2008 年我参加了 Y-Combinator 企业家计划。

RB:给我们介绍一下 Ruby on Rails 3 Tutorial 这本书如何?

MH:这本书讲的是怎样用 Ruby on Rails 开发并部署一个真实的、工业强度的 web 应用。Ruby on Rails 是一个开源的 web 框架,已经用在了很多顶级 web 站点上,比如 Twitter、Hulu、Yellow Pages。

RB:什么类型的程序员应该读这本书呢?

MH:只要是对用 RoR 开发 web 应用感兴趣的人都可以读。

RB:我看到你还提供了一系列的 Rails 3 视频教程,这些视频是补充书里面的内容呢,还是完全不相关呢?它们跟书有什么区别呢?

MH:嗯,绝大多数视频还是跟着书走的,它们主要还是提供了跟读书完全不同的学习体验。就像是根据书改编的电影一样。

RB:Railstutorial.org 网站上免费提供了这本书的所有内容。你为什么把它免费开放呢?

MH:免费内容算是一种商业策略吧。这里面放了站内链接,可以点击某些词直接打开搜索引擎搜索,也有大量的参考资料,不计其数的优秀经验总结。

RB:你觉得对于新人来说,Rails 3 比 Rails 2.5 要好很多么?

MH:Rails 3 的内部结构比 2.3 要干净的多得多,但是对于普通的程序员来讲,我觉得区别并没有那么大。Rails 3 和 2.3 最大的不同在于,Rails 3 的公共 API 在设计上已经稳定了,既然这个框架还会不断向前发展,那新手还是用 Rails 3 会比较容易,因为 Rails 3 在版本更迭的时候不会有那么多东西被破坏。

RB:如果是一个有经验的程序员,你觉得他该怎么学 Rails 才最合适,又怎样才能把这个框架引入公司呢?

MH:如果是内部推销这个框架的话,我建议去看看那些成功使用了 Rails 的网站。至于学习 Rails,我觉得一本书加上一系列配套视频就够了。

RB:我们的读者大多数都是企业应用的开发者,你觉得 Rails 3 已经适合企业应用了么?你觉得它能跟当前的企业级语言相比么?比如 Java 和 C#?

MH:我从没有过 Java 和 C#的开发经验,所以我没法拿它们跟 Ruby 比,我对 Java 和 C#的 web 框架也不熟。但是从 Rails 在那些高访问量网站──比如 Twitter、yp.com、Groupon──的使用情况来看,Rails 做企业应用肯定是没问题的。

RB:企业应用常常都要涉及到很多独立系统的集成点。你觉得 Ruby,尤其是 Rails,能够为企业级开发者提供这种类型的支持么?Ruby/Rails 比其他语言和框架更容易做集成么?

MH:我没有多少企业级应用的开发经验,但我知道有很多公司,比如 Linkedin,用的是 JRuby on Rails,这样就能和他们的 Java 应用很自然的交互了。因为反正你最后得到的也是的 WAR 包,跟其他 Java web 应用一样部署就是了。

RB:那你在哪方面的背景知识对这本书起到过帮助呢?

MH:Web 开发很困难,比绝大多数人意识到的都要困难得多。我从前教过物理,这些经验能够让我预料到 Rails 哪方面的内容容易让人困惑。我在加州理工教核心的课程教了五年,我在不断的把要传授的内容(主要是力学和电动力学)拆分成容易理解的片段,不停的预测哪些地方比较难理解。我在写 Ruby on Rails Tutorial 这本书的时候,也用了同样的方式。

RB:你还想跟读者讲点什么别的东西么?

MH:我常常半开玩笑的把自己叫做”反圆周率领袖 “。我去年写了篇论文,叫做” Tau 宣言“,里面提出用一个新的符号来表示一个重要的数学常量:tau = 周长 / 半径,而不是 pi = 周长 / 直径。我还创立了一个节日:Tau Day,在 6 月 28 号,跟 3 月 14 号的 Pi Day 对着来。这个项目得到了广泛关注,还上了 New Scientist 和 CNN.com。

如果你看一下 Tau 宣言的话(译者注:需要翻墙),你会发现它的在线排版格式非常好看,也有 PDF 版本,就跟 Rails Tutorial 那本书一样。这可不是什么巧合,我这些文档都是用自己写的 Ruby 程序生成的。这个程序教 PolyTeXnic,是基于 LaTex 系统开发的。我希望将来有一天可以把 PolyTeXnic 开源了,帮助其他人可以做出非常精美的在线技术文档(当然还有迷人的 PDF)。

RB:非常感谢。

想阅读 Michael 的在线图书的读者可以访问 Ruby on Rails Tutorial 网站。在网站上还可以找到图书和视频的购买地址。

参加 2011 年 5 月 16 日至 19 日在 Baltimore 举办的RailsConf 大会的听众,可以去听 Michael 关于“ Rails 入门 ── 第一、二部分”的话题.

关于图书作者

Michael Hartl 是个程序员、教师、企业家。他跟人合写了 RailsSpace 这本书,2007 年出版,曾经在 Rails 指南类图书中销量名列前茅。他跟人一起创立了 Insoshi──用 RoR 开发的一个比较流行的社交网络平台,他还是其中的技术领导。之前 ta 在加州理工学院教过理论物理和计算物理,获得了优秀教师终身成就大奖。Michael 从哈佛毕业,在加州理工拿了物理学博士学位,并参加了 Y-Combinator 企业家计划。

本书的出版社 Addison-Wesley 把配套视频做成了 DVD,同书一起销售

查看英文原文: Learning Ruby on Rails with Michael Hartl


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

2011-05-09 00:004864
用户头像

发布了 197 篇内容, 共 52.4 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

掌握进阶:高级功能、图表定制与地理数据绘制

申公豹

Python

嵌入式系统中的低功耗定时器应用与优化实战

申公豹

嵌入式

实时任务调度与通信协议在嵌入式开发中的应用

申公豹

嵌入式

CnosDB:深入了解时序数据处理函数

CnosDB

开源 时序数据库 CnosDB

物联网中的嵌入式系统安全代码实战与运用

申公豹

嵌入式

KubeWharf适合场景 开源赛道 3:深入云原生

Echo_Wish

云原生 年度总结 2023 KubeWharf 技术总结

实时操作系统(RTOS)在嵌入式开发中的作用与优势实战

申公豹

嵌入式

Python从基础到进阶字符串验证

申公豹

Python

在Python中实现条形图动态追赶动画效果

申公豹

Python

Python图像处理:批量添加水印的优雅实现与进阶技巧

申公豹

Python

深入理解嵌入式系统中的GPIO控制与应用

申公豹

嵌入式

2023 年度总结—总结我今年的AI之路-多项目实战经验谈AI发展前景

申公豹

#技术人的2023总结

低功耗设计策略:延长嵌入式设备的电池寿命代码实战

申公豹

嵌入式

嵌入式图像处理:算法、应用与性能优化

申公豹

嵌入式

嵌入式音频处理技术:从音频流媒体到声音识别

申公豹

嵌入式

CAN总线与嵌入式系统通信:实时性和可靠性的平衡

申公豹

嵌入式

FPGA在嵌入式系统中的角色:加速、定制与灵活性实战与运用

申公豹

嵌入式

简洁灵活:Python中基于字段的不使用元类的ORM实现

申公豹

Python

多表格文件单元格平均值计算实例解析

申公豹

Python

嵌入式开发-微控制器 vs. 微处理器:如何选择适合你项目的解决方案

申公豹

嵌入式

Seaborn 数据可视化全攻略:从基础到高级实战

申公豹

Python

cmake | AI工程化部署

AIWeker

c AI AI工程化部署

构建高效、安全的在线考试系统:基于Spring Boot和Vue的前后端分离之道

申公豹

Python文件操作指南:读写、异常处理与上下文管理器详解

申公豹

Python

深入探索嵌入式系统开发:从LED控制到物联网集成

申公豹

嵌入式

嵌入式系统入门实战:探索基本概念和应用领域

申公豹

嵌入式

用纯 Python 打造的轻量级 Excel 到 Markdown 转换工具

申公豹

Python

手把手教你Python圣诞主题绘图

申公豹

Python

基于Vue.js和Spring Boot的口罩自助售卖系统:设计、实现与技术深度解析

申公豹

开发

基于STM32的物联网节点设计与实现-传感器数据采集与无线通信

申公豹

嵌入式

CnosDB如何确保多步操作的最终一致性?

CnosDB

开源 时序数据库 CnosDB

跟Michael Hartl学习Ruby on Rails_Ruby_Robert Bazinet_InfoQ精选文章