Drei große Lügen über JavaScript

Hallo Habr! Ich präsentiere Ihnen meine Übersetzung des Artikels " Die drei großen Lügen über JavaScript " von Richard Kenneth. Dieser Artikel wurde im Mai 2016 verfasst, aber seine Relevanz ist meiner Meinung nach nicht verschwunden. Ich bin ein Anfänger Programmierer, daher sind Fehler in Bezug auf "Verständnis" möglich. Also ...

Drei große Lügen über JavaScript


Es gibt zwei Arten von Lügen: die Lüge, die wir anderen erzählen, und die Lüge, die wir uns selbst sagen, um sie zu rechtfertigen
Es gibt drei große Lügen, die mir JavaScript-Fans immer wieder erzählen.

Lügen # 1


JavaScript ist die am meisten missverstandene Programmiersprache der Welt.
Die Leute wissen nicht, wie man es richtig benutzt, und deshalb geraten sie ständig in alle möglichen Probleme. Und das ist eine Lüge, denn in JavaScript gibt es nichts Unverständliches.

Dies ist eine gewöhnliche imperative / prozedurale Programmiersprache mit einer geringen Menge an Programmierfunktionalität (FP) und einer kontroversen „objektorientierten“ Funktion, die als Objektprototypen bezeichnet wird. Und was ist das Besondere daran?

Grundsätzlich sind alle Probleme, die bei der Verwendung von JavaScript auftreten, nur die Schuld der Benutzer: Sie sind unwissend, faul und an die Programmierung in Java oder Python gewöhnt. Was wissen sie nicht? Funktionale Programmierung?

Warum irren sich die Leute dann nicht, wenn sie andere FP-Sprachen wie C #, Clojure, Dart, Ulme, Erlang, F #, Julia, Haskell, Scala und Schema verwenden ? Funktionale Programmierung ist ein ziemlich gut verstandenes Paradigma in der IT-Branche. Was macht JavaScript in dieser Hinsicht so besonders problematisch?

Vielleicht kennen sich die Leute nicht mit Prototypen von Objekten aus. Lesen Sie in diesem Fall "Was JavaScript-Objektprototypen nicht sind". Prototypen sind natürlich nicht für die Softwareentwicklung geeignet. Sie sind kein besonders hohes Maß an Programmierabstraktion. Prototypen sind meistens ausgezeichnete Hash-Tabellen, ziemlich niedrig und dies ist das, was ich als "Bausteine" für echte objektorientierte Programmierung (klassenbasierte OOP) bezeichne. Die Leute verstehen vielleicht nicht, wie man Prototypen von Objekten verwendet, aber warum müssen Sie lernen, wie man „Steine ​​legt“? Das ist Ihre Mühe nicht wert.

Ja, ich verstehe. Prototypen sind sehr flexibel. Sie besitzen nicht alle „Rituale“, auf denen das klassische AKI steht. In diesem Sinne macht es Spaß, sie zu benutzen. Sie lassen sich jedoch nicht gut für große Anwendungen skalieren, weshalb die Benutzer wieder in den Unterricht zurückkehren. Wenn Prototypen eine so nützliche Technik wären, würden Sie sie überall angepasst sehen, da Prototypen in klassenbasierten Sprachen modelliert werden können, genauso wie Klassen in prototypbasierten Sprachen modelliert werden können. Und das können JavaScript- Programmierer nicht herausfinden.

Lügen # 2


Asynchrone Programmierung ist eine wesentliche Stärke von JavaScript. Lassen Sie uns zunächst verstehen, warum es in JavaScript überhaupt asynchrone Programmierung gibt.

Für die Entwicklung einer grafischen Benutzeroberfläche (GUI) ist die Ereignisschleife - de rigueur (das Übliche) , ob in Windows , X Window , OS Coco Cocoa oder einem Webbrowser. Alle behandeln Benutzereingabeereignisse asynchron. Bedeutet dies, dass asynchrone Programmierung auch eine Leistung von C ++ oder Objective-C ist ? Ereignisschleifen (mit asynchronen Bibliotheken) wurden auch in Python, Perl und Tcl verwendet . Dann haben sie wohl alle die Macht der asynchronen Programmierung? (Ich lache, wenn Leute das nicht existierende Wort „ Asynchronität “ verwenden ( asynchron ist ein Adjektiv, das Objekte oder Ereignisse beschreibt, die nicht zeitlich koordiniert sind ).

JavaScript verwendet außerdem eine Ereignisschleife und eine asynchrone Verarbeitung, um die Benutzeroberfläche des Webbrowsers zu unterstützen. Macht ihn das zu einer großartigen Sprache?

Und jetzt hat dieses Rechenmodell Node.js auf der Serverseite sehr beliebt gemacht, wo es für die Entwicklung ohne GUI verwendet wird, d. H. für Hochleistungs-Parallelität. Der Knoten ist offensichtlich für viele Anwendungen nützlich, aber es ist unwahrscheinlich, dass er die Welt der Parallelität übernimmt. Aktuelle Ereignisse zeigen die Einschränkungen von Node.js. Und ja, dies sollte alle davon überzeugen, nur JavaScript zu verwenden.
Der Zyklus der Ereignisse wurde als „Parallelität der Armen“ beschrieben.
Unterstützer von Node zeigen immer wieder dieselben Beispiele für große Unternehmen (PayPal, Netflix, Walmart, Uber usw.). Was kann für jedes Node.js- Beispiel in der Antwort verglichen werden? - Hunderte von Java- Beispielen? Java hat sich unzählige Male für die Unternehmensentwicklung bewährt. Deshalb ist es ein Industriestandard. Node.js hat sich noch nicht bewährt. Wir wissen nicht genau, wie viele Unternehmen versucht haben, Node.js zu verwenden, und haben es schließlich aufgegeben. Wir haben keine Ahnung, wie hoch die tatsächliche Erfolgsquote von Node.js Projekten ist. Für Unternehmen ist die Entscheidung für Node.js immer noch ein Risiko.
Ich gehe zuversichtlich davon aus, dass Go Node in Zukunft ersetzen wird, sobald es sein Ökosystem aus Frameworks und Paketen erweitert. Ihre Flugbahn ist unbestreitbar.
Sprachen wie Go und Erlang / Elixir können Node in den meisten Parallelitätsszenarien leicht übertreffen. Selbst das Ereignis- / Asynchronschleifenmodell ist auf lange Sicht nicht nachhaltig. Wir sollten daran interessiert sein, echte parallele Programmiersprachen zu verwenden, wenn unser Ziel maximale Leistung ist. Warum mit JavaScript Kompromisse eingehen?

Lügen # 3


JavaScript ist die beliebteste Programmiersprache der Welt.

Ist das wirklich so? Es gibt einen großen Unterschied zwischen einer Sprache, die standardmäßig weit verbreitet ist, und einer Sprache, die weit verbreitet ist.
Denken Sie daran, dass Entwickler in keinem anderen Bereich außer dem Internet Geiseln einer Sprache sind. Wir ignorieren diese Tatsache auf eigenes Risiko.

JavaScript ist die einzige Muttersprache für einen Webbrowser. Dies ist daher die direkteste Methode zum Schreiben einer Browseranwendung. Die meisten Entwickler verachten diese Sprache jedoch und wenn sie wirklich eine bessere Wahl hätten, würden sie es schaffen. Sie können dies selbst überprüfen, wenn Sie im Internet (Foren, soziale Netzwerke, Websites usw.) nach Meinungen von Personen zu JavaScript suchen. Es gibt viele lange Listen von WATs und WTFs zu JavaScript , die Sie für keine andere Sprache als PHP finden . Was wir sicher wissen, ist, dass das Web sehr beliebt ist, nicht JavaScript .

Die meisten wichtigen Sprachranking-Indizes geben nicht an, dass JavaScript die beliebteste Programmiersprache ist. Nicht einmal die zweite, dritte oder vierte Position. Laut IEEE Spectrum (American Journal) ist dies Platz 8 , PYPL 5 , TIOBE 7 , CodeEval 6 . Redmonk (ein Analyseunternehmen ) verwendet Github- Statistiken, die eine sehr hohe Anzahl für JavaScript anzeigen , gerade weil Webanwendungen, die in einer beliebigen Sprache geschrieben sind, mindestens JavaScript benötigen , um im Browser zu funktionieren. Es gibt keine Optionen. Daher kann Redmonk keine objektive Bewertung von JavaScript- Anomalien abgeben . Ansonsten ist Java die beliebteste Sprache.

Benutzerumfragen, beispielsweise von StackOverflow, enthalten ebenfalls eine ähnliche Verzerrung in der Auswahl. Wie können wir sagen, dass JavaScript eine beliebte Sprache ist, wenn wir keine andere Wahl haben, als sie alleine zu verwenden? (Zum Glück stehen uns Übersetzer zur Verfügung).

Wir sollten uns daran erinnern, dass dies für andere Bereiche gilt (z. B. Netzwerkserver, Spiele und Grafiken, Mobilgeräte, Desktops usw.). Die Auswahl einer Programmiersprache ist sehr unterschiedlich. Webanwendungen sind äußerst einzigartig. (Zumindest bis die Veröffentlichung von WebAssembly endlich erfolgt.)

Stimmt


Lassen Sie mich ganz klar sein: JavaScript ist keine gute Programmiersprache für die Softwareentwicklung . JavaScript wurde als leichte, frische Skriptsprache für einen Webbrowser entwickelt. Als solches wurde es flexibel und äußerst verzeihend gemacht, mit schwacher Eingabe. Es hat nicht einmal den richtigen Integer-Typ oder den richtigen Array-Typ. Welche Sprache ist das?

Schwache Eingabe, dies ist die Achillesferse der Programmiersprache, mit der Software entwickelt wird. Dies macht das Schreiben schneller, einfacher Skripte für einen Webbrowser zwar sehr einfach, funktioniert jedoch auch gegen Sie, wenn Sie große Anwendungen schreiben, die Sicherheit und Zuverlässigkeit erfordern. Aus diesem Grund sind die meisten Hauptsprachen normalerweise stark typisiert (nicht zu verwechseln mit statisch typisierten). Und es ist sehr, sehr wichtig!

Eine schwache Typisierung und der daraus resultierende willkürliche Zwang zeigen einen völligen Mangel an sprachlicher Disziplin. Dies erklärt den größten Teil der Liste der WATs und WTFs.

generiert von JavaScript. (Außerdem stellt der Autor Links zu Online-Ressourcen bereit, in denen eine Liste von JavaScript- Warzen bereitgestellt wird.)

Source: https://habr.com/ru/post/de445170/


All Articles