Was ist eine erstklassige .NET-Sprache?

8

Also hörte ich Hanselminutes Podcast 158 ​​, wo Joel Spolsky das erwähnt Wasabi ist eine erstklassige .NET-Sprache. Was bedeutet das?

    
jpoh 25.06.2009, 10:19
quelle

8 Antworten

5

Eine Sprache als eine erstklassige .NET-Sprache zu beschreiben, ist eine subjektive Beschreibung. Es bezieht sich auf eine .NET-Sprache, die alle .NET CLR-Funktionen unterstützt (in der realen Welt glaube ich, dass dies die meisten der Features unterstützt).

Es wurde auch traditionell verwendet, um eine Sprache zu beschreiben, die hilft, die .NET CLR zu gestalten, was bedeutet, dass ich bezweifle, dass Wasabi eine echte erstklassige Sprache ist.

Aktualisieren

Zitat aus einem Artikel , der beschreibt, wie F # ist eine erstklassige .NET-Sprache.

"Dies bedeutet, dass F # auf der CLR ausgeführt wird, objektorientierte Programmierung umfasst und über Funktionen verfügt, die eine reibungslose Integration mit .NET Framework gewährleisten."

    
stevehipwell 25.06.2009, 10:31
quelle
3

Soweit ich weiß, gibt es keine klare Definition für "erstklassige .NET-Sprache". Ich denke, es bezieht sich einfach auf die Sprachen, die die meisten Funktionen der CLR unterstützen.

    
Fredrik Mörk 25.06.2009 10:26
quelle
3

"Erstklassige .NET-Sprache" ist kein offizieller Begriff.

Offiziell kann eine Sprache Common Language Specification (CLS) -kompatibel sein in der Lage sein, mit anderen CLS-kompatiblen Sprachen zusammenzuarbeiten.

(Hinweis: CLS-konform zu sein ist natürlich eine Eigenschaft der Software , die Sie schreiben, und damit der Assembly, die Sie erzeugen. A CLI-Sprache können Sie CLS-konformen Code schreiben, aber Sie erzwingen das nicht. Sie können eine nicht-CLS-konforme Assembly schreiben C #, zum Beispiel durch Verwendung von nicht signierten Typen in der öffentlichen API.)

Da es jedoch (wieder) keine offizielle Definition für "erstklassige .NET-Sprache" gibt, denken manche Leute vielleicht nicht, dass sie in einer "erstklassigen" .NET-Sprache arbeiten, es sei denn, sie können WPF oder (Morgen) Code Contracts, die deutlich viel anspruchsvoller als die CLS-Compliance-Anforderung ist.

    
Daniel Daranas 25.06.2009 10:32
quelle
2

Wie bereits erwähnt, gibt es keine offizielle Definition, aber eine .NET-Sprache erster Klasse ist im Wesentlichen eine, die CLS-konforme Assemblys erstellen und konsumieren kann.

Wenn Sie gelangweilt sind und die ECMA CLI-Spezifikationen lesen möchten, dann sind Sie hier richtig Sie werden unterscheiden zwischen CLS-Frameworks (CLS-konformen Assemblies), CLS-Consumern (Compiler, die CLS-Frameworks verwenden können) und CLS-Extendern (Compilern, die CLS-Frameworks erstellen können).

In der CLI-Spezifikation spricht eine 1. Klasse .NET-Sprache daher eine Sprache, deren Compiler als CLS Consumer und CLS Extender fungieren kann.

    
Ubiguchi 25.06.2009 23:07
quelle
1

Es bedeutet, dass es vollständig von .NET unterstützt wird und umgekehrt alle Features von .net unterstützt. Es gibt keine Einschränkungen. Alles, was in einer "First-Class-Sprache" gemacht werden kann, kann in einem anderen gut gemacht werden.

C #, VB.net, IronPython usw. sind alle erstklassige Sprachen. XAML ist jedoch nicht. Es wird in Teilen von .net verwendet, aber Sie konnten sicherlich nicht alles darin tun.

    
Simon P Stevens 25.06.2009 10:25
quelle
1

Teil von ILAsm keine .NET-Sprache unterstützt alle Funktionen der CLR

In meinem Buch ist eine Sprache der ersten Klasse eine Sprache, die bis IL kompiliert und überprüfbaren Code erzeugt, d. h. Sie können die Baugruppe mit Reflector ("Rundauslösung") zurück in den ursprünglichen Code zerlegen.

    
Anders K. 25.06.2009 10:34
quelle
0

Ich würde verstehen, dass "direkt zu .NET-Bytecode kompiliert" bedeutet (anstatt Code zu C # zu erzeugen), und dass es auch in der Lage wäre, die Standard-.NET-Bibliotheken zu verwenden.

    
pjc50 25.06.2009 10:26
quelle
0

Ich denke in diesem Zusammenhang, dass es nicht nur einen Wasabi zu IL Compiler gab, sondern auch, dass es Visual Studio / Tool-Unterstützung gab.

Es kann auch bedeuten, dass die Typen usw. alle .Net-Typen sind und nicht zur Zeit der Kompilierung auf .Net-Entsprechung-Objekte abgebildet sind?

Ich denke, eine erstklassige Sprache würde traditionell alle Spielzeuge (Reflection, Code-Generierung usw.) haben, wo eine 2. Klasse nach IL kompiliert werden könnte, und nicht viel mehr.

    
Andrew M 25.06.2009 10:27
quelle

Tags und Links