OOPSLA 2005

2005 年 10 月 24 日

再次参加 OOPSLA,很多会议,各种各样的想法。不可能对这次会议进行完整的记录——任何一个人都无法参加所有内容,更不用说全部理解了。所以这些只是一些零散的想法。

很高兴看到 Jonathon Edwards 和 Subtext 项目在 Onward! 轨道上回归。 Subtext 是我遇到的关于开发环境的最迷人的想法之一,也是最难描述的想法之一(访问网站并观看视频)。与 语言工作台 一样,它避免使用文本作为源代码,而是更喜欢抽象表示,并将其投影到编辑器中。然而,与通用工作台不同,它是一个特定的语言环境,特别强调同时显示代码和示例执行。我喜欢它,因为它与众不同,并且是语言工作台努力实现的非常不同的编程环境的示例。

由于它是在同一场会议上,我也参加了 X10 会议,该会议描述了一种专门针对并发性的研究语言。随着对多核处理器的日益重视,以及这种趋势导致 软件向并发性的根本转变 的观点,重要的是要考虑如何以凡人(即除 Doug Lea 之外的人)能够处理的方式处理并发性。我不知道 X10 的方法是否正确,毕竟我在并发性方面是个笨蛋,但基于语言的方法似乎很有趣。(在收到责备的电子邮件之前,我最好提一下 Erlang。)说到并发性,我应该提一下我与 Doug Lea 的短暂交谈。他评论说,如今多线程 Java 的性能远远超过 C,这是由于内存管理和垃圾收集器。如果我没记错的话,他说“只有比 C 快 12 倍意味着你还没有开始优化”。

我在重构方面发现了一些有趣的进展。 Frank Tip 一直在研究使用类型推断技术来帮助实现重构。他还参与了一篇论文,该论文使用重构来自动迁移库更改后的客户端代码——在本例中是删除旧的 Java 1.0 集合类。我和 John BrantDon Roberts 谈论了这件事,他们说他们已经做了很长时间的这种迁移。大多数是迁移到不同的 Smalltalk 实现(并非易事),但也有一些跨语言迁移。遗憾的是,这些都没有写成文章,尽管他们提到了他们这项工作的主要工具是 SmaCC。在另一场走廊聊天中,Jennitta Andrea 观察到,在她工作的团队中,她注意到重构工具改变了人们对编程块的思考方式。

我的同事 Ivan MooreNat Pryce 举办了 Scrapheap Challenge。这个想法是提出一个问题,让人们有 90 分钟的时间通过从互联网上下载软件片段并将它们粘合在一起来构建解决方案。本质上,它是对 后现代编程 的探索。这是一个小型研讨会,考虑到这是它第一次举办,这是一个好主意。它似乎是一个适合其他会议的想法:积极、不同且有趣。

Brian Foote 关于 动态语言发展史 的演讲吸引了大量观众,毕竟他在软件中拥有最高的“每分钟笑话”平均数。在那些妙语连珠中(“Java 是节食的 Cobol”,“XML 是带角的 Lisp”),我的注意力被他的请求所吸引,他要求将摩尔定律带来的部分收益用于更好的系统自我监控,这样我们就可以更容易地发现和修复我们在部署软件时不可避免的问题。仅仅因为你认为你可以证明对手无法进球,并不意味着你不应该派一个好守门员。

Mary Beth Rosson 在主题演讲中建议我们考虑放弃“用户”的概念,转而考虑“使用开发者”:构建自己的工具(如邮件过滤器和电子表格)的人。这些使用开发者需要一种不同的方法来思考可用性和功能。这些使用开发者需要更好的工具(你好 语言工作台)和更好的实践,这些实践包含了我们从软件开发中学到的许多东西。

在所有这些中,我被她提到的一个基于 Alice 的教学系统所吸引,在这个系统中,孩子们被介绍到一个包含缺陷的模拟中,并被要求修复它。是否应该以这种方式进行更多教学?要求学生修复一个有错误的程序;或者更难一点,重构一个运行正常的丑陋程序。

我不会多说我自己的演讲,除了最精彩的部分可能是 Brian Foote 的 介绍

我错过了圣地亚哥动物园的晚宴,去参加了关于 Grady Booch 创建 软件架构手册 的 BOF。他的目标是研究大量不同的软件系统,并提供对其架构的简要概述。最终的巨著将提供大量示例供人们学习。这是一项巨大而必要的努力。在生产中运行了一段时间的系统中,积累了大量的经验教训;我们从中学到的东西还不够多。

OOPSLA 是一个有趣的会议。一开始,我被它与 RubyConf 的区别深深地吸引住了。RubyConf 是一个年轻的会议,专注而自信。就像任何一个青少年一样,它无所不知,拒绝相信任何事情是不可能的。OOPSLA 是一个臃肿的中年会议,不再有任何指导目的——毕竟,对象(至少表面上)已经赢得了成为软件主要分解方式的追求。因此,不再有任何理由宣传对象并将它们强加于不愿接受的软件开发社区。我们现在都是面向对象的人。

所以我在第一天晚上开场白就是抱怨 OOPSLA 没有在 2000 年解散——我们已经赢了——再见。毕竟,我做主题演讲的事实难道不是证明了 OOPSLA 已经堕落到何种程度吗?然而,随着会议的进行,我发现自己越来越享受它。最重要的是,OOPSLA 是一个社区,虽然宣传面向对象已经过时了,但这个社区的人们继续做很多其他有趣的事情。OOPSLA 是一个了解所有这些东西的机会。

对于新人来说,这如何运作我不太确定。会议简报中有一项来自某人的内容,抱怨 OOPSLA 的内部小圈子。我怀疑这是长期运行的会议社区的必然结果。这是朋友们聚在一起的机会,所以他们会花很多时间在一起。我希望新来者会发现这些副作用很有趣,但我怀疑 OOPSLA 永远无法避免内部小圈子的影响。我认为其他长期运行的会议也无法避免。

其他记录包括:Ivan MooreEugene WallingfordTravis Giggs

(所有引述均来自记忆,因此可能不准确。)

动态类型比静态类型更强大,因为它们不会在运行时逃离现场。

-- Brian Foote

Eclipse 拥有一个“猜按钮”用户界面。

-- James Noble

静态类型给我带来的安全感,就像我的座椅垫可以作为浮动装置的公告一样。

-- Don Roberts