原文出处: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卷译成中文出版,定名为“几何原本”。
分享到:
相关推荐
然而,命运的曲折并未就此结束,一群鲨鱼的出现威胁到了他的胜利果实。尽管面临生死较量,老人并没有选择逃避,而是勇敢地与鲨鱼进行斗争,展示出无畏的勇气和坚定的决心。 尽管最终,大鱼只剩下一副骨架,但...
在结束本篇内容时,还需要注意文档中提到的日期和作者信息,这有助于了解文章的发表背景和作者的资质。例如,文章的作者包括罗海兵、张艳敏、唐勇,他们来自河北工程技术高等专科学校电气自动化系,河北沧州,发表...
若任务管理器中未显示PID信息,可以通过任务管理器的“查看”菜单,选择“选择列”,勾选PID选项。找到PID与netstat命令输出相匹配的进程,结束这个进程。在Windows系统中,可以直接在任务管理器的进程中找到对应PID...
课堂总结中,故事以一场盛大的骗局开始,又以同样的骗局结束,但它留给我们的反思却远远超过了一场闹剧的欢笑。它让我们思考如何在现实世界中保持真诚,抵制虚伪,鼓励人们在面对压力时依然保持诚实,敢于讲真话。 ...
- **声音问题**:如远端听不到声音,可能是本地麦克风未开启或故障;若远端有噪音,可能涉及麦克风、线缆或调音台故障,通过菜单系统进行诊断。 - **音频问题**:入会后听不到远端声音,可能是因为电视机音量过小...
Publish Over SSH插件是Jenkins的一个强大工具,允许我们在构建过程结束后,通过SSH协议将文件传输到远程服务器,从而实现自动化部署。首先,我们需要确保已经在Jenkins服务器上安装了这个插件。这通常可以通过...
我们不能期望未付出的努力就能换来丰厚的回报,只有脚踏实地,积极进取,才能在人生的道路上走得更远。 顶岗实习的结束,并非学习的终结,而是正式踏入社会的开始。我将以更积极的心态、更端正的态度,面对未来可能...
如果一切正常,那么恭喜您已经成功配置了Oracle服务命名。 #### 三、常见问题及解决方法 1. **无法连接到Oracle实例** - 检查tnsnames.ora文件中的配置是否正确无误。 - 确认目标服务器的防火墙设置允许外部访问...
屏幕录像专家是一款广泛应用于个人和企业中的屏幕录制软件,它能够帮助用户轻松捕捉电脑屏幕上的一切活动,包括视频、音频以及鼠标操作等。该软件的主要功能包括全屏录制、区域选择录制、摄像头录制、声音同步录制等...
虽然RJ005-录屏软件未明确提及编辑工具,但高质量的录屏软件往往内置基础的剪辑功能,如剪切、合并、添加转场效果等,以便用户对录制的视频进行简单调整。如果软件不包含编辑功能,它可能会导出视频到其他常见的视频...
1. 错误代码14001:可能是因为环境变量未正确设置,检查PATH和TNS_ADMIN等。 2. 端口冲突:确保监听器使用的端口没有被其他应用占用。 3. 许可证问题:如果出现许可证错误,可能需要重新导入许可证文件。 通过以上...
Oracle 11g客户端在Linux上的安装步骤详解 在Linux环境下安装Oracle 11g客户端需要遵循一系列详细的操作...如果一切顺利,现在你已经在Linux环境中成功搭建了Oracle 11g客户端,可以开始进行数据库管理和开发工作了。
公司正在全力研发一款重量级新产品,近期该产品临近发布,公司对内部发生的一切异常现象都非常敏感。为了维护公司的核心利益,确保新产品顺利发布,公司高层决定临时成立内部威胁情报分析小组,该小组将根据公司内部...
此步骤结束后,rootfs将被重新构建,但是原有的内核模块和配置文件将保持不变,这样可以避免重复工作。 #### 三、无线网络配置 一旦TF卡中的rootfs构建完毕,将其插入CubieBoard,并连接无线网卡和TTL串口线(用于...
投标人应自行踏勘施工建设现场,如投标人因未与时踏勘现场而导致的报价缺项漏项废标、或中标后无法完工,投标人自行承担一切后果。 四、货物需求 货物需求包括可视对讲系统、视频监控系统、社区光纤局域网系统、...
- `and so on`:等等,表示列举未尽。 - `apart from`:既可以表示除...之外别无,也可以表示除...之外尚有。 - `a plenty of`:许多,大量,同义词为"a lot of"。 - `as...as...`:用于比较,表示和...一样。 ...
1. **系统运行监测:**操作结束后,需持续关注各系统的运行状态,确保一切正常。 2. **系统复位与检修:**火灾扑灭后,应对所有系统进行复位,并进行全面的设备检修。 3. **记录与总结:**整理事故过程中的详细记录...
中毒者未恢复知觉前,不得用急救车送往较远医院急救,就近送往医院抢救时,途中应采取有效的急救措施,并应有医务人员护送。 **5.3 煤气着火事故的处理:** - 煤气设施着火时,应逐渐降低煤气压力,通入大量蒸汽或...
- **触发条件:** 当执行任何SQL语句且一切正常时,将返回此代码。 - **解决方法:** 无需采取任何行动。 ##### 2. SQL Code: +01201545 - **SQL State:** 未限定的列名被解释为一个有相互关系的引用 - **描述:** 此...