DiFü-logo
Start Start
Bitte trage eine gültige E-Mail-Adresse ein.
Bitte trage dein Passwort ein.
Passwort vergessen?

Mit einer registrierten E-Mail-Adresse kannst du deinen Fortschritt speichern.

Bitte trage eine gültige E-Mail-Adresse ein.
Bitte trage ein Passwort ein.

Für die Ausstellung von Zertifikaten benötigen wir zusätzlich deinen Namen und dein Geburtsdatum.

Bitte trage einen Namen ein.
Bitte bestätige unsere AGB um fortzufahren.

1. Computersprachen: Grundlagen

  • Wenn wir programmieren, erklären wir Computern, was sie tun sollen. Allerdings sind Computer nur Maschinen und können nichts mit unseren menschlichen Sprachen anfangen. Und damit sind nicht nur klassische Computer gemeint wie Laptops oder Standrechner, sondern auch Smartphones, Fernseher, Smartwatches oder beispielsweise Elektronikchips in Autos.

    In fast allen Geräten, die Strom benötigen, egal ob Batterie, Akku oder Steckdose, sind Mikrochips enthalten, auf denen wiederum kleine Computer eingebaut sind, die programmiert wurden.

    Alle Computer haben einen Prozessor, einen Speicher und auch eine Möglichkeit für Ein- und Ausgaben, wie zum Beispiel einen Knopf, ein Display oder einfach kleine LED-Lampen.

    Computer arbeiten mit sogenannten Bits (aus englisch binary und digits). Übersetzt bedeutet Bit so viel wie „Binärzahl“, also eine Zahl, die nur zwei verschiedene Werte annehmen kann. Üblicherweise nutzt man hierfür die Werte 0 und 1. Das ist praktisch, da Computer so ihre Zustände leicht und eindeutig darstellen können: „Strom fließt“ oder „Strom fließt nicht“.

    Oft wird das mit Lichtschaltern oder LED-Lampen veranschaulicht:

    • 0: Lichtschalter aus – Strom fließt nicht
    • 1: Lichtschalter ein – Strom fließt

    Computer nutzen das Binärsystem, um Daten zu speichern – zum Beispiel diesen Text. Aber auch für Befehle, was mit den Daten passieren soll. Zum Beispiel könnten zwei Zahlen addiert werden oder ein Text soll übers Internet an eine andere Stelle kopiert werden.

    Entsprechend erhalten Computer, wenn wir sie programmieren, auch genau diese Folgen aus Nullen und Einsen als Befehle. Ganz früher, zur Zeit der ersten Computer, wurde dies auch tatsächlich so gemacht: Damals wurden Kabel so verschaltet, dass Strom an einem Schalter eingeschaltet war (1) oder eben nicht (0). Eine andere Methode waren Lochkarten, die vom Computer eingelesen werden konnten und die Einsen und Nullen in Form von ausgestanzten Löchern kodierten.

    Wir können uns leicht vorstellen, dass das sehr aufwendig und kompliziert ist. Würde heute noch überall in Nullen und Einsen programmiert werden, hätten wir wohl noch keine Smartphones oder gar das Internet. Denn solch eine Programmierung ist sehr anstrengend und zeitaufwendig.

    Deswegen wurden Programmiersprachen entwickelt, bei denen man einen Text schreibt, der hinterher in die Maschinensprache übersetzt wird. Diese Aufgabe übernimmt ein Compiler. Ein Compiler ist ein Programm, das Programmiersprachen in die Maschinensprache aus Einsen und Nullen übersetzt.

  • Es gibt unzählig viele Computersprachen und es ist auch kein Problem, sich eine neue auszudenken. Am Ende ist sie zusammen mit dem Compiler nur eine Übersetzung zwischen einer beliebigen Sprache und den Befehlen für den Computer aus Nullen und Einsen. Ständig werden neue Computersprachen entwickelt, um vorhandene zu verbessern, weiterzuentwickeln oder sie an bestimmte Anwendungen anzupassen.

    Die frühesten Computersprachen waren die Assembler-Sprachen. Die erste wurde von Kathleen Booth 1947 entwickelt. Die Assembler-Sprachen waren noch sehr rudimentär, aber enthielten bereits Befehle wie „mov X Y“ („mov“ steht dabei für „move“ und der Befehl bedeutet „lade die Daten, die am Ort Y liegen, und lege sie in das Register X, also einen Ort, an dem sie verarbeitet werden können“). Diese Assemblersprachen sind immer noch sehr nah am Maschinencode, aber sind zumindest schon mal leichter zu schreiben als Lochkarten.

    Besonders intuitiv war das aber noch nicht. Deshalb haben sich die höheren Programmiersprachen entwickelt. Dieser Begriff bezeichnet Programmiersprachen, die nicht mehr besonders nah am Maschinencode sind, sondern sich stärker an unsere natürliche Sprache anlehnen. Sind sind gewissermaßen abstrakter.

    Auf den ersten Blick sehen höhere Programmiersprachen für Ungeübte trotzdem kryptisch aus. Mit etwas Übung kann man aber einiges aus dem Programmcode herauslesen, denn sie enthalten häufig englische Wörter wie „if“, „else“, „while“ (also „wenn“, „sonst“, „während“) und viele weitere.

    So sind sie viel leichter verständlich. Außerdem können Variablen genutzt werden. Das sind im Prinzip Namensschilder für unsere Datensätze. Durch ihre Verwendung anstatt von kryptisch wirkenden Speicherorten können nun leserliche Programme geschrieben, wie etwa:

    wenn Apfelfarbe == rot dann
       essen
    sonst
       sage „Der Apfel ist noch nicht reif!“

    Mit diesen Programmiersprachen lassen sich nun Algorithmen schreiben. Algorithmen sind Anleitungen mit Befehlen und anderen Anweisungen, wie etwas gemacht werden soll. Dafür gibt es auch ganz unterschiedliche Beispiele aus dem Alltag. Ein Rezept, um einen Kuchen zu backen, ist eine Anleitung wie ein Algorithmus. Auch ein Routenplan mit „erst links, dann zweimal geradeaus, dann rechts abbiegen“ entspricht einer Liste von Anweisungen wie ein Algorithmus. Sogar in der Schule haben wir alle schon mathematische Algorithmen angewendet, als wir von zwei Zahlen den größten gemeinsamen Teiler oder das kleinste gemeinsame Vielfache berechnet haben.

    Damit der Compiler eine Programmiersprache dann in den Maschinencode übersetzen kann, hat jede Sprache eine festgelegte Syntax und Semantik.

    • Syntax bezeichnet bei menschlichen Sprachen die Regeln, nach denen einzelne Wörter zu einem Satz zusammengesetzt werden. Bei Programmiersprachen umfasst das auch die Information, welche Wörter überhaupt zu dieser Sprache gehören. Oder die bei vielen Sprachen übliche Regel, dass das Ende eines Befehls mit einem Semikolon oder einer neuen Zeile markiert wird.
    • Semantik dagegen legt die Bedeutung der eingegebenen Wörter oder Ausdrücke fest: Was soll passieren, wenn diese Ausdrücke verwendet werden?

    So ist in vielen Programmiersprachen „Apfelfarbe = rot“ und „Apfelfarbe == rot“ ein gültiger Programmteil. Gleichzeitig haben die beiden Ausdrücke eine völlig unterschiedliche Bedeutung.

    „Apfelfarbe = rot“ bedeutet, dass der Apfel ab jetzt die Farbe Rot hat. Dies ist eine Anweisung. Wir legen das also so fest. Dagegen bedeutet „Apfelfarbe == rot“ die Frage danach, ob er denn rot ist oder nicht. Das ist also ein Vergleich. Das doppelte Gleichheitszeichen macht hier den feinen Unterschied.

    All das kann je nach Programmiersprache und Anwendungsgebiet unterschiedlich sein. Glücklicherweise sind sich aber viele gängige Programmiersprachen sehr ähnlich darin, wie man Algorithmen grundsätzlich aufschreibt und strukturiert.

    Es ist übrigens gar nicht so schwer, von einer Programmiersprache auf die andere umzusteigen. Zum Einstieg ist es eher wichtig, erst einmal eine einzige zu erlernen, um sich mit der Denkweise vertraut zu machen. Möchte man später eine andere nutzen, muss man nicht komplett von vorne beginnen – zum Glück, denn die deutschsprachige Wikipedia listet mehr als 370 verschiedene Programmiersprachen auf.

  • Das erste Programm, das die meisten Menschen schreiben, heißt „Hello World!“. Es gibt am Bildschirm den Satz „Hello World!“ aus. In den meisten modernen Programmiersprachen besteht es nur aus wenigen Wörtern bzw. Ausdrücken oder sogar nur einer Zeile. Seit fast 50 Jahren ist es Tradition, dieses Programm als erstes Beispiel in Programmierbüchern und Tutorials zu nutzen.

    Programmieren wird auch als Coden bezeichnet, denn man schreibt den Programmcode. In Spielfilmen sieht das Coden manchmal ulkig aus, wenn jemand wild über die Tastatur jagt und am Bildschirm nur grüne Buchstaben auf schwarzem Hintergrund erscheinen – und sonst auch kaum andere Symbole und Fenster.
    Programmieren läuft aber keineswegs so ab. Um keine Fehler in die Logik des Programms einzubauen oder auch um die richtige Syntax einzuhalten, werden die meisten wesentlich langsamer tippen. Außerdem ist es üblich, häufig etwas nachzuschauen oder auch ein paar Codezeilen zu einem Problem im Internet zu recherchieren.

    Beim Programmieren ist es ratsam, eine Programmiersoftware zu benutzen. Diese kann Tippfehler wie eine Art Rechtschreibkorrektur direkt erkennen oder auch bekannte Begriffe der Programmiersprache extra hervorheben, indem sie die Wörter beispielsweise fettet oder in unterschiedlichen Farben darstellt. Darüber hinaus enthält die Programmiersoftware meistens auch den passenden Compiler und auch die Möglichkeit, das Programm direkt auszuführen und Ausgaben und Fehler direkt einzusehen.

    Coden muss nicht zwingend „Programmieren“ bedeuten. Webseiten werden zum Beispiel in HTML gecodet. Das ist eine Auszeichnungssprache, die den Inhalt in unterschiedliche Bereiche wie Absätze, Überschriften, Bilder usw. strukturiert. Wie groß z. B. eine Überschrift dargestellt werden soll, in welcher Farbe und so weiter, das beschreibt man in einer weiteren Sprache namens CSS. Beide werden gemeinhin nicht als „Programmiersprachen“ bezeichnet, weil man damit feststehende Inhalte beschreibt und keine Abläufe, Vorgänge oder Entscheidungen.

    Ein kleiner Exkurs für alle, die es genauer wissen wollen: Programmiersprachen lassen sich unterscheiden in imperative und deklarative Sprachen.

    • Imperative Programmiersprachen enthalten eine Aneinanderreihung von Anweisungen, so wie wir bisher über Programmiersprachen gesprochen haben.
    • Deklarative Programmiersprachen dagegen enthalten nicht den Algorithmus selbst, sondern eine Dateneingabe und Anfragen dazu. Wie die Ergebnisse erzeugt werden, ist nicht die Aufgabe des Programmierers. Datenbanksprachen wie SQL sind so ein Beispiel.

    Manchmal wird auch unterschieden in Programmiersprachen und Skriptsprachen. Bei Letzteren wird das Programm erst beim Ausführen übersetzt. Dadurch gibt es Erleichterungen beim Programmieren, zum Beispiel, dass vorab nicht festgelegt werden muss, ob man nun eine Zahl oder eine Zeichenfolge in einer Variable speichern möchte. (Statt einem Compiler wird außerdem ein Interpreter genutzt, der eigentlich sehr ähnlich den Programmcode übersetzt, aber Zeile für Zeile und erst dann, wenn er benötigt wird.) Skript- und Programmiersprachen sind sich aber sehr ähnlich und werden je nach Literatur auch wieder zusammengefasst.

Mein Wissen üben Gelernt

Frage 1 | 5
  -