c#如何从.net框架中分离出来?
本文关键字:分离出 框架 net | 更新日期: 2023-09-27 18:02:05
对于。net框架我不是新手,我已经用它编写c#软件好几年了。然而,有一天我突然想到……c#是如何通过关键字lock
和object
从。net框架中分离出来的?像object derp = new object();
这样的语句解析为System.Object derp = new System.Object();
,但是System。对象被定义为。net的一部分,不是吗?即使它是在mscorlib中定义的,这也意味着语言特性依赖于库。对于解析为Monitor.Enter()
和Montior.Exit()
调用的lock
语句也是如此。显然,不使用。net特性编写任何非玩具程序都是愚蠢的/不可能的,但是一门语言怎么能依赖于主要用该语言编写的库呢?
实现一门语言的最低要求是有一个编译器将语言转换为可执行代码和一个运行时系统来执行它。它们都不是用c#编写的,而是用的c++。使用另一种语言来完成这是一个传统的、必要的引导步骤。C语言是一种非常常见的自引导语言,它很小,很容易移植,Mono采用的方法就是这样。C本身有一个引导语言,它是b,它是从BCPL引导的。从cpld启动,从Atlas2启动。在此之前,想象一下有人在使用一台非常原始的计算机的前面板上的拨动开关。
一旦到位,你就可以开始迭代和改进。就像添加对lock
关键字的支持一样,这是一个无需编译器和运行时系统就能运行的语言特性。它依赖于Monitor类,现在仍然很瘦,它的绝大多数代码都是用c++编写的。
将编译器重写为目标语言通常是下一步,c#花了不少时间,但现在Roslyn完成了。可以考虑重写运行时系统,尽管这并不常见。作为微软内部的孵化项目,秘密的Midori项目。不仅仅是运行时,而是整个操作系统。启动奇点项目