MountainWest RubyConf 于 3 月 28 日和 29 日在盐湖城举办。在 Confreaks 和其他赞助商的努力下,所有 15 个演讲视频都已经可以从 Confreak 网站上下载(网站也提供在线的 Flash 观看)!我们将为你介绍其中的几个演讲,为你提供一些内容简介,如果可行的话,还会告诉你演讲的时间段,你可以直接跳到所感兴趣的那部分去观看。 ### 强化ruby 生态圈第一部分:Rubinius,演讲人Evan Phoenix
Evan Phoenix 是 Rubinius 项目的创建者,它是一个 Ruby 的虚拟机。这不是一个关于 Rubinius 的纯技术演讲,更多涉及的是此项目当前的状况 (它已经可以运行 irb 和 RubyGems(09:12))和对它整个开放开发流程的阐述。Evan 提到,现在最大的成果是它庞大的 Spec 组件 (7: 08)。然后他列举了 9 个 Rubinius 社区成功的关检点,这些经验同样可以被其他开源项目所借鉴。 - 没有任务是微不足道的 (17:55)
- 每一个贡献者都是有价值的 (20:05)
- 每一个贡献也都是有价值的 (21:22)
- “请求原谅”要好过“请求认可”(21:44)
- 有争论是件好事 (22:26)
- 你是你,而你的项目是你的项目 (24:31)
- 没有制胜的法宝 (29:47)
- 促进实验 (33:38)
- 兴奋是会蔓延的(由实例引入)(38:00)
强化ruby 生态圈第二部分:Merb,演讲人Ezra Zygmuntowicz
Ezra 首先对 Web 框架 merb 作了一个介绍, 阐述了它的基本原则和关键的设计考量,比如 Merb 的口号“不存在任何代码比没有代码还快(No code is faster than no code)”。他不仅仅谈论了 merb,而且还介绍了一下 Rack 和 GitHub .
- 为什么他选择了 merb,为什么 Rails 并不总是最好的选择。
- merb 中的新特性 (10:43)。
- 对 Rack 的简单介绍 (12:43)。
- Merb::Router (21:16)
- merb-morezhong 中的组件 (30:46)。
- 简单谈谈 merb-plugins (34:48)。
- GitHub 的优点是什么 (36:22)。
- 对于 actions 的运作 merb 的参数是如何来传递的 (46:45)。
代码生成:元编程的安全剪刀,演讲人Giles Bowkett
Giles 首先以希腊字母 pi、lambda 和单词 meta 为元编程开头 (5:25)。他提到我们通常做的不是愿编程,而是 meta-OO。首先演示了一个关于 Ruby2Ruby 的例子 (6:28),然后把一个 Rails 模型类转变成 ruby 代码,由此看看神奇的 Rails 是如何运作的。
Giles 是一个非常幽默的演讲者,我建议大家看看完整的视频。下面是它的演讲大纲:
- 为什么 monkeypatching(指在运行环境下的补丁)不总是恰当的 (12:15)。
- 如何通过为补丁打补丁(meta-monkey-patching)生成一个用于可视化对象图形的脚本 (14:33)。
- 《Code Generation in Action》──一本每个程序员都应当读的书 (26:14)。
- 他对 Lisp 评判了一番 (29:12),并说明为什么没人用它。
- Ruby 与 Lisp 和 Perl 比起来,在简易性和神奇性之间有一个更好的平衡 (38:20)。
总结,他的主要观点是每个人都应当读读《Code Generation in Action》这本书。
高级Ruby,演讲者Jeremy McAnally
Jeremy 认为大多数开发者都没有正确的使用 Ruby 对象,所以他的话题比较高阶,谈论了诸如单例类(singleton classes)和instance_eval
.
- 什么是对象?它的定义,以及与其他语言的比较 (04:19)。
- 行为:用于改变对象功能的方式 (8:19)。
- 动态性:
*_eval
-methods 的大家族 (11:40)。 - 建议:建议使用
define_method
和instance_variable_set
,而不用instance_eval
(14:24)。 - 实用性:DRY 你的代码,并应用到实践中去 (16:09)。
这个演讲大概持续了 20 分钟,余下的部分为提问时间。
特定领域语言:改造 Ruby,演讲者 Joe O’Brien
软件的生命周期和维护会占去整个软件成本的 85%,所以软件 代码必须有很强的可读性。这可以通过 DSLs 来实现。Joe 是以星巴克 DSL 这个经典实例开头的 (13:41),然后对 Ruby 为什么适合写 DSLs,以 及它的“配料”都是从哪得到的进行了详细的阐述 (24:10)。
演讲的后半段对 3 种 DSLs 作了一个陈述 (31:31):
- 场景 1:“oops,我创建了一种 DSL”, 是关于 rake 中的任务,以及 Jim Weirich 是如何无意中创建 rake 的。
- 场景 2:一致性,关于在 rails 模型种自定义 assert 的实例 (37:19)
- 场景 3:商业语言,关于如何通过 DSL 使对规范对于客户来说可读性与可校验性更强 (42:53)
用Ockham 来刮胡子,演讲者Jim Weirich
Jim 的演讲题目实际为"我想谈论的一切(Anything I Want to Talk About)",以一些非常棒的(5 页演示稿)Fredrick Brooks《人月传说》"The Mythical Man Month"书中关于编程本质的话开头。他接下来讲述了他是如何成为一个编程者的 (5:40),以及他看见的第一段 Lisp 代码。 接下来的 10 分钟是对 Lisp 的介绍,讲述了 Lisp 的基础知识以及它之所以强大的原因 (21:24)。
他接着讲述了他的第一个项目,通过被人遗弃的硬件实现一些通 用而且有趣的图形功能。它们需要使用汇编语言在两种完全不同的架构上工作 (26:10)。为了在两种截然不同的环境下工作,它们把 Forth 分别移植到两 种系统上,这样一来就会相对容易些,因为 Forth 只有一小段内核是属于机器专有的 (34:53)。
此后,Jim 必须在一个多线程的系统上工作,这让他感觉到多线程的程序编起来非常的困难 (46:39),接着,他继续讲了在这方面有很大优势的 Erlang(47:25)。对 Erlang 进行了 10 分钟的介绍。
在演讲的最后,他对为什么我们总是试图创建异常复杂的软件 (01:00:20) 和 Tony Hoare(01:05:32) 关于两种构造软件设计想法的评论。对我们来说很有用的是,还有一些对未来可能趋势的看法 (01:08:05)。
提示: InfoQ 刚刚发布了一个对Jim Weirich 的视频采访,谈论了一些关于rake 和DSLs 的内容。查看英文原文: http://www.infoq.com/news/2008/04/mountainwest-rubyconf-2008-video
评论