什么是一流的.NET语言?

时间:2009-06-25 10:19:44

标签: .net programming-languages

所以我在听Hanselminutes Podcast 158,其中Joel Spolsky提到Wasabi是一流的.NET语言。这是什么意思?

8 个答案:

答案 0 :(得分:5)

将语言描述为第一类.NET语言是一种主观描述。它指的是支持所有.NET CLR功能的.NET语言(在现实世界中我相信这意味着它支持的功能)。

它也被用来描述一种有助于塑造.NET CLR的语言,这意味着我怀疑Wasabi是一种真正的一流语言。


<强>更新

引用article描述F#是如何使用一流的.NET语言。

“这意味着F#在CLR上运行,包含面向对象的编程,并具有确保与.NET Framework顺利集成的功能。”

答案 1 :(得分:3)

据我所知,“一流的.NET语言”没有明确的定义。我认为它只是指那些支持CLR提供的大多数功能的语言。

答案 2 :(得分:3)

“一流的.NET语言”不是官方术语。

正式地说,一种语言可以 Common Language Specification (CLS) - 兼容,因此能够与其他符合CLS的语言进行互操作。

(注意:当然,符合CLS的是您编写的软件的属性,因此,您编写的程序集的属性。CLI language将允许您编写CLS-兼容代码,但不会强制您这样做。您可以在C#中编写非CLS兼容程序集,例如在其公共API中使用无符号类型。)

然而,由于(再次)没有“一流.NET语言”的官方定义,有些人可能不会认为他们使用“一流”.NET语言,除非他们可以使用WPF或(明天)代码合同,显然比CLS合规要求要求更高。

答案 3 :(得分:2)

如前所述,有几次没有官方定义,但第一类.NET语言基本上可以创建符合CLS的程序集并使用它们。

如果您感到无聊并希望阅读ECMA CLI specifications,那么您会发现它们区分CLS框架(符合CLS的程序集),CLS使用者(可以使用CLS框架的编译器)和CLS Extender(编译器)可以创建CLS框架。)

在CLI规范中,第一类.NET语言是一种语言,其编译器可以充当CLS使用者和CLS扩展器。

答案 4 :(得分:1)

这意味着.net完全支持它,反过来支持所有.nets功能。没有任何限制。任何可以用一种“一流语言”完成的事情都可以在另一种语言中完成。

C#,VB.net,IronPython等都是一流的语言。然而,XAML不是。它用于.net的部分内容,但你当然无法完成所有内容。

答案 5 :(得分:1)

部分来自ILAsm没有.NET语言支持CLR的所有功能

在我的书中,第一类语言是一种编译为IL并生成可验证代码的语言,即您可以使用Reflector(“round-tripping”)将程序集反汇编回原始代码。

答案 6 :(得分:0)

我理解这意味着“直接编译到.NET字节码”(而不是代码生成C#),并且它还能够使用标准的.NET库。

答案 7 :(得分:0)

我认为在这种情况下,它不仅意味着IL编译器有芥末,而且还有Visual Studio /工具支持。

这也可能意味着类型等都是.Net类型,而不是在编译时映射到.Net等价对象?

我猜一流的语言传统上会有所有的玩具(反射,代码生成等),其中第二类可以编译为IL,而不是其他。