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 aber 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 annimieren, 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 zum Beispiel Objekte im Browser verschieben. Während der Sprachkern für alle Umgebungen der gleiche ist, stehen je nach Laufzeitumgebung verschiedene Bibliotheken zur Verfügung. Dieses Tutorial geht auf keine dieser Biblioteken ein. Es behandelt ausschließlich den Sprachkern von JavaScript.

JS Hero besteht aus kleinen, überschaubaren Lektionen und Übungen. Die Lektionen versuchen, ein jeweils abgeschlossenes Thema genau und in seinen wesentlichen Zügen darzustellen. Sie verwenden dabei immer ein praktisches Beispiel. 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 komplexe 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 (engl.: test-driven development, TDD). 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. Drückst du 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, so wird folgender Fehler geworfen: "SyntaxError: missing } after function body". Diese Fehlermeldungen sind in Englisch, da sie direkt von dem JavaScript-Interpreter stammen.

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