JavaScript oder Mocha oder LiveScript oder JScript oder ECMAScript ist eine der beliebtesten Programmiersprachen der Welt. Auf praktisch jedem PC der Welt ist mindestens ein JavaScript-Interpreter installiert und wird aktiv genutzt. Die Popularität von JavaScript ist ausschließlich auf seinen Status im Bereich der WWW-Skriptsprachen zurückzuführen.
Trotz seiner Beliebtheit wissen nur wenige Menschen, dass JavaScript eine großartige dynamische objektorientierte Allzweck-Programmiersprache ist. Das kann tatsächlich ein Geheimnis werden! Warum wird diese Sprache so missverstanden?
Name
Java – Das Präfix kann leicht dazu führen, dass Menschen an Java denken und denken, es sei eine Teilmenge von Java oder eine vereinfachte Version von Java. Es scheint, dass der Name ursprünglich mit Hintergedanken gewählt wurde, um Konzepte absichtlich zu verwirren und „Missverständnisse“ zu schaffen. JavaScript ist kein interpretiertes Java. Java ist interpretiertes Java. JavaScript ist eine andere Sprache.
Die Syntax von JavaScript ähnelt der von Java, genauso wie die Syntax von Java der von C sehr ähnlich ist. Aber es ist keine Teilmenge von Java, genauso wie Java keine Teilmenge von C ist. Es ist besser als Java in dem Bereich, für den Java (Oak) ursprünglich gedacht war.
JavaScript ist kein Produkt von Sun Microsystems, Sun ist die Heimat von Java. JavaScript wurde bei Netscape entwickelt. Ursprünglich hieß es LiveScript, also... das ist immer noch ein guter Name.
-Das Skript-Suffix lässt die Leute denken, dass es sich nicht um eine echte Programmiersprache handelt und zwischen ihr und einer „Programmiersprache“ immer noch eine erhebliche Lücke besteht. Aber das ist nur eine Frage der Anwendung. Im Vergleich zu C opfert JavaScript Leistung im Austausch für reichhaltige Ausdruckskraft und flexible Form.
Lisp in C-Skin
Die C-ähnliche Syntax von JavaScript, einschließlich geschweifter Klammern und Anweisungsformen, lässt es wie eine gewöhnliche prozessorientierte Programmiersprache aussehen. Dies ist ein Missverständnis, da JavaScript mehr mit funktionalen Sprachen wie Lisp oder Scheme gemeinsam hat als mit C oder Java. Es verwendet Arrays anstelle von Listen und Objekte anstelle von Eigenschaftslisten. Die Funktion steht an erster Stelle, sie hat einen Abschluss (wie übersetzt man den Abschluss?), und Sie können auch Lambda-Ausdrücke verwenden.
Typkonvertierung
JavaScript wurde ursprünglich für die Ausführung in Netscape Navigator entwickelt, und sein Erfolg in Navigator führte dazu, dass es in praktisch allen Webbrowsern zur Standardausrüstung wurde. Dadurch entsteht eine „Typkonvertierung“. JavaScript ist der George Reeves (Superman) der Programmiersprachen und eine kompetente Wahl für eine große Anzahl von Nicht-Web-Programmen.
Moving Target
Die ersten Versionen von JavaScript waren sehr schwach, ohne Ausnahmebehandlung, ohne interne Funktionen und ohne Vererbung. Heute ist es eine vollständig objektorientierte Programmiersprache. Aber viele Ideen in der Sprache basieren auf ihrer unausgereiften Form.
Das ECMA-Komitee, die Verwalter der Sprache, erweitert sie und verschärft bewusst ihr größtes Problem: zu viele Versionen. Dies ist eine Quelle der Verwirrung.
Designfehler
Keine Programmiersprache ist perfekt. JavaScript hat auch seine Designfehler, wie etwa die überladene Zahl, die je nach Typ sowohl „Addition“ als auch „Verbindung“ bedeutet, und die fehleranfällige with-Anweisung, die vermieden werden sollte. Die Richtlinie für reservierte Wörter ist zu streng. Das Einfügen eines Semikolons ist ein großer Fehler, beispielsweise wenn es als Symbol für einen literalen regulären Ausdruck verwendet wird. Diese Fehltritte haben direkt zu Fehlern in der Programmierung geführt und das Gesamtdesign der Sprache in Frage gestellt. Glücklicherweise können viele dieser Probleme mit einem guten Flusenprogramm gemildert werden.
Das Gesamtdesign dieser Sprache ist ziemlich offensichtlich. Das Merkwürdige ist, dass das ECMAScript-Komitee kein großes Interesse daran gezeigt hat, bestehende Probleme zu beheben, sondern vielleicht mehr daran interessiert ist, neue zu schaffen.
Schlechte Implementierung
Einige frühe Implementierungen von JavaScript hatten viele Fehler, die wiederum sehr negative Auswirkungen auf die Sprache selbst hatten. Noch schlimmer ist, dass diese fehlerhaften Implementierungen in fehlerhafte Webbrowser eingebettet sind.
Schlechte Bücher
Fast alle JavaScript-Bücher sind ziemlich schrecklich. Sie enthalten Fehler, enthalten schlechte Beispiele und fördern schlechte Praktiken. Einige wichtige Funktionen der JavaScript-Sprache werden entweder nicht klar erklärt oder überhaupt nicht erwähnt. Ich habe viele JavaScript-Bücher gelesen, kann aber nur eines empfehlen: JavaScript: The Definitive Guide (4. Auflage) von David Flanagan. (Autoren, bitte beachten Sie: Wenn Sie ein gutes Buch schreiben, senden Sie mir bitte ein Exemplar und ich werde es für Sie Korrektur lesen.)
Standards von „Quasi-Standards“
Offizielle Sprache bekannt gegeben von ECMA Die Qualität der Spezifikation ist äußerst schlecht. Nicht nur schwer zu lesen, sondern auch äußerst schwer zu verstehen. Es hat viel zu den „schlechten Büchern“ beigetragen, deren Autoren durch dieses Standarddokument kein tieferes Verständnis der Sprache erlangen konnten. ECMA und TC39 sollten sich darüber sehr schämen.
Amateure
Die meisten Menschen, die JavaScript verwenden, sind keine Programmierer. Ihnen fehlt die Ausbildung und Schulung, um gute Programme zu schreiben. JavaScript ist sehr ausdrucksstark und sie können damit trotzdem nützliche Dinge tun. Dies hat JavaScript den Ruf eingebracht, eher etwas für Amateure als für professionelle Programmierer zu sein. Das ist offensichtlich ein Fehler.
Objektorientiert
Ist JavaScript objektorientiert? Es verfügt über Objekte und seine Objekte können Daten und Methoden zum Bearbeiten der Daten enthalten. Objekte können auch andere Objekte enthalten. Es gibt keine Klassen, aber Konstruktoren, die Klassenaufgaben erledigen, einschließlich der Deklaration von Klassenvariablen und -methoden. Es gibt keine klassenorientierte Vererbung, aber eine prototyporientierte Vererbung.
Die beiden Hauptmethoden zum Aufbau von Objektsystemen sind Vererbung (is-a) und Aggregation (has-a). JavaScript verfügt über beides, aber seine dynamische Natur ermöglicht bessere Implementierungen als die Aggregation.
Einige Argumente, dass JavaScript nicht wirklich objektorientiert ist, basieren auf der Tatsache, dass es keine Möglichkeit bietet, Informationen zu verbergen. Mit anderen Worten: Ein JavaScript-Objekt hat keine privaten Variablen oder Methoden: Alle seine Mitglieder sind öffentlich.
Tatsache ist jedoch, dass JavaScript-Objekte private Variablen und private Methoden haben können (klicken Sie hier, um zu sehen, wie das geht). Der Grund dafür, dass so wenige Menschen das wissen, liegt natürlich darin, dass JavaScript die am meisten missverstandene Sprache der Welt ist.
Ein weiteres Argument dafür, dass JavaScript nicht wirklich objektorientiert ist, ist, dass es keine Vererbung bietet. Tatsache ist jedoch, dass JavaScript nicht nur die klassische Vererbung unterstützt, sondern auch andere Code-Wiederverwendungsmuster.
Übersetzung: Yuan Xiaohui Ursprünglicher Link: http://www.crockford.com/javascript/javascript.html