原文出处:http://www.gotw.ca/publications/guest-ed-200609.htm
译文发表于《程序员》2006.10。
每个软件工程师都感觉到这是个激动人心的时刻。
对于发明家和探险者来说,每一个未知领域都充满诱惑。在这些领域的探索是艰难甚至充满危险的,但先行者得到的回报也很丰厚。未知世界如此广袤,所有的秘密期盼人们去发现,无数的奇迹等待我们去创造。
上世纪50和60年代,就是那样一个时期。计算机是新兴学科,你应该听说过这个领域的一些先驱,比如Edsger Dijkstra[译注1]和Tony Hoare爵士[译注2]。但你是否知道所有眩酷技术的原型在电子计算机出现不久的50和60年代就完成了?想想过去15年里主要的所谓新技术——垃圾收集,不是Java而是McCarthy[译注3]于1958在Lisp里创造的,并在1960年发表了论文;面向对象编程,不是Smalltalk或C++而是Simula发明的,1965年趋于成熟并在1967年发表论文;参数化泛型,也不是Ada或C++而是Strachey在1967年提出的。1967年是计算机历史上标志性的一年,ARPANET的第一次设计会议也是在这年召开的。
但要让普通程序员从这些技术受益,则还需要做大量工作,包括深入研究如何让这些技术具备广泛可用性(比如Mosaic公司(实现了浏览器Netscape)),将它们应用到最终产品里去。聪明人开发了Smalltalk、C++、Java、C#、Python等等很多编程语言,并在编程实现上做了大量工作,软件工业的巨大飞跃,应该归功于他们,这是他们无尚的光荣。
当想到在我们的父辈腋下夹着厚厚一摞打孔卡片,沿着山路向学校走去时(当时能有机会接触性能比现在你用的PDA都相差很远的大型计算机的人,是凤毛麟角啊,假设我们的父辈是那时的幸运儿),今天看似异常热门的所有技术就已经存在的时候,真是倍感羞耻啊。还好,是Java将垃圾收集机制带给大众,Smalltalk让面向对象走下神坛,C++推广了泛型——而现在的我们,则打算在并发控制和并行计算编程领域做出同样的成绩。
我们试着想想:在计算机历史上,主流架构第一次不再是诺依曼体系,那个时代一去不复返了,现在,是并行的新纪元。在个人电脑普及的道路上,我们已经获得了巨大成功,现在,我们要致力于推动Cray(译者注:美国超级计算机)这样的超级计算机进入千家万户。这是一个产生大量机遇的时代,我们有大量工作要做。真的,并发控制(从理论上)已经实现,也有很多优秀的专家(如Hoare发表了奠基性的论文《通讯顺序进程》[译注4])和公司(如Cray),在并行计算领域研究多年。但绝大多数程序员和开发环境、工具则落后很远,现在,我们的目标就是将并发控制和并行计算推向大众,让普通程序员掌握和运用这些技术。
我在2004年底的演说《免费午餐即将结束——软件历史性地向并发靠拢》里讲到:“软件开发史上,自面向对象降生以来的又一个巨变已经叩向我们的房门,那就是并发。”正在酝酿中的并发变革,将像上世纪80年代末90年代初面向对象变革猛烈碰撞编程语言和工具一样,产生深远影响。在90年代初期,我们频繁奔波于让人脑子发木的“何为对象”、“什么是虚函数”之类主题的讨论会,而今后数年里,我们将同样繁忙,脑子同样紧张地参加各种会议,不过主题将变成“什么是活跃对象”、“何为future[译注5]”。这个过程实际上已经开始了。
数世纪之前,伽利略发明了望远镜,牛顿提出了引力定律。在那个以及随后的三个世纪里,不少研究人员理所当然地认为他们能做的,仅仅是一些改进性工作。但事实是仍然有大量开创性工作可做,不信你们问爱因斯坦、Robert Goddard和Wernher von Braun[译注6]。的确,伽利略是发现月球表面不规则、银河[译注7]是由星球表面包裹的稠密气体层构成之第一人。但现代人已经可以在月球表面行走,另一些人正在绘制星系、超星系和宇宙本底辐射[译注8]地图。伽利略能看到个别可能正处于穿越银河系半路上的星球,而我们现在知道他的视野该到5万光年[译注9]。据估算,我们今天的视觉能力可达数十亿光年。真是庆幸啊,似乎伽利略和牛顿已经把所有有趣的事情干完了,但爱因斯坦和Braun没有因此投身别的领域;欧几里得[译注10]和阿基米德好像做完了一切大事,但伽利略和牛顿并没有认为物理学已经完蛋。
有时候,我们似乎觉得所有重要工作在上世纪50和60年代都干完了;先人们真是幸福啊,有那么多新奇的事情和有趣的秘密等着他们。但事实是我们的工业仍然处于幼年。我们景仰伽利略和牛顿做出的伟大贡献,但他们是站在更早的巨人肩上的,就像我们现在站在他们肩上一样。
对于软件工程师来说,这是一个让人振奋的时代。在这个十年剩下的几年,以及下个十年的数年间,就像过去在面向对象、垃圾收集和互联网领域那样,我们将在并发控制上努力;在前辈们已取得的成绩基础上,发展他们的思想并普及大众。这需要我们充分利用过去已经产生的最好的技术,不断发展新技术,开发出高可用性产品,在实践中广泛应用。不再像面向对象和互联网技术革新时代,今天,我们将能亲眼目睹并发巨变的到来!
几乎在每个时代都能产生一些重大变革,随后,我们的软件和开发环境得到发展和改善。每一次,我们都小心翼翼地调整方向,然后加速行驶到下一个路口。就这样,我们经历了结构化编程、PC普及、面向对象和互联网变革。现在轮到并发和并行了,道路难免迂回曲折,我们应该做好排除前进路上一切障碍的准备。
朋友,让我们奋勇前进吧!新的天地等候着我们!
译注1
Edsger Wybe Dijkstra(1930-2002):荷兰科学家。1950年代ALGOL语言主要发明人之一,设计实现了第一个ALGOL60编译器;THE操作系统的设计者和开发者;现代编程语言之父,为程序语言结构、表示方法和实现做出了巨大贡献,研究领域还涉及图论、计算机教育、编程语言哲学等。
1972年,成为第七位图灵奖获得者。
他也是第一个提出不宜过分使用GOTO的人,是著名的Dijkstra 最短路径算法的作者。
在与癌症进行了多年的斗争之后,于2002年在荷兰家中与世长辞。
译注2
Tony Hoare(1934-):生于斯里兰卡,父母为英国人,主要工作地为英国。他实现了ALGOL60编译器;在程序语言定义与设计领域做出了杰出贡献,包括Hoare Logic、Quicksort算法和CSP(Communication Sequential Processes)等。
2000年,因其在计算机科学和教育方面的杰出贡献被英国皇家授予爵士爵位。
1980年,成为第十七位图灵奖获得者。
译注3
McCarthy(1927-):美国人。人工智能之父,Lisp语言的主要发明人。
1971年,成为第六位图灵奖获得者。
译注4
CSP(Communicating Sequential Processes),Tony Hoare提出。是一个精确的并发数学理论,可以用来构建多线程应用程序,确保构建的程序中不出现并发的常见问题,而且更重要的是,这一点能够得到证实。
译注5
参见http://blog.csdn.net/hsutter/archive/2006/08/03/1014911.aspx译注1。
译注6
Robert Goddard(1882-1945):美国人,现代火箭科学的创始人之一。1926年设计、制造和发射了世界上第一枚液态燃料火箭(见下图),爬升高度为12米,在全程2.5秒的试飞中仅飞行了55米。他毕生都在宣扬火箭是探测月球的可行工具,因此常被报章媒体取消。一生拥有200项火箭科技专利。1969年,根据他的理论建造的液态火箭,终于将人类送上月球。
他还于1909年最早提出了磁悬浮列车概念。
<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 132pt; HEIGHT: 247.5pt" alt="" type="#_x0000_t75"><imagedata o:href="http://p.blog.csdn.net/images/p_blog_csdn_net/hsutter/Robert%20Goddard的火箭.gif" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/01/clip_image001.gif"></imagedata></shape>
<shapetype id="_x0000_t75" coordsize="21600,21600" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f" u1:spt="75" u1:preferrelative="t"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path gradientshapeok="t" u1:extrusionok="f" u1:connecttype="rect"></path><lock aspectratio="t" u2:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 132pt; HEIGHT: 247.5pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/hehb/LOCALS~1/Temp/msoclip1/01/clip_image001.gif" u1:title="Robert Goddard的火箭"></imagedata></shape>
Wernher von Braun(1912-1977):生于德国,13岁时就用6支特大焰火把自己绑在滑板车上,点燃导火索进行飞行试验。1932年,布劳恩参加德国导弹研制的计划,领导火箭的研制。二次大战后,布劳恩作为“头脑财富”来到美国,担任美陆军导弹局发展处处长。他先后研制成红石、丘比特、潘兴式导弹。其中丘比特C型火箭,是美国第一颗人造卫星发射成功的关键保障。1961年美国宣布实施阿波罗载人登月计划。布劳恩成为总统空间事务科学顾问,分管阿波罗工程,直接主持土星5号运载火箭的研制工作。1970年,布劳恩任美国国家航空和航天局副局长,并兼任马歇尔航天中心主任。在两年任期内,布劳恩完成了航天飞机的初步设计。
译注7
原文为“Milky Way”。1920年代末,赵景深先生根据英译本翻译了契珂夫小说《万卡》,其中“Milky Way”一词先生翻译为“牛奶路”,这个译法被鲁迅先生作文(《风马牛》)批判,最后成为文坛著名的笑谈。不过更深层地考查,Milky这个词也有特定的文化意象,希腊传说中银河是天后赫拉发怒时洒落的乳汁所变成的一条路,供奥林帕斯山众神上下山之用。
译注8
原文为“universal background radiation”,也译作“宇宙背景辐射”。
现代宇宙学是爱因斯坦创立广义相对论后,把广义相对论应用于宇宙学研究而开创出来的。现代宇宙学的核心内容是大爆炸(Big Bang),而哈勃膨胀(Hubble Expansion)、宇宙微波本底辐射(CMBR,Cosmic Microwave Background Radiation)和大爆炸核合成(BBN,Big Bang Nucleosynthesis)则是大爆炸宇宙学的三大基石。
美国国家航空航天局(NASA)曾发布了详细的全天空宇宙微波本底辐射地图。证实宇宙大部分是由神秘的暗能量和暗物质组成的,并且给出了宇宙的确定年龄和精确的膨胀速度。
宇宙大爆炸发生后,早期宇宙是极高温度和极高密度的均匀气体,随着宇宙的膨胀,宇宙的温度会降低,当温度降低到退耦温度(Td=0.26eV,相当于3000K)以下时,质子与电子会复合生成氢原子并放出光子。当大多数自由电子被质子俘获后,光子就可以自由地在宇宙中传播,即宇宙对光子变得透明了,这就是我们能够观察到的宇宙中最古老的光,它携带了宇宙大爆炸后遗留下来的信息。由于宇宙学红移,我们现在观察到大爆炸后遗留下来光子频率的极大值已经移动到了微波波段,这就是宇宙微波本底辐射。
译注9
银河系的半径是五万光年。另,地球距离银心大致有两万六千光年。
译注10
欧几里得(约前330-前275):古希腊伟大数学家。早年在雅典受教育,熟知柏拉图的学说。公元前300年左右,受托勒密王(前364-前283)之邀,到埃及统治下的亚历山大城工作,长期从事教学、研究和著述。他写过不少数学、天文、光学和音乐方面的著作,而以巨著《几何原本》最闻名于世。《原本》原有13卷,后人又补充2卷。这本著作的原稿早已失传,现存的是公元4世纪末西翁的修订本和18世纪在梵蒂冈图书馆发现的希腊文手抄原本。这部西方世界现存最古老的数学著作,为2000年来用公理法建立演绎的数学体系树立了最早的典范。从1482年到19世纪末,《原本》竟用各种语言出了1000版以上。明朝万历年间(1607),徐光启和意大利传教士利玛窦把前6卷译成中文出版,定名为“几何原本”。