编程语言和语言运行时的思考

1. 什么是一门编程语言

  一门编程语言应该具备一下基本要素:

    1. 类型系统(可以定义变量)
    2. 复合类型(例如:结构体,枚举,类,接口)
    3. 循环结构
    4. 判断结构
    5. 函数,及其调用规范

    6. 编译器,可以将这种语言编译的源代码,编译成,特定平台上可以执行的代码

  这是就构成一们编程语言

2. Runtime (运行时)

  运行时包含了程序运行的基本环境,这里有动态内存---堆,有线程栈,有最基本的运行时函数库,例如文件读写API, 字符串操作,等等。

CLR叫做公共语言运行时(Common Language Runtime)

1. CTS
C#和VB.NET都是公共语言运行时的托管代码,它们的语法和数据类型各不相同。CLR是如何对这两种不同的语言进行托管的呢?通用类型系统(Common Type System)用于解决不同语言的数据类型不同的问题,如C#中的整型是int,而VB.NET中是Integer,通过CTS我们把它们两个编译成通用的类型Int32。所有的.NET语言共享这一类型系统,在它们之间实现无缝互操作。
2. CLS
编程语言的区别不仅仅在于类型,语法或者说语言规范也都有很大的区别。因此.NET通过定义公共语言规范(Common Language Specification),限制了由这些不同点引发的互操作性问题。CLS是一种最低的语言的标准,制定了一种以.NET平台为目标的语言所必须支持的最小特征,以及该语言与其他.NET语言之间实现互操作性所需要的完备特征。凡是遵守这个标准的语言在.NET框架下都可以实现互相调用。例如,在C#中命名是区分大小写的,而VB.NET不区分大小写,这样CLS就规定,编译后的中间代码必须除了大小写之外有其他的不同之处。
为了实现跨语言开发和跨平台的战略目标,.NET所有编写的应用都不是编译为本地代码,而是编译成微软中间代码MSIL(Microsoft Intermediate Language)。它将由JIT(Just In Time)编译器转换成机器代码。C#和VB.NET代码通过它们各自的编译器编译成MSIL,MSIL遵守通用的语法,CPU不需要了解它,再通过 JIT编译器编译成相应的平台专用代码,这里所说的平台是指我们的操作系统。这种编译方式实现了代码托管,还能够提高程序的运行效率。
原文地址:https://www.cnblogs.com/a-ray-of-sunshine/p/4284907.html