Читать книгу Keine Panik, ist nur Technik - Kenza Ait Si Abbou - Страница 19

Höhere Sprachen: Mehr was für Menschen

Оглавление

Die zweite Art der Programmiersprachen nennt man »höhere« Sprachen. Vermutlich weil wir selbst uns an dieser »höheren« Stelle sehen im Vergleich zu den Maschinen, die unter im Keller beziehungsweise Maschinenraum vor sich hin brummen. Auf jeden Fall sind die höheren Programmiersprachen näher an uns Menschen als an den Maschinen. Das hat den Vorteil, dass die Sätze/Befehle für uns viel besser verständlich sind als beim Assembler. Damit nun aber auch die Maschinen diese Sätze verstehen, bauen wir kleine Übersetzer ein, die bereits erwähnten Compiler. Es gibt hier also zwei Stufen der Übersetzung: Einmal durch uns – von Menschensprache in eine höhere Programmiersprache – und einmal durch den Compiler – von der höheren Programmiersprache in Maschinensprache, also in Binärcode. Die Aufgabe des Compilers besteht überwiegend darin, die Syntax zu prüfen, zu analysieren und zu optimieren, und dann einen Code daraus zu erzeugen, den die Maschine versteht.

Compiler werden auch von Menschen gebaut, klar. Man kann ihre Existenz insofern auch als eine Art Maßnahme zur Effizienzsteigerung betrachten: Ein paar Programmierer setzen sich hin und entwickeln einen Compiler, mit dem man mehrere höhere Sprachen in Maschinensprache übersetzen kann, und das spart den anderen Programmierern lästige Arbeit. So kann sich jeder auf seine Aufgabe konzentrieren: Die einen schreiben den Quelltext in menschenverständlicher Form, die anderen (die Compiler) erzeugen den Binärcode für die Maschine. Dass die Befehle im Binärcode für uns nicht mehr lesbar sind (eine lange, lange Serie von Einsen und Nullen), muss uns nicht weiter stören.

Es gibt heute viele unterschiedliche dieser höheren Programmiersprachen, zum Beispiel BASIC, C, C++, C#, PHP, SQL, Python, Java, JavaScript, Scratch etc. Welche man wählt, hängt in der Regel von dem Problem ab, das man lösen möchte. Unterschiedliche Sprachen eignen sich zur Lösung unterschiedlicher Probleme, und alle haben ihre Vor- und Nachteile. Für Webanwendungen zum Beispiel, also um Webseiten zu programmieren, eignen sich JavaScript und Java sehr gut. Um Hardware zu programmieren, eignen sich eh C oder C++. Um Datenbanken zu erstellen, zu befüllen und wieder auszulesen, eignet sich SQL. Und um die Steuerung von kleinen LEGO-Robotern zu ermöglichen, eignet sich Scratch, die extra für Kinder und Jugendliche entwickelt wurde.

Schauen wir uns doch mal ein Beispiel aus der Programmiersprache C++ an und beginnen auch hier wieder mit einem freundlichen »Hello World!« auf unserem Bildschirm.

Dafür brauchen wir folgenden Quellcode:


Abbildung 7: Beispielcode in C++

Okay, so richtig lesbar und verständlich ist es immer noch nicht, aber ihr müsst zugeben: Es ist um einiges kürzer als Assembler! Lasst uns gemeinsam schnell mal schauen, was das alles bedeutet:

 Der Header #include <iostream> sagt der Maschine: »In diesem Programm möchte ich die Datei ›iostream‹ hinzufügen (include).« Die eigentlich komplizierte Funktion, die ich in meinem Programm aber nicht erneut programmieren möchte, ist standardmäßig bereits vorhanden. Es gibt Ordner, in denen sich die unterschiedlichen Befehle befinden. Diese Ordner nennt man name spaces, also »Namensräume«. Wenn ich also einen Befehl brauche, muss ich zuerst den name space benennen und dann den Befehl.

 int main (void) bedeutet, jetzt kommt der Hauptteil (main) meines Codes. Dieser Hauptteil wird zwischen den Klammern { } geschrieben und von der Maschine Zeile für Zeile ausgeführt.

 std::cout << »Hello World!«; bedeutet: »Zeige den Text ›Hello World!‹ auf dem Bildschirm an.« Dafür soll die Maschine in der Datei iostream im name space std (für Standard) den Befehl cout (c für console und out für output) suchen und alles, was zwischen den Anführungszeichen steht, anzeigen. Das Semikolon zeigt an, wo der Befehl zu Ende ist.

 std::cin.get (); bedeutet: »Warte, bis der Nutzer eine Eingabe über die Tastatur gemacht hat, bevor du das Programm beendest.« Dafür soll die Maschine den Befehl cin.get (c für console, dann in für input und get für »holen«) suchen und so lange anzeigen, bis eine Eingabe vom Nutzer erfolgt. Das ist also nur ein Haltepunkt, den ich hier einbaue, damit der Nutzer überhaupt die Möglichkeit hat, den Text zu lesen, sonst würde sich das Programm sofort nach dem Ausführen schließen.

 return 0; bedeutet schließlich: »Du brauchst nichts mehr anzeigen und darfst das Programm beenden.«

Wenn ich weiß, dass ich mich im selben name space bewege, kann ich den Code folgendermaßen vereinfachen:


Abbildung 8: Beispielcode 2 in C++

Damit sage ich gleich am Anfang, dass ich immer den name space std nutzen möchte. Dann lege ich los mit meinem Code und schreibe alle Befehle nacheinander, ohne dass ich in jeder Zeile die Suche nach std einfügen muss.

Dieses Beispiel zeigt, dass ich der Maschine Schritt für Schritt alles erklären muss. Wenn man eine neue Kollegin oder einen Praktikanten einarbeiten muss, ist das ganz ähnlich. Am Anfang ist es ein riesiger Aufwand, weil man alle Aufgaben ganz genau erklären muss. Man muss ihm oder ihr die ganzen unternehmensspezifischen Begriffe und Abkürzungen erklären, man muss ihnen beibringen, wo sie was finden und wen man nach Informationen fragen oder um Hilfe bitten kann. Aber irgendwann ist die Einarbeitung beendet und sie können ihre Aufgaben selbst durchführen und uns entlasten. Die Mühe hat sich gelohnt.

Diese Einarbeitung geht beim Programmieren aber auch einfacher, und zwar mit der Sprache Python. Diese Sprache hat eine reduzierte und auf Übersichtlichkeit optimierte Syntax, dadurch lässt sich Programmcode deutlich einfacher und knapper formulieren als in den anderen Sprachen.

Wenn wir unsere Nachricht »Hello World!« in Python schreiben wollen, programmieren wir das folgendermaßen:


Abbildung 9: Beispielcode in Python

Hier sage ich der Maschine einfach nur, fast wie einem Menschen: »Schreibe die Nachricht ›Hello World!‹ auf dem Bildschirm.« Mit »Print« ist hier nicht das Drucken mit einem Drucker gemeint, sondern die Ausgabe auf der Konsole, also auf dem Bildschirm.

Das sieht jetzt aber wirklich viel einfacher aus, stimmt’s? Das ist der Grund, warum Python sehr gehypt wird. Dabei ist das eine grundsätzliche Richtung, in die sich die höheren Programmiersprachen heute entwickeln: Coden wird immer menschenfreundlicher.

Wenn es darum geht, Roboter zu programmieren – insbesondere die für Kinder geeigneten –, gibt es inzwischen sogar visuelle Sprachen. Diese Sprachen nutzen Module mit unterschiedlichen Funktionen, die der Roboter ausführen soll, wie zum Beispiel »Mache einen Schritt nach vorne«, »Hebe den rechten Arm« oder »Lächle«. So können die Kinder über Symbole und Bilder Befehle erteilen, ohne sich über Syntax oder Architektur Gedanken machen zu müssen. Scratch habe ich schon erwähnt, es gibt aber auch andere, wie zum Beispiel Cognimates2, mit einer Oberfläche, die in Abbildung 10 zu sehen ist.


Abbildung 10: Oberfläche von Cognimates, Roboterprogrammiersprache für Kinder

Das ist der Moment, in dem Maria mich erleichtert anschaut. Programmieren wird bald für viele möglich sein, auch für sie. Sollte sie endlich mal den richtigen Typen finden und Kinder kriegen, könnten sie alle zusammen kleine Roboter programmieren. Darauf freut sich Maria jetzt schon. In diesem Moment vibriert ihr Handy, natürlich eine neue Tinder-Nachricht. Tom schreibt: »Heute Abend am Brandenburger Tor?«

Maria: »Der hat sie doch nicht alle! Das soll unser erstes Date sein, und er will mich am Brandenburger Tor treffen?«

Ich, ganz Tinder-Idiotin: »Das ist doch schön, warum bist du so genervt?«

Maria: »Das bedeutet nur eins: Er will sich in den Menschenmassen verstecken, checken, ob ich seine ästhetischen Ansprüche erfülle, und falls nicht, einfach abhauen.«

Ich: »Oh! Das geht ja gar nicht … Aber woher weißt du das? Gibt’s da etwa auch einen Code für?«

Maria: »Tja, habe ich auch schon mal gemacht!« Sie sieht mich an und lacht.

Nicht nur Maschinen haben ihre besondere Syntax, Tinder-Nutzer scheinen auch komische Regeln zu befolgen, die nur sie verstehen. Wenn man sich für das erste Date auf einem öffentlichen Platz verabredet, dann bedeutet das, dass jemand dem Braten nicht traut und sicher sein will, schnell wegrennen zu können. Aha! Das klingt für mich wie ein »Erstes Date«-Algorithmus!

Keine Panik, ist nur Technik

Подняться наверх