OOPSLA 2004
2004 年 11 月 3 日
我已经参加 OOPSLA 十多年了。它已经成为我与许多朋友聚会、了解他们最近在做什么以及试图了解 OO 社区的发展方向的地方。
在会议正式开始之前,我参加了一个关于重新评估GoF书籍的研讨会,该书出版十年后。虽然这本书仍然是 OO 领域任何人的必读之书,但还有很多可以做的事情来使其现代化(尽管可悲的是,这可能不会发生——至少不会由 GoF 本人完成)。
我们围绕“下一步是什么”主题进行了许多讨论,也许最值得报告的是一项关于考虑“投票离开岛屿”的练习。人们投票选择模式,以表明他们认为哪些模式需要以当前形式删除。
四种模式被投票淘汰。工厂方法(由于对它的含义存在混淆——模式不同于该术语更常见的用法)、桥接、享元和解释器。两种模式,单例和责任链,是分歧的决定。
我发现投票和讨论很有趣。当然,在不考虑替代方案的情况下很难真正考虑这一点。令我惊讶的是,单例以分歧的决定逃脱了,考虑到它在我朋友中变得多么不受欢迎。大多数其他模式被投票淘汰,因为人们认为它们足够罕见,并且其他模式可能会取代它们,可悲的是,我们没有时间考虑新成员。
Eclipse 在周日晚上举办了一个派对(延续了 OTI 和 IBM 的传统)。然而,房间太小了,所以你唯一能享受它的方法是先在蒸汽压路机下滚动。
开幕主题演讲由微软研究院的 Rick Rashid 做。它受到广泛批评,因为在实验室里展示了一些略微有趣的东西之后,它开始进行产品发布,很快变成了典型的空洞产品演示。我被展示了盒子被调整大小并分组后离开了——只是被一些朋友斥责没有早点走出去。最恼火的是来自微软的人,他们对他们认为不合适的产品宣传感到非常尴尬。我想,在没有这种情况的情况下,成为每个人笑话的目标已经够难了。
作为我想成为的支持执行官,我计划参加我的同事关于模拟对象的会议。但当我意识到它与 NoNoPoMo 冲突时,这个计划被放弃了——关于后现代编程的笔记,这是 Robert Biddle 和 James Noble 的最新 PoMo 演讲。我两年前参加了他们最初的关于后现代编程的笔记演讲,通常将其描述为伪装成表演艺术的学术推测。这个版本延续了有趣的表演艺术主题,但继续绘制了与我们如何思考构建软件的联系。我在JAOO上看过詹姆斯关于乐高假设的演讲,这次演讲帮助发展了这个主题的很大一部分。
我对 PoMo 立场的总结是,编程已经成长为现代时代,现代时代有一个潜在的假设,即存在一个伟大的进步叙事,并且喜欢将较小的但相似的结构组合成更大的结构,以提供一个统一连贯的画面。但是,现代时代的观念在许多地方(特别是建筑和文学)受到一种被称为后现代主义的人类发展新阶段的质疑。这引入了新的主题,特别是缺乏任何宏大的叙事和对混乱结构的接受。PoMo 编程的观点是,这种潜在的潮流影响了我们对编程的看法——即使我们没有意识到这一点。这方面的一个例子是,我们如何开始接受混乱但有用的系统——例如 Perl,或者软件部件在任何实际软件系统中集成的方式。现代主义观点讨厌这些系统的混乱,但 PoMo 认为它们是我们世界不可或缺的一部分。
艾伦·凯的图灵奖演讲是会议上一个备受关注的高潮。特别的轰动是,这将是一个新的演讲——爱说俏皮话的人开玩笑说这是凯 20 年来的第一个新演讲。演讲的主题是我们在教授编程时失去了发现的乐趣。在 60 年代,学生被教导没有人理解你用计算机能做什么和不能做什么,这导致了创造性想法的爆炸式增长,这可以通过展示sketchpad的视频演示来很好地总结。现在,编程更多的是学习关于我们已经做过的事情的规则,而不是鼓励人们突破界限——作为模式作者,我比大多数人更犯这种错误。
凯的演讲大部分内容是关于 Squeak 和 Croquet 的。我听到几个微软员工说,在早上对微软演示的批评之后,这很有讽刺意味。我认为区别(除了Squeak和Croquet是免费的)在于凯使用该工具来说明他正在谈论的想法。这些工具是你可以做的事情的例子,而不是艺术的陈述。它们鼓励你更进一步,无论是使用它们还是与它们竞争。正如布莱恩·马里克所说,“在微软研究院的世界里,我们是观察者、消费者、他人为我们构建的体验的次要参与者。在艾伦·凯的愿景中,我们是积极存在于世并要求我们改变它的世界中的行动者。”我在这里唯一的挑剔是,使用微软作为目标仅仅是因为它们是最大的——整个行业都反映了这个问题——这就是为什么凯(软件界的奥森·威尔斯)有如此重要的观点。
史蒂夫·麦康奈尔开启了第二天。他的演讲重点介绍了他优秀的书籍代码大全第一版和第二版之间的十年差距。布莱恩·富特将其总结为“我同意的陈词滥调”。我的总结是,在过去十年中,尽管我们周围通常存在天空坠落的观点,但该行业在这方面取得了真正的进展。
史蒂夫后来与我在“软件开发:数学与科学还是艺术与工艺?”的小组中。这是对软件开发隐喻的又一次考察,这已经成为 OOPSLA 的年度主题。如今,我似乎形成了这样的观点,即软件开发唯一好的隐喻是死去的隐喻。我照常对软件工程隐喻的问题以及对制造隐喻的特别攻击进行了抨击。
攻击软件作为制造业尤其及时,因为每个 OOPSLA 参会者都在他们的礼品袋中收到了一本软件工厂。我已经了解这项工作一段时间了,我对这种隐喻的本能过敏反应只是被“我们需要工业化”的动机所加强。然而,深入挖掘,这里有一些好主意——特别是集成领域特定语言功能的方法。
我错过了周四关于亚马逊网络服务的主题演讲的一半——这个演讲比我预期的要好得多。人们基于亚马逊的东西做了很多有趣的事情,你必须向亚马逊脱帽致敬,因为他们很乐意通过轻松自由地提供数据来鼓励这种行为。当然,这样做并非纯粹的利他主义——它也有助于建立亚马逊的品牌。多年来,像这样的文章链接到亚马逊,因为它已经成为将书籍参考链接到亚马逊的事实上的点。我这样做是因为它很容易——即使我不参与他们的推荐计划。
我的第二个 OOPSLA 小组是关于离岸开发的——我被邀请参加Thoughtworks 在班加罗尔实验室的经验。然而,没有一个问题是关于使离岸开发工作的机制,而是集中在离岸开发的动机和后果上。很明显,美国仍然存在对离岸开发可能导致的明显恐惧——但我仍然认为,这很大程度上是基于有缺陷的制造隐喻。
.NET 与 Java 对决是我的最后一个小组——但正如我所说,加拿大人在边境没收了枪支。我使用了QuestionTimePanel格式,我发现它有助于使小组更专注于合理的讨论。我太专注于主持小组了,以至于记不住太多东西,所以我很高兴有一个eweek 报告。
两件事确实让我印象深刻,那就是 Anders Hejlsberg 关于他目前正在考虑 C# 的方向的几个指标。一个是处理对象和关系数据库之间臭名昭著的阻抗不匹配。另一个是转向类型推断,以结合静态类型和动态类型的优势。