C++的背影
——C++之父Bjarne Stroustrup印象
左轻侯
2002.11.4
热爱C++的朋友请不要误会,我并不是在暗示“C++已经日薄西山”,或者任何类似的意思。从语义上来说,C++作为一门编程语言,当然不会有什么背影。事实上,我想说的是一个人的背影。因此这个题目显得有点突兀,甚至哗众取宠。但是我想,在C++社群中,每一个人都会同意,有一个名字就是C++的象征。这个名字当然就是Bjarne Stroustrup。
Bjarne Stroustrup博士,1950年出生于丹麦,先后毕业于丹麦阿鲁斯大学和英国剑桥大学,AT&T大规模程序设计研究部门负责人,AT&T 贝尔实验室和ACM成员。1979年,Stroustrup开始开发一种语言,当时称为"C with Class",后来演化为C++。1998年,ANSI/ISO C++标准建立,同年,Stroustrup推出其经典著作The C++ Programming Language的第三版。
2002年10月,Stroustrup首次访问中国。
接触IT界的时间越长,我就越明显地发现,那些曾经在媒体上喧嚣一时的话题,往往只是些无关紧要的事情,而真正有着深刻意义和影响的大事,却很容易默默无闻。
Stroustrup的访华,在技术圈子里引起了很大的轰动。多少年来,中国的程序员一直通过翻译的著作这样的间接渠道(往往滞后时间很长),在黑暗中辛苦摸索。直到互联网普及之后,我们才能够通过网络在第一时间追踪最新的技术,与国外的同行进行技术交流,慢慢地、一步步地拉近与世界的距离。今天,我们终于有机会当面请教这位世界级的大师,直接聆听这个领域中最权威的声音。我们再也不用费尽心思去琢磨蹩脚翻译背后的作者的思想,不用迷惑于那些经常出自于一知半解的专家之口、不知道经过多少次转述、真伪难辨的惊人之论了。在得知Stroustrup访华的消息之后,我就和一些朋友谈到,这是一个开始,希望中国的技术界能够契此机会,依靠大家的努力,与国际上的技术社群建立稳定的交流机制,希望这件事标志着中国的程序员们不再是一个孤立、被国际社会遗忘的群体,真真正正成为世界大家庭的一员。
不过,除了主办方做的一些宣传之外,Stroustrup的到来,几乎没有见诸任何主流媒体,虽然Stroustrup的成就和对计算机界的影响力,足以与当代任何一个人相比,虽然这次事件的意义,远远超过许多国内IT圈子里的鸡毛蒜皮。
Stroustrup的这次访华,行经北京、西安、杭州、上海四个城市,时间长达半个月。在此期间,我有幸见过他三次。
第一次是他刚刚到达北京的第二天,华章的两位朋友请他在北海后门的一家饭店吃饭,留了一个机会给我和他共进晚餐。我至今对北京的堵车痛恨无比,因为那天正好是周末,加上大雨,我竟然比预定的时间晚了一个多小时到达目的地。当我气急败坏地冲进那家饭店时,一眼就看到,在最靠里面的角落里,华章的两位朋友中间,坐着一位老外。
他站起来,很有礼貌地和我握手。他本人和那张著名的照片(在C++社区中尽人皆知)上的样子很象,有点秃顶,衣着随便,与其说是一位来中国访问的专家,不如说是一个在自己家中随意进餐的蓝领。我用英语结结巴巴地解释了迟到的原因,他点着头“哦”了好几声,一副“理解理解”的样子,仿佛他也曾深受堵车之苦。虽然我们素昧平生,但对方的神情和简单的几句话,却一下子拉近了我们的距离。这句话听起来象书上的套话,但身临其境的我,却的确有这样的感觉。
在这次见面之前,我曾经想象过Stroustrup会是一个什么样的人,会不会比较高傲。因为我知道,大凡超群绝伦的人物,往往在性格上都有一些偏执,何况以C++之父的身份?但是和我想象的完全相反,Stroustrup非常和善,具有技术人员特有的那种极佳的幽默感,很爱笑,甚至可以说有点天真。当我说了一句倾慕的话之后,他居然会象个孩子一样不好意思。
饭店里很吵,其实不是谈话的好地方。我的口语水平本来就不好,大学毕业后又荒废了好几年,但是面对Stroustrup,不知为什么,我居然勇气百倍,用这种洋泾滨英语连说带比划,跟他说了一些事情。我告诉他,我翻译过他的一个关于C++的风格与技术的FAQ,而且正在阅读他的名著《C++程序设计语言》;我告诉他,中国有很多C++程序员,大家期待他的到来已经很久了;我告诉他,中国的程序员缺乏与国外社群的交流,希望我们能够推动这种交流;我还为自己的口语水平而道歉(BS很理解地说英语也不是他的母语),希望能够通过Email交流……
然后Stroustrup用一连串低沉的英语作为回答,但并不是那种严肃的学术性的发言,而是说得很随意,也很投入,显然他在打动别人之前先打动了自己。说得精彩之处,他会左顾右盼,然后和我们一起开怀大笑。
这是一家普通的饭店,菜也是很普通的菜。BS和北京街头随处可见的老外并没有多少区别。说着说着,我突然有一种冲动,我想,这些坐在我们旁边自顾自高谈阔论的人,会不会知道角落里这个谈笑风生、自得其乐的老外,就是一位震铄当代的大师,一位为人类做出过伟大贡献的人?
“人和人,真的是很不一样……”我想。
由于BS明天一早还要赶飞机去西安,所以我们相聚的时间相当有限。出了店门,我们挥手告别。我的收获是BS在《C++程序设计语言》中文版上的签名和一张合影。
回到家里,整个夜晚我都在房间走来走去。同租的室友问我:“你今天好象很激动啊?”
“当然,”我回答说,“因为我见到了这个领域的巅峰。”
Stroustrup的行程是先到北京安顿,然后飞往西安,按照西安-北京-杭州-上海这个顺序进行正式访问。在等待Stroustrup回北京的时候,我在csdn上看到了一个贴子:《Bjarne Stroustrup在西安的讲座很令人失望》。点进去看,倒不是对讲座的内容失望,而是批判举办活动中的一些现象,这也正是我最担心的。其实我知道举办方作出了很大努力,有些技术上的问题情有可原,对于这次事件本身来说,算不得什么大不了的事情。但是触动我的是,文中说到Stroustrup演讲完以后,听众们提问的情况。贴子的原文如下:
“……那位主持人在宣布开始提问后,就走了出去,之后混乱的场面就开始了,我坐在地板上听了几个问题,大多是问C++、C#、Java哪门语言更好之类的问题,这些人可能并不了解Bjarne Stroustrup,他本人早都说过不会对语言的优劣进行评述,可这些人还是不停的问,甚至还有人问Bjarne Stroustrup,在计算机和自己的女朋友当中他更喜欢哪一个?是不是更喜欢计算机?这种问题,我不想作什么评论,好好的机会,就这样......唉!!我可以明显的看到Bjarne Stroustrup的脸上有不悦的表情。在看到前面的人越聚越多,并开始拼命的想抢到话筒的时候,我决定还是早点离开为妙,我从地上站起身来,拍拍身上的尘土,大踏步的离开了。”
我以前并没有和Stroustrup打过交道,也不知道他对中国的印象如何。我曾猜想过,Stroustrup是如何看待中国的?是不是把我们当作一个遥远的蛮荒之地来看待,就象我们看待非洲某个小国一样?如果真是这样,那也一点都不奇怪,毕竟中国在国际上的形象是一个IT市场,而不是一个IT领跑者。当然随便进行这种猜测是不礼貌的,但是那也要我们能够赢得人家的尊敬才行。当得知有见到Stroustrup的机会时,我和朋友曾经互相勉励:“不要丢中国程序员的脸啊。”
一年多以前,我曾对朋友说过:“这几年中国程序员的水平是长进了很多,以前是不知道自己水平有多差,现在是知道自己水平有多差了。”IT技术的核心在国外,我们开放国门的时候也并不长,水平比不上人家,是没有办法的事情。知道自己水平差以后,无非是两点,一是要承认现实,二是要想办法追赶。
进入计算机这个行业以来,我已经见过了无数自以为或被人以为是高手的妄人,种种气焰毋庸详说,尽管在Stroustrup面前他们连学生的资格都远远够不上。中国到底有多少人在使用C++?有多少人对C++有深入全面的了解(虽然我知道水平高的人肯定是有的)?我们的民族软件产业,到底是由一群什么人在支撑?
期待中的大师终于来了,期望中的face-to-face的交流场面也终于出现了,面对显示器屏幕,我突然有一种莫名的孤独苍凉的感觉。
第二次见到Stroustrup,也是在饭店里,由我作东,北京的几个程序员朋友和他进行一次小范围的交流。该死的历史又一次重演了,又是周末,又是大雨,我又一次迟到了。不同的是,当我再次气急败坏地冲进饭店时,看到了不同的场景。Stroustrup一个人坐在桌子的一边,左右座位都是空的,其他人坐在他的对面,大家都不说话,只有他一个人在默默地吃东西。他好象已经习惯了我的迟到,问了我一句:“You got lost?”
也许是受到了这种气氛的影响,我坐在他旁边的时候,一时居然不知道应该说什么好。虽然我很想为他在西安的遭遇说几句道歉的话,但又开不了口。
他拿起手头的一份英文报纸,指着上面的Texas大学对我说:“A small world.”原来他已经受聘担任Texas大学的教授了。我问:“Then you leave AT&T?”他说AT&T仍然保留了他的位置。我还问过他关于Lippman加入微软担任VC.net首席架构师的事情,与我的预料不同,他似乎对微软的编译器评价很高。
但是总的来说,这一次Stroustrup比上一次要沉默得多,很少发笑,大多数时候都在默默吃东西。我终于忍不住,问了一个也许不太礼貌的问题:“Do you feel lonely in China?”Stroustrup没有听明白“lonely”这个词,当他弄明白了之后,很严肃地说:“No.”他指指对面,又指指外面,说(当然是用英文):“他们,还有很多人,他们都给了我很好的待遇。”“希望中国能给您留下一个好印象。”“现在就已经是这样了。”但愿如此。
吃完饭后,Stroustrup去宾馆接受一家媒体的采访。我和几个朋友继续聊天。虽然他们和我一样,因为口语水平的限制,没有能和Stroustrup畅所欲言,但是兴奋之情都溢于言表。有一位还嚷嚷着要去报考Stroustrup的研究生,虽然后者说他接受Texas大学的聘用以后,已经收到了数以千计的application。
在白石桥的人行天桥上,望着黑暗的天空下来来往往的车流,我对一个朋友说,我为Stroustrup感到不平。象比尔·盖茨、拉里·埃利森这种人访华,都会享受国宾级的待遇,媒体上也会铺天盖地地宣传。Stroustrup无论从成就还是从影响力上来说,都和他们是一个层次的,为什么他的中国之行会这样朴素、低调、默默无闻?对方略作思考后回答,因为盖茨和埃利森都身为大商业公司的首脑,可以直接影响中国的市场和政府。而Stroustrup虽然发明了C++和实际掌握着C++语言的标准,但他对业界的影响并不那么直接,他本人也不是有钱人。我说:“这个我也知道,但我还是为他感到不平。”
Stroustrup在1979年发明C++语言,至今已经二十多年,一直在为C++的完善、发展和标准化而奋斗。在在Stroustrup的理想中(也是他一直在不懈提倡的),C++应该是一种中立的、开放的、不依赖于任何平台的、不被任何一家商业公司所操纵的语言,它的标准掌握在ISO C++标准委员会中。在这一点上,C++和Delphi与Java这样的语言有着本质的区别。
虽然C++出现得很早,但是它的ISO标准经过千锤百炼,迟至1998年才正式出台。Stroustrup不满商业公司为了自己的利益,把C++变成各种乱七八糟的方言,花了很多心血在C++的标准化工作上面。在来自世界各地的志愿者们的共同努力下,新的C++标准和标准库都已经臻于完美。从这个意义上来说,Stroustrup创立的不仅仅是一种语言,而是一种文化。Stroustrup成功了(C++也许是当前使用最广泛的通用工业语言),但他仍然有很多事情要做。Stroustrup的这次中国之行,可以看作是他和他的理念与中国软件界的一次正面接触。从我看到的情况来说,至少中国软件界的气氛,与Stroustrup浑身上下的气质并不那么相投。
网上有一个所谓IEEE对Stroustrup专访的文章,很明显是一个愚人节笑话,内容是Stroustrup宣扬他故意将C++设计得难以学习,是为了提高程序员的薪水。不知哪位好事之徒把它译成了中文,导致了我几乎在常去的每一个论坛(包括非技术性的论坛)上都发现了这个东西的转贴(有时还是一而再再而三的转贴),底下跟着一大堆煞有介事的评论。在后来的通信中,我把这个事告诉了Stroustrup,他显然当成了笑话来听,回答说:“It doesn't matter as long as they don't believe it.”
我该怎么回答他,告诉他其实大家都信以为真?
最后一次见到Stroustrup,是在北京大学的一个C++语言研讨会上。前一天在清华的演讲我没有去,据说相当成功。北大的这个研讨会是内部性质的,规模不大,实行凭证入场的方式,应该是保证了参与者的质量。与会的还有几位重量级的人物,包括《C++程序设计语言》的译者、北大的裘宗燕教授,另外慕名而来的估计也不少。
我无论如何不能再迟到了,提前一个小时到了会场。我刚到,就陆陆续续有人进来了,一边互相打听着“C++之父的研讨会是不是在这里”。很多人带着Stroustrup著作的各种版本,估计是来寻求签名的。终于,Stroustrup在华章公司和北大计科系的人的簇拥下出现了,今天他看起来精神不错。
首先是Stroustrup做了一个题为《Speak C++ Like a Native》(将C++作为一种母语)的演讲,概要地说明了C++的设计思想和几种编程风格。内容比较基础,而且在西安交大和清华做的演讲也是这个,我没有太在意。接下来是由举办方邀请的人进行比较正式的发言,裘宗燕第一,熊节第二,我排在第三个。我提的是一个关于通过C++语言开发跨平台程序的问题,询问C++为什么没有一个象Delphi那样的跨越平台的framework,以及现有的标准库是否有往这方面发展的意向。这个问题发挥的弹性很大,可以详细讨论,也可以几句话带过去。但是Stroustrup象回答前两个问题一样,非常详尽和耐心地做了回答,从C++的目标和定位说起,谈到标准库和商业公司的专有库的区别,谈到因为资金问题标准库不太可能发展成为包罗万象的framework,最后建议我可以尝试一些比较优秀的第三方库。在说话的时候,Stroustrup一直注视着我的眼睛,不断打着手势,认真得让我有愧疚的感觉,因为我的理解往往跟不上他的言锋。
最精彩的是自由答问时间,很多人都已经跃跃欲试了。我已经无法详细地回忆起当时的具体情形,总之发言非常踊跃。在我的印象中,似乎没有出现特别有创意的问题(当然在这种即兴发言中,很难出现这种好问题),不过大多数的问题都有相当的水平。其实不用听他们问的内容,只需要看到那一张张神情专注而略显紧张的年轻的脸,就能够让人产生一种熟悉和亲切的感觉……毋庸讳言的是,其实有不少问题纯属浪费时间,因为类似的问题Stroustrup早已经回答过许多次了,在网上稍微查找一下就能找到答案。这种情况应该可以从一个侧面说明,中国程序员作为一个整体,与国外的交流还是太少了,仍然缺乏放眼世界的胸襟和眼光。
“Stroustrup真可怜,被人一遍又一遍地问这些同样的问题,”负责陪同Stroustrup的一位朋友忍不住嘀咕说,很容易想象,这种场面他已经见过好多回了。尽管如此,Stroustrup仍然不厌其烦地解答着每一个问题,认真得让人想起近代历史上的传教士,这份耐心真是让我佩服无己。很显然,今天他兴致很高,特别是遇到了good question的时候,发挥的时间远远超过了预定的期限。几个小时的热烈讨论,让Stroustrup已经略显疲态,后来不得不背靠着墙壁说话(不知为何,他就是不愿意规规矩矩地坐着,整个自由答问期间都是采用站立的姿势,甚至常常用一只脚踩在椅子上)。但是当主持者向他示意时间已到,可以结束时,他却摇手反对,表示要继续讨论下去。现场发出了一片善意的笑声……
晚饭由北大的一位副教授做东,作陪的有华章的几位编辑,C-View的孟岩和王昕,科泰的陈榕。陈榕在微软工作过多年,英语很好,和Stroustrup聊了很长时间,谈的是业界的一些事情,基本上没有涉及技术问题。
曲终人散,我们走出北大的校门,Stroustrup将在第二天飞往上海。临上车之前,他很严肃地和我们中的每一个人握手道别,并表示感谢。不知中国之行带给他的是什么?但我知道,他带给我们有很多,包括以后建立的联系。在北京的夜色中,这个年过五十、头发已经稍微有些花白的丹麦人转身离去,留下一个沉默的背影。
再见,Stroustrup。