CodeGym /Kurse /C# SELF /Compiler und Kommentare

Compiler und Kommentare

C# SELF
Level 1 , Lektion 5
Verfügbar

1. C#-Compiler

Ein Computer versteht keine menschliche Sprache. Ein Computer versteht nicht mal Programmiersprachen. Er versteht nur Programme, die im Maschinen-Code geschrieben sind – also aus Nullen und Einsen bestehen.

Für Hunde gibt es Kommandos wie „Bei Fuß“, „Pfote“ und andere, bei denen der Hund etwas Wichtiges macht. Beim Computer übernehmen Zahlen diese Rolle: Jeder Befehl ist durch eine bestimmte Zahl kodiert (das nennt man auch Maschinen-Code).

Ein Programm als Zahlen zu schreiben ist mega kompliziert, deshalb haben Leute Programmiersprachen und Compiler erfunden. So eine Sprache ist einerseits für Menschen verständlich, andererseits für den Compiler. Compiler – das ist ein spezielles Programm, das den Text eines Programms, das in einer Programmiersprache geschrieben wurde, in einen Satz von Maschinen-Codes übersetzt.

Normalerweise schreibt ein Programmierer das Programm in einer Programmiersprache und startet dann den Compiler, der aus den vom Programmierer geschriebenen Code-Dateien eine Datei mit Maschinen-Code macht – das fertige (kompilierte) Programm.

  • Programm in C++
  • Compiler
  • Programm, das aus Maschinen-Codes besteht
Kompilierungsstufen für C++

Das entstandene Programm kann dann direkt auf dem Computer ausgeführt werden. Der Nachteil ist, dass der Code des Programms stark vom Prozessor und Betriebssystem abhängt. Ein unter Windows kompiliertes Programm läuft nicht auf einem Android-Handy.

Wenn du ein Programm für Android geschrieben hast, dann läuft es auf Windows nicht!

Aber C# hat einen viel innovativeren Ansatz.

  • Programm in C#
  • C#‑Compiler
  • Programm, dasaus speziellen IL-Codes besteht (Bytecode)
  • CLR
  • Programm, das aus Maschinen-Codes besteht
Kompilierungsstufen für C#

Der C#-Compiler kompiliert nicht alle Klassen in ein einziges Maschinen-Code-Programm. Stattdessen kompiliert er deinen Code nicht in Maschinen-Code, sondern in einen speziellen Zwischen-IL-Code (Bytecode). Die Kompilierung in Maschinen-Code passiert erst beim Starten des Programms.

Und wer kompiliert das Programm beim Starten in Maschinen-Code?

Dafür gibt es ein spezielles Programm namens CLR (Common Language Runtime) – die virtuelle Maschine von C#. Erst wird sie gestartet, dann das Programm, das aus Bytecode besteht. Und die CLR kompiliert das dann vor der Ausführung in Maschinen-Code.

Wenn du einen coolen Prozessor hast, der mehr Maschinenbefehle unterstützt, wird beim „zweiten Kompilieren“ Maschinen-Code erzeugt, der genau zu deinem Prozessor und Betriebssystem passt. Genau deshalb ist C# manchmal schneller als C++, das direkt in Maschinen-Code kompiliert und nur die gängigsten Befehle des Prozessors nutzen kann.

2. Typische Fehler beim Kompilieren

Geschwindigkeit und Code-Optimierung sind uns erstmal egal, aber was wirklich wichtig ist: Der Compiler checkt dein Programm auf Fehler. Er prüft den Code auf Korrektheit und lässt ihn nicht weiter, wenn er auch nur einen kleinen Fehler findet.

Beispiel für einen Fehler:

Du versuchst, einer Variable, die nur Text speichern kann, eine Zahl zuzuweisen.

string benutzerName = 42; // Ups! Das geht nicht.

Der Compiler gibt sofort einen Fehler aus, dass die Typen nicht passen: "Cannot implicitly convert type 'int' to 'string'".

Ein anderes Beispiel – ein Tippfehler im Befehl WriteLine():

Console.WriteLin("Hallo!"); // Fehler im Methodennamen

Der Compiler sagt: "So eine Methode gibt's nicht – check mal die Syntax!"

Wie liest man Fehler?

Die meisten Compiler zeigen dir, wo im Code der Fehler ist, und schlagen manchmal sogar Korrekturen vor. Keine Angst vor Fehlern: Jeder Fehler ist ein Schritt zur Erleuchtung und zum Besiegen deines inneren „Bosses“.

3. Kommentare

Stell dir vor: Du schreibst ein komplexes Programm. Alles läuft, du bist ein Genie! Aber nach einem Monat öffnest du den Code wieder und... verstehst gar nichts mehr. Ein paar Zeilen hier, eine komische Variable da. Im Kopf nur: „Das hat bestimmt jemand anderes geschrieben, aber nicht ich!“. Genau hier retten dich Kommentare.

Kommentare sind wie Notizen am Rand eines Lehrbuchs oder Zettel am Kühlschrank („Bier. Nicht trinken. Für morgen!“). Der Compiler ignoriert sie komplett, aber Menschen lesen sie. Kommentare helfen, den Sinn des Codes zu erklären, wichtige Details zu markieren und sogar Code-Teile „auszuschalten“, ohne sie zu löschen.

Wichtig: Kein Compiler liest deine Kommentare, sie werden komplett ignoriert!

Einzeilige Kommentare

In C# gibt es zwei Arten von Kommentaren – einzeilige und mehrzeilige. Einzeilige beginnen mit zwei Slashes // und gehen bis zum Zeilenende. Alles, was nach // steht, gilt als Kommentar und wird vom Compiler komplett ignoriert.

Beispiel:

Console.WriteLine("Hallo, Welt!"); 	// Das gibt die Begrüßung auf dem Bildschirm aus

Hier // Das gibt die Begrüßung auf dem Bildschirm aus – ist der Kommentar. Wenn im Code nicht klar ist, warum eine Zeile da ist, schreib einfach so einen Kommentar!

Noch ein Beispiel:

int x = 42; 	// Alter des Programmierers

Du kannst einzeilige Kommentare auch auf eigenen Zeilen schreiben:

// Initialisierung der Variable mit dem Benutzernamen
string benutzerName = "Vasya";

Fast wie Regieanweisungen: Der Kommentar erklärt, wozu und warum.

Mehrzeilige Kommentare

Was, wenn du viel zu sagen hast? Eine richtige Story? Dafür gibt's mehrzeilige Kommentare, die mit /* anfangen und mit */ enden. Alles dazwischen wird vom Compiler ignoriert, auch wenn es mehrere Zeilen sind.

Beispiel:

/*
  Hier geben wir den Benutzernamen auf dem Bildschirm aus.
  Wenn kein Name vorhanden ist, schreiben wir "Gast".
*/
Console.WriteLine("Gib deinen Namen ein:");

Oder so:

int alter = 18; /* Anfangswert für das Alter
                   eines neuen Benutzers */

Achtung: Du kannst keine mehrzeiligen Kommentare ineinander verschachteln. Versuch nicht, schlauer als der Compiler zu sein – das klappt nicht.

Illustration:

Typ Syntax Beispiel
Einzeilig // kommentar int x = 1; // erklärung
Mehrzeilig /* irgendwas hier */ /* hier kannst du alles erklären, was du willst */

4. Beispiele aus dem Leben

„Ausschalten“ einer Codezeile:

Manchmal willst du einen Code-Abschnitt vorübergehend nicht ausführen. Kommentare sind hier genau richtig:

// Console.WriteLine("Text, der gerade nicht gebraucht wird");

Die Zeile bleibt, aber der Compiler „sieht“ sie nicht.

TODO und FIXME Notizen

Programmierer sind auch nur Menschen und manchmal muss man sich selbst daran erinnern, dass der Code noch nicht fertig ist oder dass hier ein Bug ist. Dafür schreibt man oft:


// TODO: Überprüfung auf leere Eingabe machen
// FIXME: Diese Funktion berechnet die Summe falsch

Viele Editoren und IDEs heben solche Wörter sogar hervor!

Programmierer machen Witze

Und natürlich findet man manchmal richtig lustige Kommentare im Code:

// Ich übernehme keine Verantwortung für diesen Code. Ich wurde gezwungen, ihn gegen meinen Willen zu schreiben.
// Lieber, ich_aus_der_Zukunft! Bitte vergib mir diesen Code.
// Wenn ich sowas nochmal sehe, muss ich anfangen, Waffen zur Arbeit zu tragen.
// Falls diese Bedingung jemals eintritt, bitte ruf mich an unter Tel. xxx-xxx-xxx für eine Belohnung.
// Lieber Programmierer:
//
// Wenn du mit dem „Optimieren“ dieser Subroutine fertig bist
// und merkst, was für ein Fehler das war,
// erhöhe bitte unten den Zähler als Warnung
// für den nächsten Typen:
//
// anzahl_stunden_hier_verbraten = 42
// Als ich das hier geschrieben habe, wussten nur Gott und ich, was ich mache.
// Jetzt weiß es nur noch Gott
// manchmal glaube ich, der Compiler ignoriert alle meine Kommentare
// Ich widme meinen ganzen Code, meine ganze Arbeit meiner Frau Darlin,
// die mich, unsere drei Kinder und den Hund versorgen muss,
// wenn das hier in Produktion geht.

Ja, Kommentare können echt witzig sein. Schließlich schreiben sie echte Menschen.

1
Umfrage/Quiz
Befehle und das erste Programm, Level 1, Lektion 5
Nicht verfügbar
Befehle und das erste Programm
Befehle und das erste Programm
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION