JavaScript ist die beste Programmiersprache für Anfänger. So ist es oder nicht?

JavaScript ist trotz seiner vielen Mängel wohl die beste Programmiersprache für Anfänger und die beste Sprache, mit der Kinder basteln können.

Bild

Es war 2007. O'Reilly Media, ein ausgezeichneter Herausgeber technischer Bücher, hat mich mit einer Idee kontaktiert. Sie fragten mich, ob ich ein Buch über JavaScript schreiben möchte, das für absolute Programmieranfänger geeignet ist. "Warum um alles in der Welt?" Ich stellte sofort eine Gegenfrage.

Man konnte nicht sagen, dass JavaScript damals eine völlig nutzlose Sprache war. Aber es war nur eine, weit entfernt von der wichtigsten Zutat aus einer sorgfältig ausgewählten Reihe von Technologien, die für die Entwicklung von Websites benötigt werden. Ja, kleine Teile des JS-Codes können zum Überprüfen von Formularen oder zum Hervorheben von Schaltflächen verwendet werden, die sich über der Maus befinden. JavaScript war jedoch nur eine optionale Ergänzung der Funktionalität der Website. Wenn Sie es von der Seite entfernen, funktioniert alles fast genauso weiter wie bei seiner Verwendung.

JavaScript zog außerdem viel Gepäck mit sich, das von anderen Technologien präsentiert wurde. Es waren also Probleme mit der Browser-Inkompatibilität damit verbunden: Es war langsam, unsicher und völlig unzuverlässig. Ich war nicht daran interessiert, jemandem beizubringen, nutzlose Widgets für Webseiten in JavaScript zu erstellen. Diese Widgets schienen mir ebenso bedeutungslos wie animierte GIFs mit rotierendem Globus, die zu Beginn des Internets sehr beliebt waren.


Der naheliegendste Weg, JavaScript zu verwenden, war, wie ich damals naiv dachte, ungefähr so: Ein großes Server-Framework sollte den gesamten erforderlichen JS-Code generieren und in eine Seite einbetten, die speziell für Ihren Browser entwickelt wurde. Der vom Server generierte JavaScript-Code ist möglicherweise zu umständlich, wurde jedoch für eine bestimmte Version des Browsers entwickelt. Und da JS nur die Rolle eines Hilfsmechanismus spielte, würde alles so funktionieren, wie es sollte, selbst wenn der Besucher der Site JavaScript vollständig deaktiviert hätte.

Unnötig zu erwähnen, dass ich damals kein Buch über JavaScript geschrieben habe. Ich programmierte weiterhin serverseitig und schrieb über meine Lieblingstechnologien (normalerweise über C # und das .NET Framework). Viele Jahre sind vergangen.

Dann passierte etwas Seltsames.

JavaScript ist buchstäblich gestartet.

Ich denke immer noch nicht, dass JavaScript die Ehre verdient, die beste Programmiersprache der Welt zu sein. Auch wenn ich es ehrlich gesagt nicht für eine sehr gute Sprache halte. Aber in gewisser Weise habe ich meine Meinung geändert. Jetzt denke ich, dass JavaScript wahrscheinlich die beste Muttersprache für Kinder und Anfänger ist. Die Sache ist, dass JavaScript einen großen Vorteil gegenüber allen anderen Programmiersprachen hat.

Die erstaunliche Verbreitung von JavaScript ist der Hauptvorteil.


Einer der einzigartigen Vorteile von JavaScript ist seine Verbreitung.

Diese Sprache ist buchstäblich überall zu finden. Es wird auf allen Betriebssystemen, in allen Arten von Browsern sowie auf Desktop-Computern und Mobilgeräten unterstützt. Es ist auch sehr wichtig, dass JavaScript-Anwendungen funktionieren, ohne sie auf den Computern der Benutzer zu installieren. Tatsächlich ist es bereits schwierig, sich an die nicht allzu alten Zeiten zu erinnern, als Unternehmen, die Client-Server-Anwendungen in ihren internen Netzwerken bereitstellten, wochenlang mit den Problemen beim Einrichten dieser Anwendungen und mit unerwarteten Fehlern zu kämpfen hatten. Angesichts dieser Albträume werden Sie vielleicht die Attraktivität von JavaScript zu schätzen wissen.

JavaScript muss aufgrund seiner Verbreitung nicht die beste Programmiersprache sein. Er muss nur eine gute Sprache sein.

Ähnliche Mechanismen funktionieren beim Erlernen der Programmierung. Zunächst scheint das Problem der Sprachprävalenz für jemanden nicht besonders wichtig zu sein, dessen Ziel es ist, bewährte praktische Techniken für die Entwicklung von Programmen zu erlernen. Viele der gleichen Probleme sind jedoch für die professionelle Programmierung im Programmierunterricht relevant. Wenn Sie möchten, dass jemand das verwendet, was Sie erstellt haben, ist JavaScript die einzige Alternative.

Angenommen, Sie entwickeln eine wunderbare Anwendung, die durch Fragen an einen Benutzer sein Persönlichkeitsprofil bestimmt. Das Einrichten einer Entwicklungsumgebung ist recht einfach. Aber was passiert, wenn Sie Ihr Programm an einen Freund senden möchten? Muss er eine Laufzeitumgebung installieren oder dieselbe Entwicklungsumgebung wie Ihre neu erstellen? Müssen die Sicherheitseinstellungen seines Computers angepasst werden, bevor er Ihr Programm herunterladen und installieren kann? Vielleicht verwendet Ihr Freund ein Betriebssystem, das Ihr Programm einfach nicht unterstützt, oder eine mobile Plattform, auf der Sie, wenn Sie nicht auf Details eingehen, nur professionelle Anwendungen installieren können, die über iTunes oder Google Play verbreitet werden? Wenn Sie das Programm mit JavaScript entwickeln und es über eine einfache Website verteilen (mit GitHub können Sie beispielsweise solche Websites kostenlos erstellen), verschwinden alle diese Probleme einfach.

Und wenn unser zukünftiger Programmierer ein Kind ist, dann ist hier eine unbestreitbare Tatsache für Sie: Kinder und Browser sind sehr stark miteinander verbunden. Wenn Sie ein Kind beobachtet haben, das an einem Computer (nicht auf einem mobilen Gerät) arbeitet, haben Sie möglicherweise bemerkt, dass es mindestens 98% seiner Zeit mit einem Browser verbringt. Kinder spielen Browsergames, nutzen soziale Netzwerke und gehen mit Google Classroom und Google Docs zur Schule. Und wenn der Code, den Kinder schreiben, in ihrer nativen Browserwelt funktioniert, ist das völlig natürlich.

Wir diskutieren jetzt die Stärken von JavaScript. Aber wenn man von JavaScript als Programmiersprache für Anfänger spricht, kann man sich natürlich an seine Mängel erinnern.

JavaScript-Fehler


Was ist mit Javascript-Problemen? Diese Sprache hat schwerwiegende Mängel, ihre Macken, Widersprüche und Einschränkungen können für jemanden, der gerade erst anfängt, Programmieren zu lernen, äußerst unangenehm sein. Glücklicherweise gibt es moderne Lösungen, mit denen die meisten Mängel von JavaScript behoben werden können.

Lassen Sie uns vier Hauptbeschwerden über diese Sprache analysieren.

▍1. Das Problem beim Arbeiten mit Datentypen in JavaScript


Das wichtigste Konzept, das unerfahrene Programmierer sehr früh lernen, ist die Idee von Variablen, Containern, die Informationen speichern, während das Programm ausgeführt wird. Das Problem mit JavaScript ist, dass diese Sprache zu locker und unordentlich mit Variablen ist. Sie können damit etwas tun, das nicht richtig aussieht, und offensichtliche Inkonsistenzen ignorieren. Seine Nachlässigkeit kann kleinere Tippfehler in Katastrophen verwandeln, die den Betrieb von Programmen stören.

Hier ist ein Beispiel für einen Code, der zum Scheitern verurteilt ist:

var myNumber = 100; myNumber = myNumbr + 1; 

Hast du einen Fehler gesehen? In der zweiten Zeile werden zwei Variablen verwendet: die in der ersten Zeile deklarierte Variable myNumbr und eine Dummy-Variable myNumbr . Wir wissen, dass die zweite Variable das Ergebnis eines Tippfehlers ist, aber JavaScript benachrichtigt uns nur während der Programmausführung und gibt eine Fehlermeldung aus, die wie ReferenceError: myNumbr is not defined aussieht ReferenceError: myNumbr is not defined . Das gleiche passiert, wenn beim Schreiben des Namens einer Variablen myNumber und Kleinbuchstaben myNumber werden (z. B. eine Variable aus myNumber versehentlich in MyNumber ). Ein Problem, das jedoch anderer Natur ist, kann auftreten, wenn Sie in Anbetracht der Tatsache, dass eine bestimmte Variable eine Zahl speichert, eine weitere Zahl hinzufügen und diese Variable tatsächlich eine Zeichenfolge oder etwas anderes enthält. In diesem Fall meldet JavaScript keinen Fehler, aber das Ergebnis der Berechnungen unterscheidet sich vollständig von dem, was Sie vom Hinzufügen von zwei Zahlen erwarten würden. Jeder JavaScript-Entwickler kann sich an eine unangenehme Geschichte dieser Art erinnern, als Typverwirrung seltsame Fehler in Programmen verursachte.

Es ist schwer genug, das Programmieren zu lernen und sich gleichzeitig Sorgen darüber zu machen, wie die Programmiersprache, die Sie lernen, Ihnen schaden kann. Glücklicherweise können die Probleme des sicheren Arbeitens mit Datentypen mit Hilfe geeigneter Entwicklungstools leicht gelöst werden.

Einer meiner Lieblingscode-Editoren, der zum Erlernen der Programmierung und für den professionellen Gebrauch geeignet ist, ist Visual Studio Code . Es ist kostenlos, ressourcenschonend, sein Code ist offen und es kann bis ins Unendliche erweitert werden. Eine der bemerkenswertesten Funktionen ist die Unterstützung der Organisation der Überprüfung von JavaScript-Code auf häufig auftretende Probleme mit TypeScript. Sie können diese Prüfung aktivieren, indem Sie die entsprechende Konfigurationsdatei verwenden oder den folgenden Kommentar oben in die JavaScript-Datei einfügen:

 // @ts-check 

Hier ist ein Beispiel, in dem es zwei Fehler gibt, von denen aus Sicht von JavaScript keiner ein Fehler ist.


Probleme JavaScript berücksichtigt keine Fehler

Wenn Sie den Kommentar // @ts-check am Anfang dieser Datei hinzufügen, hebt VS Code Codezeilen hervor, die potenzielle Fehler enthalten.


Markierte Codezeilen

Wenn Sie mit der Maus über eine markierte Linie fahren, wird ein Popup-Fenster angezeigt, in dem das Problem erläutert wird.


Erklärung des Problems

Welche Schlussfolgerungen können daraus gezogen werden? Obwohl JavaScript viele schlechte Dinge toleriert, können Sie durch die Kombination von JavaScript mit einem Qualitätscode-Editor und den richtigen zusätzlichen Tools eine Entwicklungsumgebung erstellen, die der anderer moderner Programmiersprachen ähnelt. Infolgedessen ist die Entwicklung in JavaScript genauso bequem wie in anderen Sprachen, und natürlich verschwinden die anderen Vorteile nicht.

▍2. JavaScript unterstützt OOP nicht


Objektorientierte Programmierung (OOP) ist ein Ansatz zum Modellieren und Organisieren von Code. Wenn OOP-Techniken korrekt angewendet werden, helfen sie dem Programmierer, einfachen und gut organisierten Code zu erstellen. OOP erleichtert auch die Wiederverwendung wichtiger Programmfunktionen.

JavaScript ist bekannt für seine mangelnde Unterstützung für objektorientierte Programmierung. Tatsächlich haben JavaScript-Entwickler diesen Mangel traditionell umgangen, indem sie alle möglichen seltsamen Konstrukte verwendet haben. Diese Konstruktionen können für jemanden etwas bedeuten, der bereits OOP studiert hat (und sogar für jemanden, der nicht studiert hat, sondern einfach eine Vorlage in seinen Code kopiert hat und daran gewöhnt ist, damit zu arbeiten). Wenn Sie jedoch eine völlig neue Person in der Programmierung sind, ist die Verwendung derart zweifelhafter Konstruktionen, die grundlegende Programmierkonzepte implementieren, völlig falsch.

Glücklicherweise gibt es schöne Lösungen, die OOP-Unterstützung in JavaScript bieten. Meine Lieblingslösung dieser Art ist TypeScript , ein Open-Source-Projekt, das 2012 von Microsoft gestartet wurde. TypeScript ist eine etwas verbesserte Art von JavaScript, das OOP unterstützt (sowie viele andere nützliche Funktionen wie eine starke Typprüfung).

Jemand könnte sagen, dass es sich um JavaScript handelt und dass TypeScript dennoch kein JavaScript ist. Und tatsächlich ist es das auch. Aber hier ist ein interessantes Detail. Der Code wird in TypeScript geschrieben und dann vor seiner Ausführung in JavaScript konvertiert. Auf diese Weise können Sie das Beste aus der Welt von TypeScript und JavaScript genießen. Wenn Sie sich für TypeScript entscheiden, verfügen Sie über eine moderne Programmiersprache, in der Sie Ihren Code schreiben können, und über die umfassendste Unterstützung, die gewöhnliches JavaScript verwendet.

Und das Beste ist, dass TypeScript-Code automatisch in JavaScript konvertiert wird. Natürlich verwendet computergenerierter JavaScript-Code ziemlich umständliche Konstruktionen, um die von TypeScript implementierten Konzepte darin widerzuspiegeln, aber dies ändert nichts. Der Programmierer studiert die Konzepte von OOP und der fertige Code funktioniert korrekt und wird problemlos mit modernen Computern verarbeitet.

Glaubst du nicht? Denken Sie dann an die Tatsache, dass einige der modernsten innovativen Desktop-Anwendungen eine Kombination aus TypeScript und Electron verwenden , ein Framework, mit dem Sie JavaScript-Code außerhalb eines herkömmlichen Browsers ausführen können (obwohl zu beachten ist, dass Electron Browserfunktionen verwendet). Eines der beeindruckendsten Beispiele für eine solche Anwendung ist der VS-Code-Editor. Es stellt sich heraus, dass genau das Tool, mit dem es sehr bequem ist, JavaScript-Code zu schreiben, selbst in JavaScript geschrieben ist. Genauer gesagt wird VS-Code in TypeScript geschrieben, aber in dieser Sprache geschriebener Code wird weiterhin in JavaScript-Code konvertiert.

Wenn Sie Programmieren lernen, ist es natürlich nicht erforderlich, TypeScript zu verwenden, und neue JavaScript-Programmierer können, wenn sie sich dazu entschließen, viel tun, ohne die Prinzipien von OOP zu studieren. Dies ist in der Tat eine Frage der Wahl. In jedem Fall kann festgestellt werden, dass JavaScript eine sich dynamisch entwickelnde Sprache ist, und es werden schrittweise Funktionen hinzugefügt, die es näher an all das Wertvolle bringen, das TypeScript hat.

▍3. Around ist voll von minderwertigem JavaScript-Code


Was soll ich sagen Code von schlechter Qualität kann in jeder Programmiersprache geschrieben werden. Schon mal was von Visual Basic gehört ?

▍4. Die JavaScript-Entwicklung erfordert zusätzliche Bibliotheken und Frameworks


Um Zugriff auf ein breiteres Spektrum an Funktionen als in der Sprache zu erhalten (und das Rad nicht neu zu erfinden), müssen JavaScript-Programmierer Bibliotheken und Frameworks von Drittanbietern verwenden. Die Auswahl der richtigen Zutaten für ein Projekt ist nicht so einfach, wie es auf den ersten Blick erscheinen mag. Insbesondere müssen die ausgewählten zusätzlichen Tools die ihnen zugewiesenen Aufgaben korrekt lösen. Der Programmierer muss darauf vertrauen können, dass er die Unterstützung seiner Entwickler noch lange nutzen wird, damit sie nicht miteinander in Konflikt stehen Freund.

Entwickler, die andere Sprachen verwenden, sind ebenfalls mit Problemen konfrontiert. Es ist jedoch zu beachten, dass nur wenige Sprachen so stark unter diesem Problem leiden wie JavaScript. Um ein ernsthafter Programmierer zu werden, der für alle JavaScript-Welten offen ist, müssen Sie Ihre eigenen Entwicklungswerkzeuge zusammenstellen. Gleichzeitig ist jede der möglichen Auswahlmöglichkeiten so komplex und vielfältig, dass Sie nur verstehen können, ob eine Bibliothek für Sie geeignet ist, wenn Sie sie sehr gut studieren (und wenn Sie sie studieren, kann sich herausstellen, dass sie bereits ihre Relevanz durch verliert Ihr Platz wird etwas Neues, vielleicht Attraktives sein - für kurze Zeit allgemeines Interesse).

Egal wie traurig das alles sein mag, diese Probleme betreffen Anfänger in der Tat nicht. Wenn jemand das Programmieren mit JavaScript lernt, ist es am besten, sich von Frameworks und Bibliotheken fernzuhalten, unabhängig davon, ob es sich um etwas weithin Bekanntes wie jQuery , Angular , React oder Vue handelt oder um etwas, das zu einem Zeitpunkt erfunden wurde Dieser Satz wurde geschrieben oder der zweite, als dieser Artikel veröffentlicht wurde. Natürlich möchte ein Anfänger, der die grundlegenden Dinge gut beherrscht, wahrscheinlich mindestens eines der beliebten Zusatzwerkzeuge kennenlernen. Aber das ist eine ganz andere Geschichte.

Zusammenfassung


Tatsächlich ist die Wahl der ersten Programmiersprache eine Frage, auf die es unmöglich ist, die absolut richtige Antwort zu finden. Der Autor dieses Materials teilte hier nur seine eigene Meinung zu diesem Thema mit und gab Beispiele, die ihm aufgrund seiner Erfahrung und Vorlieben nahe stehen. Aber auf jeden Fall fangen alle Programmierer irgendwo an, und egal wie schwierig die Wahl der ersten Sprache wäre, diese Wahl muss noch getroffen werden.

Liebe Leser! Stimmen Sie zu, dass JavaScript unter modernen Bedingungen die beste Sprache zum Erlernen der Programmierung ist? Wenn Sie nicht einverstanden sind, kennen Sie vielleicht eine Sprache, die für diesen Zweck besser geeignet ist?

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


All Articles