Stan Lippman是著名的C++语言先驱,CFront编译器开发团队的领导人,经典著作C++ Primer的作者。最近,Lippman受邀加盟微软,成为Visual C++.NET的新任首席软件设计师。这件事情在C++社区中引起了巨大的反响。几乎所有为.NET所困扰的传统C++程序员都感到欢欣鼓舞,连C++之父Bjarne Stroustrup都在私下里表示,这是一件好事,微软早该如此。
简介编辑本段回目录
Stan Lippman,现任微软公司Visual C++开发组系统架构师。Stan Lippman先生从1984年开始在Bell实验室从事C++方面的工作。
Stan Lippman参与开发最初的C++编译器,致力于Cfront的各种实现,包括从1986年的版本1.1到版本3.0,并领导了2.1和3.0版本的开发组。而后又参与了Foundation研究项目中关于程序设计环境的对象模型部分。在加入微软之前,Stan Lippman先生还曾历任迪士尼动画公司的首席软件设计师、美国宇航局喷气推进实验室(JPL)的著名顾问。
Stan Lippman先生撰写了数本享誉全球的经典书籍,包括《C++ Primer》 、 《Inside the C++ Object Model》 、 《Essential C++》 、 《C# Primer》 ,并编辑了《C++ Gems Programming Pearls from The C++ Report》 。
作为在C++领域无可争议的先驱者和技术领袖,Stan Lippman先生此次接受上海祝成信息科技有限公司邀请,带着其在C++领域纵横二十余载的传奇经历和“Still in Love with C++”的深沉感情,出任“祝成科技 2005 C++软件技术大会”主席,并将发表“Evolving C++ for the 21st Century”等多场精彩演讲,与中国C++社群分享其在C++技术领域多年的积累与思考。
Stan Lippman印象记编辑本段回目录
TechED开幕的9月17日上午,我在现场听了Stan Lippman的一堂讲演。因为时间比计划晚了一个小时,这堂讲座显得有些浮光掠影。这倒没关系,重量级的课程安排在周六,此刻大家坐在这里,就是为了一睹Stan的风采。
因为有事,下午我先回到公司。还没坐稳,就得到消息,说Stan愿意接受我们杂志的采访。事发突然,我们连问题都没有准备,于是抽了一张白纸,用极其潦草的英文写下几个问题,就带着刘如鸿和罗景文冲到了会场。在出租车上的时候,不知是因为疲倦还是急切,我居然一度觉得头晕脑胀,大概高血压病人就是这种感觉,很不舒服,我安定了一下心绪,闭目休息了一会才恢复过来。我想以后我回想起Stan Lippman的时候,一定也会记得那种头晕的感觉。
Stan在贵宾休息室等着我们,他个子不高,比我还矮一两公分,浅蓝色的眼睛,鼻子很高,头顶已经秃了,脑门亮亮的,跟我一样。不过他的头发是淡色的,配合他的秃头,显得很和谐,很有智慧的样子。他穿这白色的长袖衬衣,脚上登着一双深蓝色的篮球鞋。坐在沙发上的时候,我盯着他的鞋,想找出“Made in China”的标志,不过没找到。Stan说话速度不快,但发音特别标准,尤其是“th”的音,非常地道,即使语速稍快,也不会把“think”读成“sink”。
跟我们一起采访Stan的还有yesky的一位宋记者。采访从他开始。Yesky毕竟是比较偏大众一些,所以他问的问题,在我看来,比较一般。当然也有很多我们关心的东西,Stan回答的也很好。
轮到我们提问的时候,理论上时间只剩下20分钟。我采访过不少老外,深知守时的重要性。如果你守时,人家或许会高兴地多给你一些时间,如果啰里啰唆,则采访效果必然打折扣。
我先问了他在微软工作两年多来的感受,当然,他回答很棒,这是一个实现能够想到答案的问题。毕竟这里是TechED的会场。不过我还是相信他的回答是由衷的。
随后的问题比较技术,涉及到C++/CLI的产生原因,对Managed C++ Extension的评价,在C++/CLI发展过程中,他和Herb Sutter如何一步步说服Bjarne Stroustrup,赢得较多的支持,等等。这些问题经过整理以后,会刊登在下一期的《程序员》杂志上。
很显然他很喜欢回答这样的问题,语速提高了,手势和表情也丰富起来。我盯着他生动的脸,心里想,Stan可真是一位纯粹的技术大师,从他眼角的笑容就能看出他对技术的热忱。一般来讲,在国内,象他这个年龄的IT人,提到这一层次的技术问题,多数流露出的是一种超然的淡漠。究竟谁的层次更高?
我本来准备了一个略显尖锐的问题。因为我知道在C++/CLI的开发过程中,起主导作用的是比他晚入微软的Herb Sutter。我于是想问他,谁主导这次改革。没料想我还没开口,他就承认Herb Sutter的主导作用,并且对Herb Sutter的才能赞不绝口,主动地承认自己处于配角的位置。他说,我之于Herb Sutter在创建C++/CLI工作中的角色,就犹如我之于Bjarne Stroustrup在创建C++中的角色一样。言语之间,毫无骄奢与自大,毫无造作与虚夸,平和朴实得令人震惊。事后我回忆起来,Stan真正打动我的,正是这种虚怀若谷。在这方面,Stan达到了一种境界,令我有高山仰止,心向往之的感受。
我提完了问题,又跟他寒暄了几句,他对上海的印象非常之好,问我是更喜欢上海还是更喜欢北京。我说我从未到过上海,他很惊讶的样子,随后建议我去看看。这很有意思,一个第一次到中国来的老外建议我去中国的另一座城市看看,看得出来他很喜欢中国。于是我说,希望你下次与Herb Sutter一起来。他很快乐地答应说,一定回去鼓动Herb。
会面很短暂,但是给我们《程序员》的读者带来了好消息,Stan正在与李建忠先生策划,在我们的杂志上开设一个专栏,创作一系列技术文章,对C++/CLI做全景式的深入解析。这对于我们的读者来说,当然是一个好消息。
C++大师Stan Lippman:我对中国程序员的忠告编辑本段回目录
C++语言的创立者,斯坦·利普曼(Stan Lippman) 9月17日参加了在北京召开的微软技术大会Tech.Ed2004并做了"The C++ Binding, Integrating a Static and dynamic "的主题演讲。利普曼和天极网记者畅谈了对“中国程序员的30岁现象”的看法,对C++、NET、面向对象等新技术发表了自己的看法。
天极网:做为C++大师,你认为一个优秀的程序员应该具备什么素质?
Lippman:不仅是C++,对所有的语言而言,我认为一个好的程序员应该具备独立性,而且要不惧困难,你必须心甘情愿的面对失败。所谓的独立性就是因为有时你要能独处,你必须相信你能处理你明白的事情。我认为一个好的程序员要具备创造性,而管理人员要确保程序员有独立的空间,成为他们自己。
天极网:中国的程序员被一些人认为是吃青春饭的,程序员好像转向管理职位才有职业发展空间,你怎么看?
Lippman:我所认识的一些Unix创立者被提升为部门主管,但他们拒绝了提升,回到了程序员的职位上,因为他们认为这是自己能做得最好的地方。总之,最后辞掉了部门主管的职位,回去做研究去了。
在美国,我们认为一个好的程序员并不意味着他能成为一个好的管理人员。如果仅仅是为了金钱的原因而强迫程序员们去从事管理工作,这与公司的最佳利益是相违背的。因此我们发明了一个所谓的"多层升迁路径",随着技术经验的增长,微软分别为程序员设置了程序员、高级程序员以及MPS等等不同级别的技术职位。微软能认识到你的能力,如果你愿意成为管理人员,当然是可以的,但你不必做你不开心的事情,只用尽量保持你编程的创造性。
在上世纪八十年代,美国的公司都被一个相同的问题所困扰,起因就是迫使年龄大的编程人员不再从事编程工作。我猜想在中国,随着程序员年龄的增长,这种问题也会发生!
天极网:你如何看待C++语言的未来和C++与C##的关系?
Lippman:如果你想做web service,asp等等,c++将不会很适用,因为这个语言不灵活,它太繁复了,它不是为了网络服务(Web service)而设计的。
C##就是为了网络需求而设计的,.net的理念就是并不是一种语言能解决所有的问题。它不像Java,迫使你只能用一种语言。如果你在开发的时候发现另一个工具更好,那么你就可以选择另一个工具。
人们总喜欢让事物对立起来。如果有了微软的产品,你就一定要有SUN或Linux,因为人们喜欢看他们争斗,即使实际上并不会引发任何争斗。c++就像一把没有把手的刮胡刀,它不可能对所有的事物都适用,就像Visual Basic也不可能对所有人都适用一样。有很多人都使用c++,也有很多人使用Visual Basic,我们还需要其他的语言。c++很难,我们必须拥有难的语言,但同时,简单的工作也需要简单的语言来解决。实际上,没有哪种语言能流行10年。对于c++的未来来说,我想它还是会表现的很好。
记得1991年Java出现的时候,人们预言c++将会消失,可这并没有发生,而是SmallTalk消失了。当Linux出现的时候,人们又说微软有麻烦了,可实际上是Sun有了麻烦。C##并不会威胁到C++,在微软我们在一栋大楼里工作。我相信C++现在表现得很好,在微软起着重要的作用。我们为整个社区做出了很多贡献。
天极网:你怎么看待面向对象技术的发展前景?
Lippman:从开始来看,每一种汇编语言的产生都是为了在计算机环境中解决特定问题的。你使用这个语言解决问题,而解决方案将使你面对更复杂的问题,而这个语言可能就解决不了了,这时我们就需要另一种语言了。
面向对象的编程就是解决数据抽象这类问题而产生的,而面向对象同样面临网络环境下的一些新问题,这就是为什么我们需要一个更具弹性的平台。.NET是一个动态,独立性的语言平台,这也是为什么我希望在.NET上使用C++。我认为.NET很有潜力、是软件进步的方向。
天极网:在.NET环境下,你认为程序设计有何变化?
Lippman:我想每一个人都同意这一点,那就是软件是脆弱的。其实我们在软件上不算成功。开发软件所需要的时间太长了,并不是说我们的编程人员不合格,是因为这个工作不符合人类的自然本性,因为你必须像计算机那样进行线性的思索。
我们目前常用的方法就是将问题分割成更小的部分,然后保证它们连贯。.NET很有潜力,它是一个动态的模型,配套有很多的组件与很好的软件,能自适应的辨识状况、改变或生成代码。程序员是不会改变的,改变的只是工具,我们的职责就是要给程序员配备适用的工具。但目前我们做的还不够。C++、C sharp这些语言都只能算过渡性的语言。我们的程序员现在只能用它们,但并不代表将来应该用它们。
天极网:为了避免30岁时被炒掉,你对程序员有什么建议吗?
Lippman:我想如果你不喜欢编程,那么编程的生活将是十分恐怖的!而且如果你仅仅是出于对金钱的考虑而选择程序员这一职业,而并不是真心喜爱这个工作,那么我奉劝你还是早点抽身的好。
但是,如果你喜欢创造,那么你可以考虑做一名程序员。今天的世界离不开电脑,几乎没有什么事情不是由电脑来运作的。而且你可以想想编程是一件多么奇妙的事情啊。我认为,电脑技术是人类历史上最具创造力的技术,你必须能感受到它的奇妙。很多人也认为电脑技术很奇妙,试图弄清楚究竟是怎么一回事,可是非常困难,因为他们的思维不具备逻辑性。
如果你不喜欢编程,那么不必强迫自己做一名程序员。当然我们需要好的管理人员,但是我觉得一名好的程序员比一名管理人员更有价值,因为我们有太多的优秀管理人才,但优秀的程序员却并不多。
微软公司C++大师Stan Lippman演讲 编辑本段回目录
图为:微软公司C++大师Stan Lippman演讲(骆磊 摄)
2004年9月17日微软中国技术教育大会(Tech•Ed 2004)在北京国际会议中心隆重举行。本届大会以“集成创新”为主题,全面展示世界领先的IT技术和IT系统建设方案。
图为:微软公司C++大师Stan Lippman演讲(骆磊 摄)
以下为其演讲和对话全文:
翻译:今天我们非常容幸地请到了世界非常著名的C++Stan Lippman先生。从事软件开发者都知道他的经验,Stan Lippman先生从1985年到1994年在美国的贝尔实验室工作,和C++的创始人一起从事C++语言的开发。写了一本C++语言的入门书,这本书成了世界上千千万万从事C++语言程序编写的启蒙教程。在我们软件开发、陈长的过程中都从这本教材中受益匪浅。作为世界软件开发的一个鼻祖,我们非常高兴在微软技术大会请到他来到中国给我们讲课。从1985年到1994年Lippman先生在贝尔实验室,在1994年到了迪斯尼卡通片剧组部以及梦幻工作室,为这两个公司提供技术支持,还在加利弗尼亚喷气动力工作室,2000年加入微软,现在从事C++语言及所有下一步语言的开发做指导。他不远万里从美国来到这里跟大家做演示非常难得。网络通讯使得世界如此之小,来自世界各地的人都可以方便地进行交流,象征着现代技术的发展。
下面请大家用热烈的掌声欢迎Stan Lippman先生。
Stan Lippman(翻译):
就像你们看到这个讲台上有两个人说话,这轮讲座其实包含了两部分。第一部分,就是看图画,这个图画可能要有一千个字来形容。首先你们看到,这个图版就代替了过去静态C++,它是静态的,是事先被画好的。你们看到的这些上面跑动的壁虎,代表了动态,即微软现在开发的.NET,是动态的,这个静态的图画和动态的壁虎正好形成了对比的作用。对C++语言进一步的伸展在C++语言上怎么样在.NET平台上做进一步的开发,就要对C++做所谓增进,增进过程带来了很多的困难。怎样从一维空间成像变成动态的?这就是我接下来要讲的。C++是多种形式的编程语言,不像只支持单层面的编程方式,而是支持多层面编程方式。正是因为同时支持多层面编程方式,使得学习C++非常复杂。C++第一代开发是84、84年,首先要支持传统过程式或者渐进式的编程,即将这些在C++中有所体现。在1988年C++语言工作创造者不断升级C++的能力,具有了所谓多层能力,同时还支持普通编程模板,C++语言的功能不断增加。Generic Programming在1991年加入进来,并增加了模板能力。在1998年之前相当长的时间里,C++发展局限在怎样使C++逐渐稳定在按照各种定制的语言标准的工作范围内。现在使用的微软Visual的一些版本就是使用上面一些功能。在2005VisualC++版本就增加了动态的能力。
我把今天要讲的内容做个概述,首先给大家解释一下最新C++语言生成的内容,以及如何让编程人员使用传统的C++方式使用CLI。在CLI加上了一些新的功能,讲到了终极函数带来的功能,在.NET平台上,C++语言可以使你达到这因的功能。最后讲一下所有对C++语言的改动和变动以及增加的功能并不是微软一个公司所增加的独特的功能,这些增加符合国际编程语言的标准,ECMA是世界上制定标准的部门,对C++/CLI是支持的,所以这是世界性通用的语言,并不仅仅是微软的一项技术。
刚才你们所看到的这些简单的图画所表示的意思下面我用文字来给大家做解释。如果你想制定一个DataT&,在传统的C++语言到底做什么样的事?传统C++语言如何让人制定新的T。在传统C++语言,当你运行一个数据的时候,首先C++在运行的时候,资源的限定首先是静态的,在运行的时候不能变。所谓可预测性,就是要你在运行之前就要预测到可能发生的衡量,因为定好了数据在运行过程中就不能变。从这个意义上来讲,严格来说C++语言并不见得支持所谓面向对象,因为当你面对了一个对象的时候,要用一个d…才能突破一个固定的局限。正因为如此,运行的时候,你所面对的对象,带有什么样的信息在运行的时候你并不能拿到太多的信息,唯一可以拿到一个指针,其他的信息都不知道,这是传统C++的局限性。在.NET的范围之内,如上面所讲的,也受到这个局限性的影响。在CLI的编程模式里,这个T代表所谓的句柄,和老式的C++一个固定的存储相比较是不一样的。这个句柄所指向对象的时候还可以移动,可以track。一个对象在运行的时候去了什么地方,有什么样的变化,可以追踪。现在对编程人员来讲是透明式的。任何一个对象所谓的句柄在内存中是指向不通的对象,通过内存的镜向可以指向同一个对象。这个对象所谓的地址在内存中是非固定的,最后要去到什么地方,内存最后是否会回到,在这个过程中发生什么编程人员并不知道,也不需要知道。任何想要创作的对象,对象里所有种类的信息,保证在运行的时候一直跟着运行对象跑,这个时候可以把有关运行对象的信息调出来,而这些在传统C++中是做不到的。刚才所描述的传统的C++编程模式和新模式好象是完全矛盾的,所以在设计新C++模式就是要考虑如何处理这样的矛盾,以达到希望达到的功能。也许在座的各位想要批评我,我做的设计可能存在问题,在您批评之前,我们一起来进行设计、开发。我将C++语言当初完善的思路、讨论跟大家分享,以及在C++语言功能的增加上做出的选择的过程。
那么如何把C++动态和静态的功能合并起来?有三种选择,第一就是什么都不做,让软件开发者选择了种类,接下来什么都不用管。就是说在编程的时候不用做任何改动,完全是透明式的,让C++语言的合作伙伴来解决后面所有的细节,这可能是第一个很自然的选择。第二个选择在试图解决这样问题的时候,很多人说把编程用语言来解决,所以很多用户是用语言来解决编程问题。第三是在已有的C++语言加新的标记,在编程序的时候就要使用稍微不同的标记,用新的不同的标记来代表新的功能,这是第三个选择。不管你是做哪种选择,作为设计师来讲要非常小心,因为世界上有很多人包括做C++编程的人并不见得对微软友好,如果做错了可能造成对微软的攻击,所以这是需要小心的。
设计一个语言的第二个定义指在编程语言设计过程中,任何语言做一件事所用的信号应该是一种类型,做不同的事会不同类型,这样避免造成混乱,这是我做编程时要遵守。所以我们反复问自己一个问题,就是我们怎样在语言上增加新功能的同时保证传统C++语言使用者在使用传统C++语言基础上,能够理解并使用新C++语言的功能。经过很多考虑以及内部的辩论之后,最后解决刚刚讲的三个选择中的第一项选择是不可取的。采用透明方式,让所有编程人员都用老式编程方法,时而代表老的意思,时而代表新的意思,会带来很大的混乱,在信息方面也会带来很大的问题,因此第一种选择被摒弃了。
第二种选择,使用Library有相当一部分是有这个取向,在贝尔实验室,很多办法都是用Library方式解决的。在C++语言推行的时候,早期在业界引起很大的轰动,很多人在使用过程中不断希望增加C++的功能,C++语言的创始者认为这样不对,因为会使C++语言过于复杂,所以加了Library的功能。最后决定什么样的功能是语言本身的功能?是语言本身的功能还是外部Library?最后做选择,都是看加进去的东西是否是C++语言本身最需要的,还是只是为这个语言提供外部功能,以此为标准进行选择。刚开始这样开发的时候,我还要花时间说服其他的同事,我们不应该采用库的方法,要用库的方法加速推动在.NET动态的东西是不对的。在真正做开发之前,我意识到非常重要的一点,新增功能要让使用者感觉到就像C++语言以前增加的“面向对象”功能一样。在这个语言上所做的变化,当语言软件开发使用时,能感觉到这是一个精致的设置,是经过深思熟虑的设计思考,而不是一个非常粗糙的东西。同时因为它是C++语言的那部分,很重要的是要提供其他语言所没有的东西。因为C++被广泛使用,要改动会影响到很多人,所以加进去的东西必须要是它以前所没有的,不能提供的。对于我来说这是非常重要的工作,做得好可以使C++语言继续成为一个大家喜爱使用的有效率的工具,如果做不好就可能造成C++语言彻底消亡。
给大家举个很简单的例子,把C++语言在新的动态方面做的改动给大家做个介绍,通过介绍告诉大家,这个语言是怎么改变的。改动首先要考虑在使用时当你社定一个新的类,你在使用的时候跟使用传统的类感觉应该是差不多的,让大家有熟悉感。所有软件开发工作者都要明确意识到,我们使用的新功能和老功能是不一样的,但又在熟悉的类的范围内,不仅有新的功能,与传统的C++又有相似的地方。所以就采取了与老式C++语言面向用户时差不多的方式,大家可以看到,这两行编码,在老吗的编码中可以看到这两行命令代码,你用gcnew和传统的new是很相近的,将原来的星号变为上尖角。在运行的时候内部资源被结束后,新的功能就用gc代表,根据运行的含义,很容易记住。在.NET范围内,可以把传统式的代码和新的代码可以联起来使用,因为两种代码的标注不一样。从其他的例子中大家可以看到在新的C++CLI中,上面是新的制式,下面是老的制式,跟老式的非常接近,用不同的符号代表。而新的制式完全是动态的,在.NET范围内可以进行良好的运行,可以使C++使用更方便,又不是完全脱离原有的标记。动态的过程中平台要能追踪,这个符号代表对所面对的对象都有动态的功能。比如在使用的时候,上面T的种类是带分号的,这是一个使用的类,在使用的过程中它有函数功能,你可以掉它的函数,调函数的时候T建号,P是它的功能,所以使用起来跟老的C++语言很相似,容易过渡。除了对不同类的设定支持以外,我作为语言的开发者意识到光有这些是不够的,还要语言在运作时对联系到的索引和功能也要支持,即运行行为在工作中也要对它进行动态的支持。比如大家看到destructor,因为是运行时的功能,所以动态也要进行支持。在运行的时候,如果是面向一个种类,最后运行的时候就放在一个专门的资源点,在运行的驱动器里(gcnew)在结束的时候把所需要的函数一个个启动,就保证在内存中垃圾收集的工作可以很好地完成。语言的设计过程中,翻成中文叫“最后终结”,但“最后终结”在何时执行,语言本身并没有明确的设定。这就是C++CLI里代表的意思,最后终结是以不是事先确定的。非固定性的最后终结过程,在动态的环境中是非常好,在资源过程中如何把资源回收还给系统起到很好的作用。这在C++是非常重要的资源,在这方面的管理有很重要的特色,比如资源把数据库连接起来,在使用过程中也有自己特别的地方。在这种情况下,使用的资源在程序一旦用完后就要释放。在.NET采用的方式就是有一个最后释放的过程。但问题是最后的释放功能还需要进行专门的启动。C++的改变希望将它变成自动的。
下面给大家介绍如何用两个步骤使其变为自动化。第一个是从释放函数里集成下来,保证你的释放函数被准时地呼叫。第二个步就是说整个对象的时间和生命周期可以由你决定何时来释放。首先你释放的函数要确定被启动了,最后一项工作是完成的。这面是新的C++/CLI的种类,在新的CLI中,以前的C++也可以使用,黄色标出的是改变的部分,使得传统C++语言在.NET动态环境中可以继续得以使用。如果已掌握了C++编程能力,这也是可以让你继续使用C++编程的唯一方法。
这是C++2005版,总结刚才的讲座。第一C++/CLI保证它的类与以前传统的类是相同的,有些功能不够的,有些人使用别的语言来弥补。第二点变化,就是增加了一个新的layer of additional的功能,使得C++语言得到加强。未来的工作使得动态语言功能可以非常紧密地整合起来,传统语言定义的对象可以使用,反过来也一样,下一步语言可以进一步增强。C++2005包含的功能实际上是在.NET环境中进行高功能编程语言一个非常自然的选择。还有一点,刚才讲的C++/CLI并不是跟其他的语言竞争,所以这些语言共同形成了.NET环境上一整套的大家可以交换使用的编程语言。我们认为Visual Studio2005这个版本,是目前C++在.NET环境下非常好的选择。
下面是提问时间,Stan Lippman带来了一些签名书作为礼物送给大家。
提问:我是开发Windows Mobile应用的,我想问一下如何应用C++/CLI开发Windows Mobile应用?C++当代的语言是否已是一个新的语言了?是否传统的C++已经死了?有人说将来C++会在Mobile方面,非托管的C++跟JAVA比起来有优势吗?
Stan Lippman(翻译):首先是.NET这个平台本身也是对移动工具的开发,它是一个很自然的选择。beta(?)试用版里已经有,希望在第二版的时候把所有功能加进去。我把你的第二个问题反过来问你一下,如果你现在正在手术台上做一个心脏手术,你的命运跟这个手术是有直接相关的,你会不会把心脏舍去用.NET?在你对这个问题做一个肯定回答之前,传统式的C++继续有其存在的价值。
提问:现在具有CLI特征的编程对模板的支持与以前C++的范型是否有很大的区别?
Stan Lippman(翻译):传统的C++进一步增长,上面加了新的应用。这样Visual Studio2005版本的C++原来的C++功能全部在,在的基础上加了新的功能。如果你是用2005版C++的结果汇编,出来的结果和原来使用的C++一样,不同的是新的C++/CLI除了传统功能之外把.NET功能也整合在一起。
提问:既然是对C++语言进行新的扩充,在面向对象方面进行扩充,是否会在AOP方面做进一步的支持?
Stan Lippman(翻译):AOP并不是一个得到证实的技术,它的未来不知道怎样。C++和AOP不是一个技术。您讲的也许是一部分人具有这样的理念,认为这样做,但不是在语言开发中已被证实的。
提问:Stan Lippman先生你好,您能告诉我C++/CLI的垃圾收集功能和 的垃圾收集功能有什么区别?
Stan Lippman(翻译):垃圾收集能力是建立在共同的层面之上,所以垃圾收集能力无论是什么语言都是差不多的。而且语言本身对其改善的能力也是比较低的。
提问:新版本的C++对类型的动态可以动态到什么程度?比如在应用中我们可能要动态地定义一个类,我动态地指定它继承自哪些类,新版本的C++会对此支持吗?如果支持的话,这部分编译成代码是编译成.NET编码还是C++代码?因为我们用C++代码对效率比较重视,所以还是希望这些动态代码还是编译成本地代码好一些。
Stan Lippman(翻译):在.NET的运行提供能够跨越不同语言界限范围之上的功能,用三种方式达到这个目的。在操作系统平台之上有一个运行层次,我们可以把它做成任何我们需要的组建。第二是所有语言经过汇编之后,都进入了一个共同的中间层,所有的工具都是和中间语言有关的,而不是和程序本身有关的。未来的操作系统是微软开发的,每次都有描写类之外的数据,这个数据有一个额外的数据,描述你所编出的内容,所以信息都在,你还可以把信息调出来。这样使你通过汇编生成运行时,各种运行普及。这就是指得使用.NET语言在.NET运行平台上才有这样的成功。正因为如此,作为最后的总结,为什么.NET这个平台本身是比.NET其他使用的语言更重要。