Die Common Intermediate Language ist die Zwischensprache des .NET Frameworks von Microsoft.
Früher, in der Beta Phase des .NET Frameworks, war die CIL unter dem Namen Microsoft Intermediate Language bekannt. Im Rahmen der Standardisierung wurde dieser Name aber verworfen.
Bei der klassischen Kompilierung wird aus einem Quellcode, in der Regel in einer höheren Programmiersprache geschrieben, ein plattformabhängiger Code erzeugt. Die Zwischensprache befindet sich auf einer Abstraktionsebene zwischen dem Quell- und dem Zielcode. Sie kann interpretiert oder kompiliert werden.
Abbildung 1: Kompilierung ohne und mit einer Zwischensprache
Die Erzeugung einer Zwischensprache hat mehrere Vorteile (siehe Abbildung 3):
Abbildung 2: Kompilierung mehrerer Quellsprachen auf mehreren Plattformen ohne Zwischensprache
Es wird pro Quellsprache und Plattform je ein Compiler benötigt. Die Anzahl der Compiler beträgt n * m.
Abbildung 3: Kompilierung mehrerer Quellsprachen auf mehreren Plattformen mit Zwischensprache
Die Anzahl der Compiler reduziert sich auf n + m. Es wird ein Compiler pro Sprache benötigt, der die Quellsprache in die Zwischensprache übersetzt und ein Compiler pro Plattform, der die Zwischensprache in die Maschinensprache übersetzt.
Das .NET Framework ist eine Softwareplattform von Microsoft. Die Common Intermediate Language ist ein Bestandteil des Frameworks. Der folgende Abschnitt gibt einen groben Überblick über dies Thema.
.NET wurde zum ersten Mal im Jahr 2000 vorgestellt und im Laufe der Jahre immer weiter entwickelt, die aktuelle Version ist 3.5. Die Plattform implementiert den Common Language Infrastructure Standards (ISO/IEC/ECMA Standard, der Systeme spezifiziert, die sprach- und plattformneutrale Anwendungsentwicklung und -ausführung ermöglichen). Sie soll veraltete Technologien ersetzen (u.a. DLL und COM).
Abbildung 4: .NET Architektur
Das Framework besteht aus folgenden Schichten:
.NET Programmiersprachen, die den Anforderungen der Common Language Specification entsprechen müssen.
.NET Klassenbibliothek, die ein einheitliches, objektorientiertes Programmiermodel bieten.
Common Language Runtime - Laufzeitumgebung des Frameworks, die auf das Betriebssystem aufsetzt.
Einige der wichtigsten Entwurfsziele von .NET:
Die Plattformunabhängigkeit ist bis jetzt nur theoretisch möglich. Der Grund hierfür sind die zahlreichen Bibliotheken, die in ihrem vollen Umfang bis jetzt nur für Windows verfügbar sind. Einige Open Source Projekte (Mono, dotGNU) verfolgen das Ziel, den Common Language Infrastructure Standard in der Unixwelt zu implementieren.
Um die Sicherheit bei der Programmausführung zu gewährleisten, sind in .NET zahlreiche Techniken vorhanden. Sie beginnen bei der Gewährleistung der Programmherstelleridentität und gehen über Programmveränderungsschutz bis hin zur Einbeziehung der Herkunft des Programms.
Der Aspekt Geschwidigkeit war von Beginn an ein wichtiges Ziel. Die Entwickler, die hohe Geschwidigkeiten von C und C++ gewohnt waren, sollten auch von .NET überzeugt sein.