Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur eBooks für mein Endgerät anzeigen:

 

Newsletter

C# Kompendium

C# Kompendium

von: Arne Schäpers, Rudolf Huttary, Dieter Bremes

Markt +Technik Verlag, 2002

ISBN: 9783827260154, 1196 Seiten

Format: PDF, OL

Mac OSX,Windows PC Apple iPad, Android Tablet PC's Online-Lesen für: Linux,Mac OSX,Windows PC

Preis: 24,95 EUR

Ersparnis: 25,00 EUR

  • Persönliche Firewalls
    VPN mit Linux
    Das C# Codebook
    Das VB.NET Codebook
    Autogenes Training
    Go To C#
    Softwaretechnik
    ADO.NET Datenbankprogrammierung
  • Visual C# . Grundlagen, Programmiertechniken, Windows-Anwendungen
    XML mit .NET - Programmierung und Basisklassen
    Das ASP.NET Codebook
    Programmierung mit der .NET-Klassenbibliothek - Zugriff auf das Windows-Betreibssystem mit Visual Basic .NET und C#

     

     

     

     

     

 

Mehr zum Inhalt

C# Kompendium


 

6 Anweisungen und Ausführungskontrolle (S. 123-124)

Ähnlich wie sich ein Text aus einer Reihe von Sätzen zusammensetzt, setzen sich Programme aus Anweisungen zusammen. Der Begriff der Anweisung in einer Programmiersprache erinnert also entfernt an den Satzbegriff natürlicher Sprachen. Vergleiche dieser Art können zwar zum prinzipiellen Verständnis maschineller Sprachen etwas betragen, sie allzu sehr strapazieren zu wollen, führt aber nicht sehr weit.

6.1 Sprachebenen

Anders als bei natürlichen Sprachen spielen bei Computersprachen Rekursion, Iteration und verschiedene Sprachebenen eine bedeutende Rolle. Eine wichtige Eigenschaft von Computersprachen ist beispielsweise die Möglichkeit, Anweisungsfolgen in Prozeduren zusammenzufassen, also komplexe Anweisungen aus einfachen Anweisungen aufzubauen. Umgekehrt zerfällt jede Anweisung in eine mehr oder weniger komplexe Folge elementarer Anweisungen, wobei die Definition dessen, was elementar ist, eine reine Frage der Sprachebene ist. Als unterste Sprachebene gilt die plattformspezifische Maschinensprache, deren Befehlsfolgen der jeweilige Prozessor unmittelbar verarbeiten kann.

Einer der wesentlichen Gedanken des hinter der .NET-Technologie steckenden Sandbox-Konzepts ist die Einführung einer gemeinsamen Sprachebene, auf der für alle .NET-Sprachen Codekompatibilität herrscht. Die Hochsprache C# ist deshalb - wie alle anderen .NET-Sprachen auch - auf Basis einer Zwischensprache namens IL (Intermediate Language) definiert. Diese wiederum hat ein maschinensprachliches Äquivalent auf der jeweiligen Hardwareplattform. (.NET ist zur Zeit zwar ausschließlich auf der Plattform Intel in Verbindung mit Windows verfügbar, Borland hat aber Anfang Mai 2002 bereits etwas von einer Linux-Version verlauten lassen). Mit anderen Worten: Der C#-Compiler übersetzt C#-Code in IL-Code, und ein JIT-Compiler (Just-in-Time-Compiler) den IL-Code kurz vor der Ausführung in den so genannten nativen Code, also in eine Folge von plattformspezifischen Maschinenbefehlen, die der jeweilige Prozessor im Allgemeinen direkt verarbeiten kann (je nach Architektur kann hier sogar noch eine weitere Sprachebene ins Spiel kommen, man denke etwa an den Hardware Abstraction Layer (HAL) von Windows NT oder an einen Windows-Emulator für den Macintosh).

6.2 Anweisungsfolgen und Threads

Eine einzelne Anweisung macht allein noch kein Programm aus, auf die Abfolge vieler Anweisungen kommt es an. Natürlich kann man sich ein Programm als schlichten Aufruf der "Anweisung" Main() vorstellen, die ja, wie an anderer Stelle ausgeführt, den definierten Einsprungpunkt jedes C#-Programms darstellt. Diese Betrachtung gibt allerdings wenig Aufschluss über das Innenleben des Programms. Komplexe Anweisungen bzw. Aufrufe wie Main() zerfallen über den Vorgang der Substitution in Abfolgen einfacherer Anweisungen, diese wiederum in Abfolgen noch einfacherer Anweisungen, usw. Auf der untersten Substitutionsebene finden sich schließlich nur noch primitive Anweisungen der jeweiligen Programmiersprache (die ihrerseits im Rahmen der Sprachimplementierung noch weiter zerfallen, zunächst in die IL und am Ende - wie gesagt - in Maschinenanweisungen). Allem Multiprocessing, -tasking und -threading moderner Computerarchitekturen und Betriebssysteme zum Trotz orientiert sich das Ablaufmodell heutiger Computer nach wie vor an der von Neumann-Architektur, bei der eine CPU eine Befehlskette sequenziell abarbeitet. Wenn mehrere CPUs vorhanden sind, gibt es eben mehrere Befehlsketten - und komplexe Logiken sowie Verwaltungsmechanismen, die diese miteinander in Einklang bringen. Das Ablaufmodell wird dadurch zwar etwas komplexer, wirklich grundlegende Änderungen, die aus der Beschränktheit der von Neumann-Architektur hinausführen würden, gibt es jedoch nicht.