MountainWest RubyConf 2008 视频档

  • Mirko Stocker
  • 刘申

2008 年 4 月 25 日

话题:Ruby编程语言社区语言 & 开发架构文化 & 方法

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,而且还介绍了一下RackGitHub.

  • 为什么他选择了 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_methodinstance_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

Ruby编程语言社区语言 & 开发架构文化 & 方法