前往奥胡斯 2011
2011 年 10 月 26 日
goto(以前称为 JAOO)一直是我最喜欢的会议之一。多年来,他们一直保持着高水平的内容,并结合了高效友好的组织。因此,虽然我过度参加会议通常会导致会议恐惧症,但我仍然在前往奥胡斯进行有点复杂的旅行时,感到一种愉快的期待感。
我今年的工作是与 Jez Humble 共同主持了关于 持续交付 的教程,以及与 Rebecca Parsons 共同主持了关于演化架构的教程。虽然前者已经相当成熟,但演化架构是我们第一次尝试这样做 - 但我对结果感到非常满意。我认为 Rebecca 明年会更广泛地进行这个教程,它非常值得一看。
一些会议内容让我印象深刻。其中一个引起了很多外部关注的是关于 Google Dart 的主题演讲 - 由 Lars Bak 和 Gilad Bracha 介绍的一种新的语言和虚拟机。本质上,Dart 主要用于构建浏览器内的 Javascript 应用程序。您可以通过编译为 Javascript 或通过源代码或编译后的二进制文件部署应用程序,以供 Dart 虚拟机运行。编译为 Javascript 允许与当前浏览器最大程度地互操作,但将二进制文件发送到 Dart VM 会加快已安装 Dart VM 的浏览器的加载时间。Google 已将 VM 和语言开源,这将最大限度地减少将 Dart 包含在浏览器中的摩擦。
Lars Bak 和 Gilad Bracha 介绍了 Dart 编程语言
该语言是一种保守的面向对象语言,具有类似 C 的语法和单继承对象模型。它最直接的非凡特性是其对类型化的处理方式。它是一种动态类型语言,但您可以向源代码添加类型。这些类型不会改变编译器的输出,但会进行检查,如果存在类型错误,则会生成警告。此外,类型可以为 IDE 提供信息,以帮助进行智能完成等操作。(我喜欢 Gilad 的一句名言:“类型检查器是经过脑叶切除术的定理证明器”。)
除了主题演讲中介绍的内容外,我没有进一步研究 Dart,但基于此,我喜欢我所看到的。我相信需要用其他语言来取代 Javascript。虽然它是一种具有某些强大功能的语言,但它是一种丑陋的语言,难以很好地使用。一位同事最近很好地总结了这一点 - 他在一个使用 Javascript 很好地完成的项目中,最终后悔没有使用 CoffeeScript,因为他觉得即使是写得很好的 Javascript 代码也不够清晰。Dart 看起来干净得多,它的部署方法为使用 Dart VM 提供了一些明确的好处,同时保持了对旧浏览器的兼容性 - 这一点至关重要,因为 Javascript 还会存在很多年。
另一个预示着未来的会议是 Kresten Krab Thorup 关于在丹麦使用 Riak 存储药物处方的演讲。现有系统建立在 MySQL 数据库之上,但他们担心其可扩展性。Riak 的点对点分布式设计为他们提供了一种更好的模型,可以在多个中心运行数据库。我认为这将成为一个越来越重要的主题,关系型数据库是在单个大型服务器的思维模式下构建的,但我们越来越多地看到商品服务器集群 - 因此需要重新思考数据存储。这种处方信息非常适合这种存储方法,因为数据访问主要是获取患者的完整处方列表 - 这使得系统成为一个自然的 D D D_ 聚合。
我还发现他们的迁移方法很有趣。该系统自然适合 事件拦截,这使他们能够使用传入的事件同时填充 MySQL 和 Riak 存储,测试 Riak 系统是否能够处理更新负载,同时仍然从 MySQL 系统运行。
在过去的一年左右的时间里,很明显 数据库解冻 正在缓慢而稳定地进行。越来越多的人开始意识到,数据存储不再自动属于 SQL 数据库的领域,而现在是一个需要思考的选择。没有一种数据存储解决方案适合所有情况,因此您需要选择适合您情况的解决方案 - 但回报是更简单、因此更有效率的编程模型和/或更好的水平可扩展性。当他们的客户本可以从 NOSQL 选项中获得更好的服务时,与另一组受限于不恰当使用关系型技术的人交谈,这令人沮丧。
我还赶上了 Graham Tackley 以及他们在 卫报 使用 Mongo 的情况。看来 Mongo 对他们来说非常有效,并且是他们未来工作的有力选择。我赶上了 Graham 关于他们在新项目中使用 Scala 以及他们对该语言作为从 Java 环境发展的一步的积极体验的演讲。我现在已经听到了一些这样的说法,足以让我觉得 Scala 是在 JVM 平台上进行开发的组织的一个严肃选择。
我将提到的最后一个会议是 Tudor Girba 关于 Moose 的演讲 - 一种用于评估代码库质量的工具。我已经断断续续地听说过 Moose 几年了。当我们扩展了在 系统健康检查 方面的工作时,Erik Dörnenburg 一直在谈论它。Tudor 的演讲是一场非常精彩的表演,经过充分的打磨,可以与 Neal Ford 最好的演讲相媲美。
该工具也非常引人入胜。很难从一个非常完善的演示中判断一个工具的使用难易程度,而 Moose 明显是一个非常复杂的工具(而此类工具通常很难学习)。让我印象最深刻的不是它对评估代码的明显适用性,而是它体现了一种通用的工具哲学,这种哲学是 Lisp 和 Smalltalk 社区大部分思想的核心,但后来逐渐消亡。
这种哲学认为,工具的用户应该被期望去修补工具的内部结构,以便将其塑造成她需要的形状。为了实现这一点,该工具不仅开放其源代码供检查和修改,而且还使通过快速反馈进行增强变得容易。我脑海中最常见的例子是 emacs - 它鼓励用户将其视为一个可塑的工具。Moose 是用 Smalltalk 编写的,同样的哲学在 Tudor 的演讲中也得到了强烈的体现 - 允许您通过在几分钟内实现新功能,快速地将一流的功能构建到该工具中。
这种可塑的工具并没有得到广泛的应用。它们确实需要用户愿意学习如何使工具真正发挥作用,但这种努力会带来回报,因为工具可以真正地根据个人的需求进行定制。