Einige Erklärungen zur JavaScript -Programmierung
Grundbegriffe der Programmierung
Ausführungen von Programmen
Bei einigen Sprachen besteht die Bedeutung eines Textes, darin, daß etwas Bestimmtes getan werden soll. Man spricht dann auch von einer operationalen Semantik und könnte die Sprache dann auch als eine operationalen Sprache bezeichnen.
Wenn das getan wird, was ein Programm verlangt, sagt man, das Programm werde ausgeführt.
Wenn ein Programm ausgeführt wird, so sagt man auch, daß das Programm laufe.
Die Zeit, zu der ein Programm ausgeführt wird, nennt man auch die Laufzeit des Programms. Wenn man sagt, daß etwas zur Laufzeit passiert, so meint man damit, daß es bei der Ausführung passiert.
- Programmiersprache und Programm
\ / .-----------------------.
- Aktivitaet - <-----------------| Programm |
/ \ Ausfuehrung '-----------------------'
Implementationen
Ein System, das Programme nach den Regeln einer Programmiersprache ausführt, wird eine Implementation (oder Implementierung ) dieser Programmiersprache genannt.
Eine JavaScript-Implementation ist also etwas, das JavaScript -Programme ausführen kann.
- Eine Implementation, die gerade ein Programm ausführt
.----------------------------------------.
| .----------------. .------------. | Inkarnation aus Implementation und Programms
| | Implementation |<---( Programm ) |
| '----------------' '------------' |
'----------------------------------------'
|
V
\ /
- Interaktion -
/ \
|
V
Ausgabe- Ein Beispiel
.----------------------------------------.
| .----------------. .------------. | Eine Inkarnation einer Operation ist eine
| | Plattenspieler |<---( Schallplatte ) | Verbindung der Operation mit Daten, die
| '----------------' '------------' | dann ausgefuehrt werden kann.
'----------------------------------------'
|
V
\ /
- Interaktion - Grundprinzipien:
/ \ 1.) Verbindung zu startfaehiger Maschine
| 2.) Start einer startfaehigen Maschine
V
Ergebnis- Ein Grundprinzip
.----------------------------------------.
| .----------------. .------------. | Eine Inkarnation einer Operation ist eine
| | Operation |<---( Daten ) | Verbindung der Operation mit Daten, die
| '----------------' '------------' | dann ausgefuehrt werden kann.
'----------------------------------------'
|
V
\ /
- Interaktion -
/ \
|
V
Ergebnis
Motivation ⃗²
JavaScript -Programme laufen „überall“, da für alle populären Betriebssysteme Web-Browser mit JavaScript verfügbar sind.
Laut der folgenden Quelle ist JavaScript die beliebteste und die meistgenutzte Programmiersprache.
- Zitat von 2017
www.heise.de/developer/meldung/Studie-Die-Mehrheit-der-deutschen-Entwickler-fuehlt-sich-unterbezahlt-3661355.html?seite=all
2017-03-22
- "JavaScript ist [so]wohl bei den meistgenutzten als auch bei den beliebtesten Programmiersprachen vorne."
- Zitat von 2019
www.heise.de/developer/meldung/Studie-Fast-alle-Entwickler-koennen-JavaScript-4295228.html?seite=all
- "Der große Gewinner der Umfrage ist die Programmiersprache JavaScript, die im Jahr 2018 laut den Ergebnissen die Programmiersprache war, die die meisten Entwickler beherrschten. JavaScript stößt damit Java vom Thron und verdrängt sie auf Platz 2."
- „JavaScript ist die am weitesten verbreitete Programmiersprache des Jahres 2018“
- Zitat von 2020
www.heise.de/news/Studie-Entwickler-programmieren-in-der-Freizeit-weiter-4782219.html?seite=all
- „Laut der vierten Ausgabe der jährlich neu aufgelegten Studie "State of the Developer Ecosystem " ist Java weiterhin die beliebteste Programmiersprache unter Befragten. JavaScript ist allerdings die beruflich meistverwendete Sprache (knapp vor Java und Python ).“
Laut der folgenden Quelle ist JavaScript die einzige Programmiersprache die von allen populären Web-Anbieter eingesetzt wird.
- URI-Fragment
en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites
Bei einer Popularitätsanalyse von Red Monk steht JavaScript auf Platz 1.
- Google Maps (Reaktion auf Maus)
- Google Translate (Verarbeitung während der Eingabe)
- Browser als Taschenrechner (JavaScript-Kommandozeile)
Die Bedeutung des Wortes „JavaScript “ ⃗³
JavaScript ist ein Warenzeichen von Oracle, das von Mozilla mit Erlaubnis von Oracle verwendet wird, um die Skriptsprache von Mozilla Firefox zu bezeichnen. Die Skriptsprachen anderer Hersteller durften von diesen im allgemeinen nicht „JavaScript “ genannt werden. Inzwischen ist genau das aber weitverbreitet, und die enge Bedeutung von JavaScript als Warenzeichen verwässert.
Man kann heute pragmatisch sagen, daß mit dem Begriff JavaScript heute die Sprachen gemeint sind, die sich selber so nennen, und die starke Ähnlichkeit mit der Skriptsprache von Mozilla Firefox haben und weitgehend der aktuellen ECMAScript -Norm entsprechen.
- Englische Aussprache
- Mozilla Firefox moʊˈzɪlə ˈfaɪɚfɑks
ECMAScript ⃗³
„Netscapes JavaScript ist eine Übermenge der Standardskriptsprache ECMA-262 Ausgabe 3 (ECMAScript ), die sich von dem veröffentlichten Standard nur geringfügig unterscheidet.“ (“Netscape's JavaScript is a superset of the ECMA-262 Edition 3 (ECMAScript) standard scripting language, with only mild differences from the published standard.”) — http://developer.mozilla.org/en-US/docs/Web/JavaScript/About_JavaScript (2014-06)
Es erwies sich als unpraktisch den Kurs an „JavaScript “ auszurichten, da die Dokumentation von JavaScript (im Sinne der Sprache von Firefox ) unzureichend ist, und die Bedeutung von „JavaScript “ im Umbruch begriffen ist und verwässert wird. Daher behandelt dieser Kurs nun ECMAScript an Hand der Firefox-Implementation namens JavaScript.
Man kann davon ausgehen, daß ECMAScript das ist, was „umgangssprachlich“ mit „JavaScript “ gemeint ist. Deswegen erfüllt die Behandlung von ECMAScript die Erwartungen einer Person, die „JavaScript “ erlernen will.
- Die ECMA-Skript-Spezifikation als PDF-Datei
www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf
Erlernbarkeit ⃗³
JavaScript ist einfacher zu erlernen als viele andere Sprachen wie Java oder C++, doch sollte man nicht unterschätzen, daß das Programmieren letztendlich eine anspruchsvolle Tätigkeit ist – egal, wie einfach die dafür verwendete Sprache ist. Das Erlernen der Grundlagen des Programmierens bereitet immer Mühe und Schwierigkeiten, egal ob man eine einfache Sprache wie Python oder JavaScript oder eine schwierige Sprache wie C++ verwendet. Da Dozenten von C++ -Kursen in ihren Kursen C++ oft vereinfachen (etwa, indem sie nur die einfachen Teile behandeln), ist ein JavaScript -Kurs für Anfänger nicht unbedingt einfacher als ein C++ -Kurs. Jedoch ist es einfacher dann nach Ende des Kurses bestimmte Aufgaben mit JavaScript zu erledigen als mit C++.
Begriffe ⃗³
„Web-App“
Eine „Web-App “ ist ein Programm, dessen Benutzeroberfläche mit HTML gestaltet wurde. Sie verwendet einen Web-Browser zur Anzeige dieser Benutzeroberfläche.
„Single-Page-Webanwendung“
Eine „Single-Page-Webanwendung “ ist eine Web-App, die aus einer einzigen HTML-Seite besteht.
AJAX
AJAX ist eine Technik, die es einer Webseite erlaubt, Informationen von einem Webserver abrufen zu können. Nach Ansicht einiger Experten hat das Aufkommen von AJAX in den nuller Jahren die Verbreitung von JavaScript im professionellen Bereich stark gefördert. Der Begriff „AJAX“ wurde 2005 erstmals verwendet, die Technik ist aber schon älter.
AJAX ist ein Akronym für “Asynchronous JavaScript and XML”.
[ˈeidʒæks]
jQuery (2006/2007)
Eine Bibliothek, die Inkompatibilitäten verschiedener Browser überbrückt, ohne dabei deren Bestandteile zu verändern (wie wohl zuvor bei Prototype ).
Node.js
Node.js erlaubt es, JavaScript -Programme ohne Web-Browser laufen zu lassen. Damit können auch JavaScript -Programme für Web-Server geschrieben werden, so daß JavaScript -Programmierer ihre Kenntnisse jetzt nicht mehr nur im Web-Browser nutzen können und weniger verschiedene Programmiersprachen erlernen müssen, wenn sie auch Server-Software schreiben wollen.
npm
npm ist ist der Paketmanager für Node.js.
SpiderMonkey
SpiderMonkey ist die JavaScript-Implementation, die von Mozilla Firefox verwendet wird.
jsshell
jsshell erlaubt es JavaScript mit unter der Konsole (ohne Browser) auszuführen. Es verwendet intern dazu SpiderMonkey.
Electron
Electron erlaubt es, Web-Apps als alleinstehende Programme, die ohne separaten Web-Browser laufen, zu verpacken.
Windows Scripting Host
Dieser Teil von Windows erlaubt es, Skripte für Windows oder verschiedene Programme in einer speziellen Microsoft -Variante von JavaScript zu schreiben.
React
ursprünglich von Facebook entwickelte JavaScript -Programmbibliothek, die 2019 populärer als Angular werden soll. (“virtual DOM” double buffering wie curses)
Unity
erlaubt Spiele-Programmierung mit JavaScript.
Ionic
“The bulk of an Ionic app will be written in HTML, Javascript, and Css. Eager developers might also dig down into the native layer with custom Cordova plugins or native code, but it's not necessary to get a great app. Ionic also uses AngularJS for a lot of the core functionality of the framework. ” (Stand 2018)
Xamarin
Xamarin supplies add-ins to Microsoft Visual Studio that allows developers to build Android, iOS, and Windows apps within the IDE using code completion and IntelliSense in C#.
Software für alleinstehende Web-Apps ⃗³
Adobe AIR
The Adobe AIR runtime enables developers to use HTML, JavaScript, Adobe Flash software, and ActionScript to build web applications
Flutter
Flutter erlaubt es, Web-Apps als alleinstehende Programme, die ohne separaten Web-Browser laufen, zu verpacken.
Apache Cordova (ehemals „PhoneGap“)
Apache Cordova erlaubt es, Web-Apps als alleinstehende Programme, die ohne separaten Web-Browser laufen, zu verpacken.
- “Cordova wraps your HTML/JavaScript app into a native container which can access the device functions of several platforms. These functions are exposed via a unified JavaScript API, allowing you to easily write one set of code to target nearly every phone or tablet on the market today and publish to their app stores.” (Stand 2018)
Web-Quellen *
- Die ECMA-Skript-Spezifikation als PDF-Datei
www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf
- Quelle zu JavaScript
- http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
- Informationen zur Verbreitung verschiedener Web-Browser
- http://fc.webmasterpro.de/global/global-part.php
- Verbundene Implementation
- babeljs.io
- Stilrichtlinien
- https://github.com/airbnb/javascript
- http://standardjs.com/rules.html
- https://google.github.io/styleguide/jsguide.html
- Stilprüfung
- https://eslint.org/demo/
SpiderMonkey *
Das erste Program, welches JavaScript verarbeiten konnte, wurde SpiderMonkey getauft und ist in den Browsern Netscape Navigator und Mozilla Firefox enthalten.
JavaScript -ähnliche Sprachen *
Die Skriptsprachen anderer Hersteller, wie etwa Microsofts JScript, sind aber oft JavaScript -ähnlich, so daß vieles in diesem Kurs Gelernte auch auf sie übertragen werden kann.
„Die Chakra -Implementation, welche im Internet Explorer verwendet wird, ist eigentlich eine JScript -Implementation und keine JavaScript -Implementation“ (“The Chakra engine used in Internet Explorer is technically a JScript engine, rather than a JavaScript engine.”) — http://developer.mozilla.org/en-US/docs/Web/JavaScript/About_JavaScript (2014-06)
Es scheint derzeit aber von Oracle geduldet zu werden, daß die Bezeichnung „JavaScript “ von Dritten relativ frei verwendet wird. So bezeichnet Microsoft selber Chakra als “JavaScript engine ”.
Browserweichen *
Dieser Kurs verzichtet bewußt auf die vergleichende Behandlung verschiedener näherungsweiser Implementationen von ECMAScript („Browserweichen“), da solche Vergleiche schnell veralten und das Lernen erschweren. Würde man dieses behandeln, so würde man nämlich eigentlich mehrere verschiedene Programmiersprachen gleichzeitig behandeln. (Dies wäre ähnlich als würde man jemandem, der Italienisch lernen will, auch gleich noch „die ähnlichen Sprachen“ Französisch und Spanisch beibringen wollen. Es ist zwar tatsächlich nützlich, diese Sprachen ebenfalls noch zu kennen, aber das Lernen würde dadurch insgesamt schwieriger werden.)
Es kann jedoch passieren, daß ein Leser sich einmal mit diesen anderen näherungsweisen Implementation von ECMAScript beschäftigen muß. Das wird dann aber dadurch erleichtert, daß er zunächst erst einmal eine Sprache gut erlernt. Daher konzentriert sich dieser Kurs bewußt auf eine einzige spezielle Programmiersprache: JavaScript in der neuesten Version, nicht: ältere Versionen von JavaScript, nicht: ECMAScript, nicht: JScript, nicht: CoffeeScript, nicht: Java, nicht: C++ u.s.w.
Programme und Skripte *
Trotz des Namens „ECMAScript “ ist ECMAScript eine Programmiersprache, wie auch die folgenden Zitate aus der offiziellen Norm es besagen.
- ECMAScript 2016, Introduction
- ECMAScript has grown to be one of the world's most widely used general purpose programming languages. It is best known as the language embedded in web browsers but has also been widely adopted for server and embedded applications.
- ECMAScript 2016, 4 Overview
- ECMAScript is an object‑oriented programming language
- ECMAScript 2016, 4 Overview
- ECMAScript was originally designed to be used as a scripting language, but has become widely used as a general purpose programming language.
Entsprechend spricht man auch von „ECMAScript -Programmen“ (und nicht immer nur von „Skripten“), wie auch die folgenden Zitate aus der offiziellen Norm es zeigen.
- ECMAScript 2016, 4 Overview
- functions that can be called from an ECMAScript program.
- ECMAScript 2016, 4.2.2 The Strict Variant of ECMAScript
- A complete ECMAScript program may be composed of both strict mode and non‑strict mode ECMAScript source text units.
Ein Programm besteht nach dem letzten Zitat aus mehreren „Quelltexteinheiten“.
Daneben kann ECMAScript auch als Skriptsprache eingesetzt werden (also, um vorhandene Programme zu steuern), und es gibt in ECMAScript tatsächlich auch Skripte!
Empfehlenswerte Literatur ⃗
Es ist zunächst nicht nötig, sich zusätzlich zu diesem Kurs auch noch ein Buch zu kaufen. Ein Buch kann aber nach dem Ende dieses Kurses dabei helfen, die erworbenen Kenntnisse auszubauen.
auf deutsch:
- David Flanagan : JavaScript. Kurz & Gut
- David Flanagan : JavaScript – Das umfassende Referenzwerk
auf englisch:
- Paul Wilton, Jeremy Mc Peak : Beginning JavaScript ® 4th Edition (für Anfänger ohne Vorkenntnisse )
- Nicholas C. Zakas : Professional JavaScript ® for Web Developers (2012) (für Leser mit Vorkenntnissen und Kenntnissen anderer Sprachen)
Empfehlungen von Kursteilnehmern ⃗
Diese Empfehlungen stammen von Teilnehmern bisheriger Kurse.
2014-06
- http://www.codecademy.com/en/tracks/javascript
- Kai Günster : „Schrödinger lernt HTML5, CSS3 und JavaScript “ (2013)
Zitate *
- “The diktat from upper engineering management was that the language must `look like Java’.” — Brendan Eich /ˌbrɛn.dən.ˈaɪk/, http://brendaneich.com/2008/04/popularity/
- Aussprachehinweise
- diktat dɪkˈtɑːt (h)
- “ECMAScript syntax intentionally resembles Java syntax.” — Abschnitt 4.2.0 in ECMAScript 2015
- “When it comes to Web development in general and Javascript in particular, the golden rule is: initially develop using a good browser, such as Firefox, then later test on internet explorer to make your clients happy.” — Larry Ullman
- “Typically, like a lot of you, I’ll code in Safari or Firefox; get things looking right with clean, standards-based code; then open up in IE6, weep, and fix.” — Handcrafted CSS, Dan Cederholm, Ethan Marcotte (2010)
- “Develop in Firefox, and then make it work everywhere else.” – Practical Prototype and script.aculo.us – Andrew Dupont (2008)
- “Front-end web development, also known as client-side development is the practice of producing HTML, CSS and JavaScript for a website or web application so that a user can see and interact with them directly. The challenge associated with front end development is that the tools and techniques used to create the front end of a website change constantly and so the developer needs to constantly be aware of how the field is developing.” — en.wikipedia.org/wiki/Front-end_web_development (2016-06-05)