VB.NET和C#的发展与动态语言运行时

  在去年微软的专业开发者大会上(Professional Developers Conference PDC 2008),微软就开发者在.NET平台上的未来做了详细的展望,本文我们将概括地来看一下即将到来的.NET 4.0 Framework的一些特性,以及全新的Microsoft 系编程语言,讨论下微软对于.NET Platform在接下来几年的长远展望。

VB.NET和C#的联合发展

  当前来自软件的最首要的信息之一是针对Microsoft Visual Basic .NET开发者的。VB.NET和Microsoft Visual C#都是构建在通用语言运行时(Common Language Runtime—CLR)之上,这意味着它们都向下编译成通用中间语言(Common Intermediate Language—CIL)。

  由于二者均向下编译成相同的代码,因而两个语言内部也不存在很大的差别。但是,两种语言却由微软两个不同的团队来维护,而且几年来的这种分离由于开发团队在各自产品上有不同的视角和理念,导致C#和VB.NET这两种语言演变出许多语言方面的特性。许多令人兴奋的特性最初出现在C#中最后却成了VB.NET的特性,很多VB.NET开发者都感到了这一点。自然地,这引起了VB.NET阵营的不满。

  联合发展是微软的一个承诺,借此承认C#和VB.NET为相同重要的语言,而且微软承诺在语言特性的发展方面,这些特性会同时加入到两个语言中。开发者不再需要为了某个特性而选择某个语言,也不再需要讨论到底哪个语言更好,他们要做的只是从语法方面来选择自己的语言就可以了。也许C#开发者会有一点挥之不去的优越感,VB.NET开发者会为此不爽,但联合发展后VB.NET开发者可以提醒“骄傲”的C#开发者,因为两种语言只是不同外表下的同一个东西。

动态语言运行时(Dynamic Language Runtime)的介绍

  微软很敏感地意识到.NET Framework并不是构建应用时的唯一选择。快速地看看现在的开发环境,你会发现有很多语言选择。人们花费时间和精力用这些语言来写出有用的组件,问题来了:怎么能够让这些用其他语言写出的组件不至于在.NET上重写?

  也许即将发布的.NET 4.0最令人激动的新特性是动态语言运行时(Dynamic Language Runtime—DLR)。就像通用语言运行时(Common Language Runtime—CLR)为静态型语言如C#和VB.NET提供了通用平台一样,动态语言运行时(Dynamic Language Runtime—DLR)为像JavaScript, Ruby, Python甚至COM组件等动态型语言提供了通用平台。这代表.NET Framework在互操作性方面向前迈进了一大步,提供了一种语言操作的抽象,共享存储空间避免数据在进程中反复的集结,像垃圾收集一样的一套通用语言特性,以及将一种数据表达转换成另一种。

  在更高层,你可以认为动态语言运行时(Dynamic Language Runtime—DLR)有三个层:

  ◆.NET语言集成(.NET Language Integration)
  ◆DLR核心组件(DLR Core Components)
  ◆语言结合(Language Binders)

  第一层,.NET语言集成,代表.NET语言有了一个概念即DLR是什么以及它怎么用。大部分来说,你甚至不会注意到DLR的这个方面,因为大部分的.NET语言有一个自然的集成点。IronRuby和IronPython都是动态型语言,所以DLR相合VB.NET总是在对象类型支持后联编(late binding)的概念,所以DLR很好地与后联编(late binding)解决合成一体。然而C#没有后联编(late binding)的概念,所以需要一个附加的静态型来支持动态语言。

  第二层是动态语言运行时(Dynamic Language Runtime—DLR)自身,由三个核心组件组成:表达式树(Expression Trees),动态分配(Dynamic Dispatch),和调用点缓存(Call Site Caching)。一个表达式树是以一棵树方式的代码表现方式,它将语言抽象成一个连续的能够被DLR操作的格式。一旦动态代码以树的方式表现,DLR就能够阅读这棵树并且为了实际的执行从这棵树生成CLR代码。将代码解释成一个表达式树,然后创建CLR是一个昂贵的操作,所以DLR采用了一种性能技术即我们所知道的调用点缓存(Call Site Caching)来避免每次动态代码被调用时的重新编译。动态分配(Dynamic Dispatch)确保适当的语言结合(Language Binders)能够用于动态调用。

  语言结合(Language Binders)构成了第三层,它是动态语言运行时(Dynamic Language Runtime—DLR)所需要的某些操作的特定语言工具。当然DLR远比本文简单介绍地要详细、功能强大得多,更多的信息来自于你自己的切身应用。

时间: 2024-09-18 07:19:16

VB.NET和C#的发展与动态语言运行时的相关文章

一起谈.NET技术,VB.NET和C#的发展与动态语言运行时

在去年微软的专业开发者大会上(Professional Developers Conference PDC 2008),微软就开发者在.NET平台上的未来做了详细的展望,本文我们将概括地来看一下即将到来的.NET 4.0 Framework的一些特性,以及全新的Microsoft 系编程语言,讨论下微软对于.NET Platform在接下来几年的长远展望. VB.NET和C#的联合发展 当前来自软件的最首要的信息之一是针对Microsoft Visual Basic .NET开发者的.VB.NE

试问:动态语言是否将会挽救Swing?

动态 据国外网站报道,动态语言是否将会挽救Swing?Swing是否需要挽救? Julian Doherty 通过陈述JRuby可以挽救Swing开始了这场讨论.2003年,Joshua Marinacci发文列出了Swing失败的原因: ·Swing应用建立缓慢 ·Swing设计管理器很恶心 ·Swing应用很难维护 ·Swing功能太广泛 ·没有自身特质 ·Swing应用历史纪录比较糟糕 Doherty 指出动态语言,尤其是Ruby,能帮助解决这些问题.回应Doherty的观点, pinde

冒号和他的学生们(连载16)——动态语言

16.动态语言 Freedom is not free --Kelly Strong 叹号急不可耐地问:"现在可以谈动态语言了吧?" 冒号感言:"曾几何时,动态语言还只是陪太子读书的角色,那时候它们的名字是'脚本语言'.近来却迅速崛起,俨然有与静态语言分庭抗礼之势." 问号忍不住问道:"动态语言与脚本语言是一回事吗?" "相比动态语言定义上的模糊,脚本语言的概念还是比较明确的."冒号回避直接给出答案,"脚本(scri

冒号课堂§5.3:动态语言

第五课 语言小谈(3) 5.3动态语言--披着彩衣飞舞的脚本语言 故凡天下之理,欲向动上求静,静上求动 --<蔡牧堂·发微论> 关键词: 动态语言,静态语言,脚本语言 摘要: 动态语言简谈 !预览 ·程序是为终端用户服务的,而脚本是为程序员服务的 ·动态语言秉承的一个理念是:优化人的时间而不是机器的时间 ·待静态语言披盔戴甲.备马抬枪之际,动态语言已衣袂飘飘,长剑出手了 ·当脚本语言披上动态语言的彩衣,昔日不起眼的毛毛虫便羽化成碟,开始飘舞在众人追逐的目光之中 ?提问 ·脚本与程序的区别是什么

公共语言运行时CLR由CTS、CLS、JIT组成,请问C#编译器和VB.NET编译器属于CLR吗?

问题描述 公共语言运行时CLR由CTS.CLS.JIT组成,那么请问:C#编译器和VB.NET编译器属于CLR吗? 解决方案 解决方案二:这两者应该没关系吧.是两个东西,编译器是将C#VB代码编译成CLR可以执行的中间语言.解决方案三:CLR跟JVM的意义基本相等,就是一个运行时的环境.直接查一下定义就可以看到,"CLR的核心功能包括:内存管理.程序集加载.安全性.异常处理和线程同步".因此可以看到它跟编程语言无关.MFC跟编程语言其实是也无关,但是它显然几乎只是被特定语言接受,不如C

微软放缓.NET动态语言开发计划,徐汇区网站设计

微软曾经作出承诺,开发能运行在.NET环境的动态语言实现,例如Ruby语言实现IronRuby和Python语言实现IronPython. 当前IronRuby项目有点不妙,核心开发者,项目经理Jimmy Schementi宣布离职, 在他的博客中描述到:公司对IronRuby项目严重不承诺,严重限制了团队的灵活性,限制项目无法提供具有VisualStudio IronRuby的整合,以及种种理由延缓VisualStudio IronPython的集成,我对.Net上的动态语言决策感到非常的失望

关于lucene发展和多语言实现的方向

关于lucene发展和多语言实现的方向    多语言lucene的发展无疑是基于java lucene的.一切的功能特性和兼容性的问题都要以java lucene为主.java lucene是其他语言lucene发展的鼻祖.那么多语言lucene的发展应该怎么办呢?看看下面的文字吧:There is a concerted effort to develop a SWIG Lucene and there is also a CLucene and an active Lucene4C proj

ASP等动态语言网站做SEO时站内搜索应该注意的问题

WEB动态语言有很多,ASP,PHP,.NET,JSP等,之所以在标题中着重提到ASP,是因为目前市面上大多数的企业站点还是采用ASP来做的,这个语言因为学习的门槛较低,又有ACCESS的完美配合,所以是大多数程序员首选的企业站点语言.我们不在这篇文章中讨论ASP的安全性或技术层面的东西,我仅在这篇文章中分享最新学习到的一个理念,就是ASP网站的站内搜索功能对SEO的影响. 因为SEO对静态语言的收录有一定的优先(虽没有绝对性,但由于同样的配置上,静态页面的访问速度快于动态页面,所以从用户体验角

在Operamasks中使用ELite和JRuby动态语言的秘笈

随着微软正式发布IronPython,推出基于第一款基于动态语言的开源编程工具:紧接着Sun又正式对外宣布收购JRuby,Ruby将成为JVM支持的第一个动态语言,动态语言一直围绕在我们的身边.如何使用动态语言给我们编写JavaWebUI带来帮助?什么样的动态语言能够适合Java开发团队呢?SirsiDynix的架构师TravisJensen通过五条粗略的标准来评估Groovy,JRuby,Jython这三种动态语言在Java上的表现. 1.动态语言与Java之间的交互 2.IDE工具的支持 3