码迷,mamicode.com
首页 > Windows程序 > 详细

.Net与CTS,CLS,CIL,CLR和C#

时间:2014-10-28 19:35:27      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   java   sp   div   问题   代码   as   

起源:

  .Net技术的起源可以说是一个最基本的观点,代码复用。

如何复用:

  以前的复用方式就是类库,使用一个好的类库是非常令人舒心的事情,但现实往往令人沮丧,因为类库都是与语言绑定的,每种语言有自己的类库,比如js想使用stl的unordered_map,或者其他的c++库,需要实现与c++之间的相互调用。

  怎么样才能使js方便的调用c++的类库呢?微软给了两个答案COM和.NET。

  COM这里就不讨论了,其实现原理是基于物理层面的,太复杂,尽管有MFC,ATL,依然非常复杂。

  那么.NET呢,很简单,做个编译器,把js代码编译为c++代码呗!

思路有了,合理吗:

  是啊,把js代码编译为c++代码需要解决一些问题:

    首先就是变量的类型,大家的类型系统都不一样怎么办呢?

    其次是语言本身,解释性语言搞成了编译性语言,难道每次写js代码都要编译两次吗?

  微软也给出了相应的解决方案:

    类型系统不一致,那就统一呗,既然我们希望支持各种语言,那就叫通用类型系统(CTS)吧。

    语言问题怎么办呢,大家都认为自己喜欢的语言是最好的,为了讨论什么语言更好大家往往会讨论到脸红脖子粗。那就给种全新的语言吧,也不用引起IT界的又一次大讨论,既然我们希望支持各种语言,那就叫通用中间语言(CIL)吧。

还差点什么:

  噢,对了,还要给各个编译器作者规定一下把代码编译为CIL的规范吧?既然我们可以支持各种语言,那就叫公共语言定义(CLS)吧。

最后一个问题:

  我们的出发点就是为了解决复用问题,好了现在大家都会被编译为CIL,我们只需要为CIL写一个基础库就可以了,既然我们可以支持各种语言,那就叫公共语言运行库(CLR)吧。剩下的事情就是各个编译器作者的事情了,javascript.net,VB.net。。。

C#在哪呢:

  .Net起源的故事我们就讲完了,毕竟这是一个全新的系统,以前的语言写法或者实现上可能会有些出入(至少让人别扭),所以微软发布了C#。

后记:

  了解事物往往需要了解事物的来龙去脉与核心,复用可以说是IT技术永远的追求,从微软的发展路线可以看出,C API-->MFC-->COM-->.Net,都是为了更好的复用。

.Net与CTS,CLS,CIL,CLR和C#

标签:style   color   使用   java   sp   div   问题   代码   as   

原文地址:http://www.cnblogs.com/magiclvzs/p/4057339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!