Programmiersprachen wurden erfunden, um mit dem Computer zu kommunizieren, damit dieser bestimmte Aufgaben übernehmen kann. Man denke an komplexe mathematische Berechnungen, Textverarbeitung, Bildverarbeitung, Datenbanken und die vielen Anwendungen im Internet.
Der Entwickler muss dem Computer Anweisungen geben, damit dieser diese Aufgaben bewältigen kann. Dabei definiert dieser bestimmte Arbeitsschritte, um ein Problem zu lösen. Diese Arbeitsschritte werden vom Computer Schritt für Schritt abgearbeitet. Ähnlich wie in einem Kochrezept definiert der Entwickler eine Folge von Arbeitsschritten. So einen Arbeitsschritt nennt man Algorithmus.
Die Schwierigkeit für den Anfänger ist, dass man lernen muss, wie ein Computer zu denken. Im täglichen Leben wird vieles vorrausgesetzt. Einem Computer muss man jedoch ganz genaue Anweisungen geben, die dieser dann exakt der Reihe nach abarbeitet.
Auf der untersten Ebene arbeiten Computer mit Einsen und Nullen. Das nennt man Binärcode oder Maschinensprache. Da es sehr schwierig ist auf dieser Ebene zu programmieren, haben schlaue Köpfe Programmiersprachen erfunden, die die Interaktion mit dem Computer vereinfachen. Die Interaktion mit dem Computer wird abstrahiert. Javascript ist eine höhere Programmiersprache, das heißt sie ist weit entfernt von der Programmierung in Maschinensprache. Es gibt außerdem Assemblersprachen, die näher am Maschinencode liegen und nicht so abstrakt und einfach sind wie die höheren Sprachen.
Javascript wird in einfachen Textdateien (Quelldateien, Source Files) gespeichert. Den Inhalt nennt man Quellcode.
Damit ein Computer diesen Quellcode versteht, muss er in Maschinensprache umgesetzt werden. Das geschieht auf 2 verschiedene Arten, entweder mit einem Compiler oder Interpreter.
C++ ist eine Programmiersprache, die mittels eines Compilers in Maschinensprache compliert wird. Das hat den Vorteil, dass dieser Maschinencode am Ende sehr schnell ist. Der Nachteil ist dass für jedes Betriebssystem (Windows, Linux, macOs) der Code kompliert werden muss. Das heißt, man braucht einen Compiler auf einem Linux Rechner, einen Compiler auf einem macOs und einem Windows Rechner. Dann kann der Code aber ohne weitere Hilfsmittel auf diesen Betriebssystemen ausgeführt werden. Programme die für bestimmte Rechner kompliert wurden nennt man native Programme.
Javascript ist eine interpretierte Sprache. Man kann es daher in jedem beliebigen Texteditor schreiben und kann es ohne weiteres in einem Browser ausführen. Interpretierte Sprachen brauchen eine Laufzeitumgebung (Runtime Enviroment). Diese Laufzeitumgebungen stellen Grundfunktionen zur Verfügung wie Maus, Drucker, Tastur, lesen schreiben etc. In einem Browser ist eine Laufzeitumgebung enthalten. Es gibt für Javascript auch Laufzeitumgebungen mit denen man Javascript auch außerhalb des Browsers ausführen kann, beispielsweise Node.js.
In einer Laufzeitumgebung wird während der Ausführung des Programms der Code in Maschinensprache übersetzt und ist daher nicht so performant.
Java ist eine Sprache, die eine Kombination aus compilierter und interpretierter Sprache ist. Das geschieht in folgenden Schritten
Der Bytecode wird von einem Interpreter in Maschinencode umgewandelt. Man braucht somit nicht das Betriebssystem auf dem der Code ausgeführt wird, sondern lediglich einen Interpreter.
1995 wurde Javascript in 2 Wochen von Brendan Eich für den Netscape Navigator entwickelt. Damals hieß es noch Mocha oder LiveScript. Es wurde später in Javascript umgetauft, auch wenn es mit der Programmiersprache Java wenig zu tun hat.
Kurze Zeit später brachte Microsoft für den Internet Explorer 3.0 eine halbwegs kompatible Sprache JScript heraus.
Um einen einheitlichen Standard zu erschaffen wurde JavaScript bei der ECMA unter dem Namen ECMAScript eingereicht. 2015 wurde die Version 6 verabschiedet ES6 oder ES2015.
Weitere Varianten von Javascript sind ActionScript (Flash) und ExtendScript, welches in vielen Adobe Programmen zum Einsatz kommt.
Um ein Programm zu erstellen, sollte man genau überlegen, welche User oder Eingabedaten benötigt man. Welche Dateien sind erforderlich, welche Schritte sind erforderlich? Welche Sonderfälle muß man berücksichtigen? Was ist das Ergebnis?
Das Umsetzen eines Programmablaufs oder eines Algorithmus nennt man Implementierung.
Flussdiagramme sind Programmablaufpläne in grafischer Darstellung. Hier gibt es einige Programme wie beispielsweise Flowchart mit denen man Flussdiagramme erstellen kann.
Eine andere Möglichkeit ein Programm zu entwerfen ist Pseudocode. Dabei werden die einzelnen Programmschritte in normaler Sprache formuliert und bestimmte zusammengehörende Passagen eingerückt. siehe Wiki Pseudocode
program Name und Kurzbeschreibung LiesDatenStruktur() LiesDatenInhalt() ... wenn DatenUnvollständig dann FehlerMelden exit andernfalls HauptstatistikBerechnen ZusammenstellungBerechnen Resultate in HTML-Datei schreiben end program Name
Javascript ist eine Sprache die in erster Linie für Webseiten und Webanwendungen konzipiert wurde. Eine Webanwendung ist eine Webseite, die sich wie eine Desktopanwendung anfühlt z.B.: Google Documents. So eine webbasierte Software- Anwendung nennt man Rich Internet Application.
Unter Frontend versteht man die Clientseite also alles was im Browser auf dem Userrechner abläuft. Unter Backend die Programmierung, die auf dem Server abläuft.
Seinen Ursprung hatte Javascript im Frontend. Es wurde entwickelt um Webseiten Dynamik und Interaktivität zu verleihen, die im Browser ausgeführt wurden.
In den 1990er Jahren wurde unter dem Begriff DHTML die Möglichkeit eingeräumt auch auf der Serverseite Code auszuführen. Dieses DHTML wurde dann abgelöst durch das sogenannte DOM Scripting. DOM steht für Document Object Model. Damit hat man die Möglichkeit Webseiten dynamisch zu erstellen, indem man HTML Elemente und Attribute sowie CSS Eigenschaften per Javascript erzeugt oder verändert.
Ein Beispiel für eine Backend Anwendung: In einer Suchanfrage wird eine Eingabe an den Server geschickt, hier wird eine Datenbank durchsucht, das Ergebnis der Datenbank wird an den Server geschickt, welcher wiedrum dieses Ergebnis an den Client schickt. Dort wird dann das entsprechende Ergebnis dargestellt mittels HTML Elementen und CSS.
Es ist zwar möglich eine Webseite nur mit HTML zu erstellen, jedoch besteht sie eigentlich aus drei Schichten: HTML, CSS und Javascript.
Es ist ein guter Entwicklungsstil diese 3 Schichten zu trennen. Dazu bietet es sich an alles in separaten Dateien anzulegen, so dass man diese Dateien auch für verschiedene Seiten nutzen kann.
Javascript lässt sich auf verschiedene Arten in eine Webseite einbinden.
Direkt in der HTML Seite kann man Javascript in einem <script></script>
Element einbetten. Das kann grundsätzlich irgendwo auf der Webseite stehen, sollte aber vor dem schließenden Body-Tag am Ende des Inhalts eingefügt werden, damit alle Dateien geladen sind, wenn das Script darauf zugreifen will. Außerdem wird eine Script sofort verarbeitet, was dazu führen kann, dass das Laden der anderen Elemente der Webseite unterbrochen wird.
Eine weitere zu bevorzugende Möglichkeit wäre das Javascript in eine oder mehrere Textdateien mit der Endgung js auszulagern. Das hat den Vorteil, dass man das Script auf mehreren Seiten nutzen kann. Innerhalb der HTML Seite wird diese Datei mittels src Attribut in einem Script-Element eingebunden.
<script src="scripts/main.js"></script>
Auch hier sollte das Script-Element aus genannten Gründen vor dem schließenden Body- Tag eingefügt werden.
Es gibt noch eine andere Möglichkeit das Script mittles eines Loader Events erst dann auszuführen, wenn alles geladen ist, mehr dazu hier
Man kann zu Testzwecken Javascript auch direkt im Browser ausführen. Hier eine Anleitung für Chrome.
Der Vollständigkeit halber sei noch erwähnt, dass man Javascript auch in einem href Attribut des Anker-Elements einfügen kann. Auch mittels eines Event-Attributs kann man Javascript aufrufen. Aus den Gründen der Trennung von Inhalt und Code ist beides kein guter Stil.
Damit der Entwickler Fehlermeldungen und Ausgabemöglichkeiten hat, gibt es die Entwicklerwerkzeuge. Klickt man im Browser auf F12 werden die Developertools aufgerufen. Alternativ kann man auch Strg Shift J aufrufen. Unter dem Karteireiter Konsole, werden Fehler in Javascript angezeigt. Mit dem Javascript Befehl console.log()
kann man etwas ausgeben lassen. Beispielsweise eine Variable, um ein Ergebnis zu überprüfen.
console.log("Hallo");
console.log(2+34);
Weitere Konsole Methoden sind:
clear(), debug(), error(), info(), log(), trace(), warn()
Siehe auch das Thema Debugging
Eine weitere Möglichkeit der Ausgabe, die auch der User sehen kann ist der Einsatz von UI Komponenten alert(), confirm(), prompt(). Da man heute andere Möglichkeiten hat, sind diese Beispiele ein bisschen veraltet.
alert() | alert("Hallo") | Warnhinweis wird angezeigt |
confirm() | var x = confirm("Willst du weitermachen?"); | Ein Hinweis wird angezeigt, der bestätigt oder abgebrochen werden kann. Es wird true zurückgegeben, wenn er bestätigt wurde. Bei Abbruch wird false zurückgegeben. |
prompt() | var y = prompt("Bitte Namen eingeben"); | Der User wird aufgefordert etwas einzugeben. Die Eingabe wird zurück gegeben. Klickt man auf "Abbrechen" wird der Wert null zurückgegeben. Klickt man auf "Okay" ohne etwas einzugeben wird ein leerer String "" zurückgegeben |
Wie auch bei anderen Sprachen gibt es in Programmiersprachen die Syntax (Wörter) und die Grammatik (Anordnung der Wörter ).
siehe ausführlich in Basics Javascript MediaEvent
Einige Javascript Regeln |
|
Einzeilige Kommentare, die auch in einer Zeile hinter einer Anweisung stehen können schreibt man:
//
Mehrzeilige Kommentare schreibt man wie in CSS
/* der Kommentartext */
siehe auch grundsätzliche Grammatik Javascript MDN
Ein Literal ist ein Wert, das kann ein numerischer Wert 4
, eine Zeichenkette "hallo"
oder ein boolscher Wert true
oder false
sein. Ein Literal kann in einem Ausdruck direkt benutzt werden oder es wird einer Variablen zugewiesen, oder es wird von einer Funktion zurück gegeben.
Ein Token ist ein bestimmtes Zeichen mit einem Sinnzusammenhang. Bestimmte Zeichen haben eine Bedeutung. So ist beispielsweise dieses Klammerzeichen <
ein Token und ein Operator. Es bedeutet: "kleiner als".
Parsen bedeutet analysieren. Ein Parser zerlegt die Quellcode, analysiert Tokens und bringt bestimmte Dinge in die richtige Reihenfolge (z.B. Punktrechnung vor Strichrechnung). So macht ein Parser aus einem größeren Ausdruck eine Folge von kleineren Ausdrücken und bringt sie in die richtige Reihenfolge. So bereitet ein Parser die Dinge für einen Interpreter vor.