欢迎来到天天文库
浏览记录
ID:30396882
大小:84.35 KB
页数:9页
时间:2018-12-29
《【转】微软架构师谈编程语言发展》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、【转】微软架构师谈编程语言发展【网络综合-计算机软件水平考试指南】:Charles:好的。今天我们请到了微软设计编程语言的大师们。请你们介绍一下自己。(译者注:Channel9的主持人,从其对话来看,应该是编程出身,对于程序有很好的理解)Herb:我是HerbSutter,我是VC++小组的架构师。(译者注:C++标准委员会主席,ExceptionalC++系列的作者,C++领域的大牛人)Erik:ErikMeijer,我在VB以及C#小组工作。(译者注:先是SQLServer组的架构师,现为VB、C#组的架构师,从事把CL
2、R、关系数据库、XML数据合为一体的伟大事业)Brian:我是BrianBeckman,和ErikMeijer一起工作。呵呵(译者注:物理学家,天体物理为主,业余时间写程序,包括编译器,自称来自从事影视娱乐业的家族,家里以其从事科学研究为奇)Anders:我是AndersHejlsberg,我的技术领域是C#。(译者注:微软的"技术小子",公认的牛人,C#的主要设计者,.NET框架的重要参与者。微软之前,Anders是Borland的工程师,TurboPASCAL的主要开发人员,Delphi的首席架构师)Charles:我们
3、今天访谈主要讨论两个相关的论题:可组合性(Composability)与编程语言。作为程序员,当我们构造系统时,总是要面对这两个问题。你们是创设语法,搭建架构的人。所以,我想讨论的一点是,你们是如何协调工作的?三个语言--C#、VB和C++,都在演进,同时又服务于不同的目的,C++更多服务于系统级,C#和VB更多偏向应用层面。而且,语言在不断创新(译者注:谢谢ponda的修正)。这一切是如何形成的?你们一起工作吗?你们是如何决定语言的创新的(译者注:谢谢ponda的修正)?你们是一起设计,还是想到什么后再与他人共享?很抱歉提
4、这样的怪问题,请试着回答。Anders:我想,你说的两种情况都存在吧。事实上,早在我们做LINQ之前,Erik就在Comega项目做了很多工作了。在LINQ和Omega之间有很多相似之处,有很多互相影响的部分。我们一直在讨论相关的问题。而且,Erik实际也在C#设计组中,所以,我们总是就当前的工作及时交换意见。VB组和C++组的人也在一幢楼里工作,大家经常碰到一起。所以,我认为这一切是相互渗透,以及不断聊天的结果。Charles:但是我的意思是,你们是否也象最终用户一样对自己做出区分?比如,有的事情在VB中能做,C#中就做不
5、了。比如,对于VB来说,完全的晚绑定以非常简单的方式实现了,而C#中就没有晚绑定。为什么VB和C#有这样的不同?你们有意如此的吗?Anders:我认为这个问题更多的是历史原因。我想说的是,我们必须考虑历史因素,尤其当你讨论VB时更是如此。VB有其悠久而丰富的历史,从一开始,VB就作为晚绑定的语言出现。(开始时)VB没有任何类型。很显然,晚绑定对于VB来说有某种核心作用。但是,从那时开始,VB已经逐步演进为一种更为"强类型"的语言,到现在,甚至你可以把VB看作一种支持晚绑定的强类型语言。呵呵。但实际上,这个过程是相反的。C#从
6、一开始就是强类型语言,而且直到现在,我们都坚持早绑定。这并不是说我们在未来也不会支持晚绑定,但是,我们很可能以不同于VB的方式支持,而且可能对晚绑定的方式做些改进。C#是否支持晚绑定其实只是一种选择。对于老式的弱类型对象模型来说,比如OLE,如果我们从晚绑定角度出发,会比从早绑定角度出发好讨论得多,因为这种对象模型无非就是对象的若干方法的交互,反射,等等。Charles:这些东西完全可以靠底层帮你完成…Anders:是的,对,非常正确!Herb:语言之间的差异在一定程度上是由用户引起的。对于靠近底层编程的C和C++程序员来说
7、,性能永远都是一个核心和主要的问题。你可能发现不同语言有不同的特性,但是,更经常的是,你会发现这些不同特性想要解决的都是同一类的问题,比如,"并行执行"。现在,没有谁能够忽视这个问题,并且,一种语言如果想在未来5到10年保留在主流编程语言的队伍中,这个问题就是无法忽视的,因为这是硬件的发展方向。我们正处于一个新的时代,50年以来,我们首次在非单核的机器上工作。任何人都无法忽视这个现象。因此,就这个问题来说,大家都要处理一些相似的东西,但是,处理方式、语法可能不同,具体的特性也可能不尽相同。我也相信,不同语言推出同一特性的时间
8、先后顺序也不相同,因为不同同语言针对不同的客户群体服务,客户要求的东西不一样,因此,对于特性处理的时间先后顺序并不一致。就像Anders说的,各种情况都有一些。Erik:是这样的。对VB和C#有怎样的差异,我可以给出一个具体的例子。该例子是"无名函数(或'lambda表达式')"。我们想在
此文档下载收益归作者所有