学之者生,用之者死——ACE历史与简评
陈硕 (giantchen_AT_gmail)
Blog.youkuaiyun.com/Solstice
2010 March 10
ACE 是现代面向对象网络编程的鼻祖,确立了许多重要模式,如 Reactor、Acceptor 等,重要到我们甚至觉得网络编程就应该是那样的。但为什么 ACE 叫好不叫座?大名鼎鼎却使用者寥寥?本文谈谈我的个人观点。
ACE 是一套重量级的 C++ 网络库,早期版本由 Douglas Schmidt 独自开发,后来有 40 余名学生与工作人员也贡献了大量代码。作者 Douglas Schmidt 凭借它发表了 30 余篇学术论文。ACE 的一大特点是融合了 Douglas Schmidt 提出的很多面向对象网络编程的设计模式,并且具有不可思议的跨平台能力
1 ACE 历史
先说说 ACE 之父 Douglas Schmidt 的个人经历:
- 1990 年在加州大学 Irvine 分校获计算机硕士学位;
- 1994 年在同一学校获计算机博士学位,论文《An Object-Oriented Framework for Experimenting with Alternative Process Architectures for Parallelizing Communication Subsystems》。从论文内容看,主要工作就是后来大名鼎鼎的 ACE framework,文中叫 ASX framework。
- 1994 年博士毕业后前往华盛顿大学任助理教授,后升至副教授
- 2003 年起在 Vanderbilt 大学任正教授至今
我相信 ACE 是 Douglas 在读博期间的主要工作,ACE 这个名字最早出现在 1993 年 12 月的一篇会议论文上,Douglas 的这篇文章获得了“最佳学生论文”奖。在此之前,Douglas 已经用 ASX 等其他名字发表了内容相近的文章。
我能下载到的最早的 ACE 版本是 4.0.32,有大约 86,000 行 C++ 代码,代码的时间戳是 1998 年 10 月 22 日。早期 ACE 由 Douglas Schmidt 个人独立开发,从 ChangeLog 得知,1993 年 11 月 ACE 的版本号是 2.12。到了 1995 年 9 月,才有第一次出现其他开发者。在 1993~1996 年间的 684 次改动中,Douglas 一个人贡献了 529 次,另外几个主要开发者以及他们的修改次数分别是 Prashant Jain (58)、Tim Harrison (42)、David Levine (28)、Irfan Pyarali (20)、Jesper S. M|ller (5)。
从整个 ChangeLog 看,从 1993 年到 2010 年 3 月有 19,000 余次改动。有超过 200 人修改过代码,其中 23 个人的 check-in 次数大于 100,排名前 12 的代码修改者为:
3635 Johnny Willemsen (活跃年份:2001~今)
2586 Douglas C. Schmidt(原作者,活跃年份:1993~今)
1861 Steve Huston (活跃年份:1997~今)
1197 David L. Levine (活跃年份:1996~2000)
962 Nanbor Wang (活跃年份:1998~2003)
907 Ossama Othman (活跃年份:1999~2005)
865 Chad Elliott (活跃年份:2000~今)
823 Bala Natarajan (活跃年份:1999~2004)
708 Carlos O'Ryan (活跃年份:1997~2001)
544 J.T. Conklin (活跃年份:2004~2008)
479 Irfan Pyarali (活跃年份:1996~2003)
368 Darrell Brunsch (活跃年份:1997~2001)
看到这些“活跃年份”,你的第一反应是什么?我想到的是,这些人会不会多半是 Douglas 指导的研究生?我猜他们在读研期间参与改进 ACE,把工作内容写成论文发表,然后毕业走人。或许这能解释 ACE 代码风格的多样性。
在浏览代码历史的过程中,我还发现一个很有意思的现象,在 2008 年