Einführung

Dieses Tutorial bietet dir einen Einstieg ins Programmieren. Es vermittelt allgemeine Programmierkonzepte wie Variablen, Bedingungen, Schleifen, Funktionen und einiges mehr. Diese Konzepte sind Grundlage vieler Programmiersprachen.

Das Tutorial ist auch ein Einstieg in JavaScript. JavaScript ist eine sehr verbreitete Programmiersprache. Sie ist die Sprache des Web. Sie läuft in jedem Browser und mit Hilfe von Node.js auf jedem Computer. Man kann mit ihr Webseiten animieren, komplexe Webanwendungen erstellen und mit Node.js Webserver realisieren. JavaScript ist eine elegante, eine moderne Sprache. Sie unterstützt objektorientierte und funktionale Programmierung.

JavaScript besteht zum einen aus dem eigentlichen Sprachkern, zum anderen aus einer Reihe von Bibliotheken. Mit der vielleicht bekanntesten JavaScript-Bibliothek, dem DOM, lassen sich Webseiten dynamisch verändern. Während der Sprachkern für alle Umgebungen der gleiche ist, stehen je nach Laufzeitumgebung verschiedene Bibliotheken zur Verfügung. Dieses Tutorial konzentriert sich auf den Sprachkern von JavaScript. Das DOM wird exemplarisch in einigen ausgewählten Lektionen behandelt.

JavaScript Hero besteht aus kleinen, überschaubaren Lektionen und Übungen. Eine Lektion stellt ein jeweils abgeschlossenes Thema in seinen wesentlichen Zügen vor. Dabei wird immer ein praktisches Beispiel verwendet. Die Übungen bewegen sich auf unterschiedlichem Niveau. Zum einen Wiederholen sie das Lektions-Beispiel in leicht abgewandelter Form. Hier soll das Gelernte durch praktische Übung gefestigt werden. Zum anderen sind es anspruchsvolle Aufgaben, häufig aus dem Bereich der Informatik (z.B. sortieren) oder der Mathematik (z.B. Primzahlen bestimmen). Hier soll das Gelernte angewendet und vertieft werden.

Die Übungen basieren auf sogenannten Unit-Tests und dem Konzept der testgetriebenen Entwicklung. Die Idee ist, bei einer gegebenen Anforderung zuerst entsprechende Tests zu schreiben und anschließend das geforderte Programm. Dies hat den Vorteil, dass man jederzeit anhand der Tests überprüfen kann, ob die Anforderung erfüllt oder nicht erfüllt ist.

Bei Unit-Tests werden kleine Einheiten, in der Regel Funktionen, getestet. Unit-Tests sind dabei selbst kleine Programme. Sie rufen die zu testende Funktion auf und überprüfen stichprobenartig, ob das gewünschte Verhalten auftritt oder nicht. Jede Aufgabe ist hier mit einer Reihe solcher Unit-Tests hinterlegt. Klickt man auf den Test-Button, werden diese Unit-Tests ausgeführt. Unterhalb des Tests-Buttons erscheint dann das Ergebnis dieser Tests. Jeder Rahmen gibt das Ergebnis eines Unit-Tests wieder.

Bei einem nicht bestandenen Test liegt entweder ein fachlicher oder ein technischer Fehler vor. Bei einem fachlichen Fehler stimmt das tatsächliche Ergebnis nicht mit dem erwarteten Ergebnis überein. Eine Funktion soll zwei Zahlen addieren. Der Unit-Test überprüft diese Anforderung beispielhaft anhand der beiden Zahlen 1 und 2. Das erwartente Ergebnis ist 3. Liefert die Funktion das tatsächliche Ergebnis 4, so liegt ein fachlicher Fehler vor. Solche Fehler werden mit einer Meldung wie "addiere(1, 2) gibt nicht 3, sondern 4 zurück." quittiert.

Bei technischen Fehlern kann die Funktion nicht ausgeführt werden. Die Funktion kann entweder nicht eingelesen werden oder sie bricht während ihrer Ausführung ab. Bei technischen Fehlern liefert der JavaScript-Interpreter, also das Programm im Browser, das die JavaScript-Anweisungen ausführt, eine entsprechende Fehlermeldung. Vergisst man zum Beispiel eine schließende Klammer am Ende einer Funktion, so wird folgender Fehler geworfen: "SyntaxError: missing } after function body". Diese Fehlermeldungen sind in Englisch, da sie direkt von dem JavaScript-Interpreter stammen.

JavaScript Hero funktioniert am besten im Browser Firefox. Das hat einen einfachen Grund: Firefox ist der einzige Browser, der bei technischen Fehlern sowohl die Fehler-Zeile als auch die Fehler-Spalte mit ausgibt. Das erleichtert die Fehlersuche.

Bei Fragen, Anmerkungen und Hinweisen freue ich mich über eine Mail.

loving