Warum wird JavaScript für die klassische Anwendungsentwicklung (kompilierte Software) nicht verwendet? [geschlossen]


14

Während meiner jahrelangen Webentwicklung mit JavaScript bin ich zu dem Schluss gekommen, dass es sich um eine unglaublich leistungsstarke Sprache handelt, mit der Sie erstaunliche Dinge tun können.

Es bietet eine Reihe von Funktionen, wie zum Beispiel:

  • Dynamische Eingabe
  • Erstklassige Funktionen
  • Verschachtelte Funktionen
  • Verschlüsse
  • Fungiert als Methoden
  • Fungiert als Objektkonstruktor
  • Prototyp-basiert
  • Objektbasiert (fast alles ist ein Objekt)
  • Regex
  • Array- und Objektliterale

Es scheint mir, dass fast alles mit dieser Art von Sprache erreicht werden kann, Sie können auch OO-Programmierung emulieren, da es große Freiheit und viele verschiedene Codierungsstile bietet.

Mit mehr Software-orientierten benutzerdefinierten Funktionen (E / A, Dateisystem, Eingabegeräte usw.) wird es meiner Meinung nach großartig sein, Anwendungen mit zu entwickeln.

Soweit ich weiß, wird es jedoch nur in der Webentwicklung oder in vorhandenen Softwareprogrammen als Skriptsprache verwendet.

Vielleicht wurde es dank der V8-Engine erst kürzlich mehr für andere Aufgaben verwendet (siehe beispielsweise node.js).

Warum ist es bis jetzt nur für die Webentwicklung gedacht? Was hält es von der Softwareentwicklung fern?


8
Wenn Web-Entwicklung kein (besonderer) Fall von Software-Entwicklung ist, was genau ist es dann? ...
Péter Török

@ Péter Török: Ich denke, du verstehst, worum es geht. Was ich meine ist, dass es bis jetzt nur als Skriptsprache von Software verwendet wurde, um Funktionen zu verbessern. Es wurde noch nie verwendet, um eine Softwareanwendung für ein Betriebssystem zu programmieren.
Jose Faeti

4
Ich sehe dynamisches Tippen als großen Nachteil, und ich möchte auch Nullwerte loswerden.
Jonas

2
Sie meinen "klassische Anwendungsentwicklung", nicht "Softwareentwicklung", oder? Ändern Sie besser Ihre Überschrift entsprechend.
Doc Brown

2
@ JoseFaeti für die Aufzeichnung Windows 8 können Sie einige Entwicklung in HTML5 & JS
Raynos

Antworten:


14

Kürzlich hat node.js die serverseitige Entwicklung vorangebracht. So ist es jetzt möglich, JavaScript für die Entwicklung zu schreiben.

Das ist richtig. In der Geschichte wurde es nicht als Entwicklungssprache verwendet. Aber selbst das Skripting in der Client-Umgebung (User Agents) ist eine Art von Entwicklung. Ist es nicht

Der Hauptgrund, den ich in vielen Weblogs gehört und gelesen habe, ist, dass die Menschen bis in die letzten Jahre nichts von seiner Kraft und Einzigartigkeit wussten . Möglicherweise haben andere Sprachen ihre Arbeit gerade gut genug gemacht, und niemand hat jemals daran gedacht, etwas parallel zu machen.


Muss so sein, und ich sehe aus, als ob sich gerade etwas bewegt :)
Jose Faeti

15

Von hier :

Beachten Sie, dass ich alle meine Argumente auf reale Anwendungsfälle stütze. Gegenargumente, die nicht mit einem Anwendungsbeispiel in einer echten, vollständigen, interessanten, nützlichen Anwendung belegt werden können, sind ungültig. Ich habe die kleinen "Sprachdemos" gesehen, die alle anderen haben. Ich habe die Blog-Posts gesehen, die beschreiben, wie Prototypen und dynamisches Tippen ein triviales kleines Beispiel ein paar Zeilen kürzer machen als in C #, aber diese sind einfach nicht relevant zu den Problemen, die beim Schreiben von echtem Code auftreten, anstatt von Mikrodemos und Spielzeug. Also hier sind meine Probleme mit JS:

a) Magie 'das'. Dies ist dies, außer wenn dies das ist. JavaScript zwingt Sie dazu, überall anonyme Funktionen zu verwenden, außer dass sie immer den richtigen Kontext für die 'this'-Variable verlieren, sodass Sie am Ende überall doof Code wie "var _this = this" haben und diesen dann verwenden in Ihren Rückrufen oder anderen Funktionen. An manchen Tagen schwöre ich, dass die Anzahl der Funktionen, die ich schreiben kann und die kein umbenanntes "dies" verwenden, tatsächlich kleiner ist als die Anzahl, die dies tut.

b) 1 + "1" - 1 = 10. Auch "1" + 0 = "10". Ja, dies hat tatsächlich zu Fehlern in unseren Anwendungen geführt, bei denen Daten, von denen erwartet wird, dass sie eine Zahl sind, aufgrund eines Fehlers in einer anderen Anwendung aus einer JSON-Datei als Zeichenfolge geladen wurden und das Ergebnis nicht gut war. Alle unsere Ladecodes mussten aktualisiert werden, um überall eine Menge Typkonvertierungen hinzuzufügen. Wenn ich etwas brauche, um eine Zahl zu sein, möchte ich unbedingt, dass es eine Zahl ist, keine Zeichenfolge, kein Objekt, keine Null oder irgendetwas anderes. Lua, das JavaScript in den meisten Punkten sehr ähnlich ist, hat dieses Problem behoben, indem es nicht verzögert genug war, um denselben Operator für das Hinzufügen und die Verkettung von Zeichenfolgen zu verwenden.

c) Standardmäßig globale Variablen. Selbst wenn Sie das Argument annehmen, dass die dynamische Eingabe nur "einfacher" ist, weil Sie nicht über Variablendeklarationen nachdenken müssen, wirft JavaScript dieses Argument aus dem Fenster, indem Sie "var" überall vor neue Bezeichner setzen . Und dann nervt es dich, wenn du es vergisst.

d) Prototypen statt Klassen. Es gibt nur sehr wenige realistische JavaScript-Anwendungen in großem Maßstab, die kein eigenes Klassensystem einbinden, um die inhärente Nutzlosigkeit von Prototypen in großen Anwendungsarchitekturen zu umgehen. Dieselben Apps nutzen Prototypen nur minimal, um die JavaScript-Basistypen zu erweitern, und dies nur, weil JS so schlecht entworfen wurde, dass selbst den beiden interessanten integrierten Typen die Hälfte der Funktionen fehlt, die Sie von ihnen erwarten würden.

e) Unfähigkeit, Typen mit vorbeigehenden Werten zu erstellen. Abgesehen von C ++ / D ist dies ein häufiges Problem in nahezu jeder Sprache. Wer JavaScript zum Schreiben von WebGL-Apps verwendet, sollte sich alle linearen Algebra-Bibliotheken für JavaScript ansehen. In 3D-Apps verwenden Sie Vektoren fast häufiger als Skalare. Stellen Sie sich vor, jede Ganzzahl in Ihrer App würde als Referenz übergeben, sodass "a = 1; b = a; b ++" sowohl a als auch b gleich 2 macht. Jeder kleine Vektor mit drei Komponenten ist ein vollständiges vollständiges Objekt. Sie werden als Referenz weitergegeben (die Quelle von fast der Hälfte der Fehler in unserem WebGL-Spiel). Sie sind in großer Menge vorhanden, werden auf Haufen verteilt und werden durch Müll eingesammelt. Dadurch wird der GC stark unter Druck gesetzt, was selbst in einfachen WebGL-Spielen zu GC-Pausen führen kann und muss. es sei denn, der Entwickler springt durch lächerlich komplizierte Rahmen, um das Erstellen neuer Vektoren an allen Stellen zu vermeiden, an denen es logisch ist, neue Vektoren zu erstellen. Sie können den Operator nicht überladen, daher haben Sie sehr große und hässliche Ausdrücke, um grundlegende Operationen auszuführen. Der Zugriff auf einzelne Komponenten ist langsam. Die Objekte sind nicht nativ gepackt und daher unglaublich langsam in einen Vertex-Puffer zu verschieben, es sei denn, Sie implementieren sie als Float32Array-Instanzen, was die Optimierer von V8 und SpiderMonkey derzeit durcheinander bringt. Habe ich erwähnt, dass sie als Referenz übergeben wurden? Der Zugriff auf einzelne Komponenten ist langsam. Die Objekte sind nicht nativ gepackt und daher unglaublich langsam in einen Vertex-Puffer zu verschieben, es sei denn, Sie implementieren sie als Float32Array-Instanzen, was die Optimierer von V8 und SpiderMonkey derzeit durcheinander bringt. Habe ich erwähnt, dass sie als Referenz übergeben wurden? Der Zugriff auf einzelne Komponenten ist langsam. Die Objekte sind nicht nativ gepackt und daher unglaublich langsam in einen Vertex-Puffer zu verschieben, es sei denn, Sie implementieren sie als Float32Array-Instanzen, was die Optimierer von V8 und SpiderMonkey derzeit durcheinander bringt. Habe ich erwähnt, dass sie als Referenz übergeben wurden?

f) Keine eingebauten Funktionen enthalten oder erfordern. Ernsthaft noch. Es gibt Bibliotheken von Drittanbietern, aber fast alle haben die eine oder andere Art von Fehler, von denen nicht zuletzt ein verwirrendes Caching-Problem in mindestens Chrome vorliegt, das die eigentliche Entwicklung zu einem Ärgernis macht.

g) Dynamische Eingabe. Ja, ich bin bereit, dieses Argument zu beginnen. Sie bemerken es am schnellsten, wenn Sie aufhören, kleine Web-Apps oder Webseiten zu schreiben, und Sie beginnen, große Apps zu schreiben, in denen Daten vorhanden sind, die länger als ein einziger Mausklick oder ein Anforderungs- / Antwortzyklus bestehen: Fügen Sie einem Objekt die falsche Art hinzu Array, um es später zu verarbeiten und einen Absturz von einer fehlenden Methode oder einem fehlenden Member in einem völlig anderen Code als dem, in dem sich der eigentliche Fehler befand, zu erhalten. Lustige Zeiten. Ja, Java lässt statisches Tippen böse erscheinen. Nein, Java / C # / C ++ ist nicht die einzige Möglichkeit, statisch zu tippen. Typinferenz, implizite Schnittstellenbindung usw. bieten Ihnen alle Vorteile des dynamischen Tippens ohne alle Fehler, die Sie mit wenigen Tastenanschlägen erzielen können. Die zweitbeliebteste Web-Sprache - ActionScript 3 - ist statisch geschrieben, obwohl sie ansonsten mit JS / ECMAScript identisch ist. Abgesehen davon stürzen die Python-Apps auf meinem Fedora-Desktop mehr ab als die C / C ++ - Apps (eigentlich stürzt keine der C / C ++ - Apps auf meinem Desktop ab, wenn ich darüber nachdenke). Fehlende Mitgliedsausnahmen == So viel einfacher, Apps zu entwickeln und zu warten, oder?

h) Geschwindigkeit. Ja, es gab einige lächerlich große Anstrengungen von einer großen Anzahl von super-bösen Entwicklern, die in die Sprachlaufzeiten gesteckt wurden, um JS fast halb so schnell zu machen wie einen Low-Grade-C-Compiler, den ein einzelner College-Junior in wenigen schreiben konnte Monate. Und LuaJIT ist in Bezug auf grundlegende Sprachbeschränkungen mit JS identisch, schafft es aber trotzdem, eine bessere Leistung als jede JavaScript-Implementierung zu erbringen. Leute, die nicht verstehen, was alle JS-Optimierungen in V8 oder so tatsächlich tunIch würde gerne behaupten, der JS kann erstaunliche Dinge in Bezug auf die Geschwindigkeit tun, aber die Realität ist, dass all diese Optimierungen im Grunde genommen nur "sehr sehr bemüht sind, den Code zu analysieren, um Typen für Variablen herauszufinden und ihn dann wie einen leicht verzögerten statisch getippten Code zu kompilieren Der Compiler der Sprache würde es tun. " Oh, und es gibt eine Ablaufverfolgung, aber dann funktioniert die Ablaufverfolgung auch für statisch typisierte Sprachen (und funktioniert besser, weil im generierten Maschinencode keine Typschutzeinrichtungen erforderlich sind). Tatsächlich wurde keine einzige dieser Whizbang-Optimierungen von oder für JS erfunden. Die meisten stammen aus Forschungs-JVMs (Java ist böse!) oder klassischen OOP-Sprachen (Prototypen sind fantastisch!).

i) Kein IntelliSense möglich. Möchten Sie sehen, welche Methoden für die Variable existieren, die Sie in Zeile 187 von foo.js in Ihrem Texteditor haben? Schade. Gehen Sie den Code durch, bis Sie herausgefunden haben, wo er initialisiert wurde, und gehen Sie dann den Code durch, um herauszufinden, welchen Prototyp er enthält. Und dann hoffe ich, dass es keinen Code gibt, der den Prototypen dynamisch hinter Ihrem Rücken verändert. Führen Sie es einfach in einem Browser aus und legen Sie Haltepunkte fest, da es für eine Codebasis, die größer ist als die toy_web_app.html-Sites, die JavaScript-Apologeten verwenden, grundsätzlich unmöglich ist, nützliche Informationen über den Wert auf andere Weise zu erhalten, um die Benutzerfreundlichkeit und Einfachheit von JavaScript zu verherrlichen. Einige Code-Editoren sind sehr bemüht, bessere Ergebnisse zu erzielen, und in den wirklich einfachen Fällen gelingt dies beinahe ein bisschen, manchmal sogar einmal.

j) Kein Vorteil. JavaScript ist nicht einmal etwas Besonderes im Vergleich zu anderen dynamisch getippten Sprachen. Es ist überhaupt nicht in der Lage, irgendetwas Interessantes zu tun, was nicht auch von Lua, Python, Ruby usw. gemacht werden kann. Keine der JS-Implementierungen ist schneller als LuaJIT oder PyPy oder verschiedene andere fortgeschrittene JIT-Implementierungen anderer dynamischer Sprachen. JS hat im Vergleich zu anderen gängigen Sprachen keine Vorteile. Oh, außer es läuft nativ in einem Webbrowser ohne Plugin. Welches ist der einzige Grund auf der Welt, warum es so beliebt ist. Tatsächlich ist es der einzige Grund, warum es ein Ereignis gibt. Wenn jemand vor 10 Jahren gedacht hätte: "Zum Teufel, lassen Sie uns eine vorhandene, gut gestaltete und etablierte Sprache in unseren Browser ziehen und die anderen Jungs dazu bringen, dasselbe zu tun, anstatt dass jeder diesen albernen kleinen Hackjob benutzt, den NetScape erfunden hat "Das Web würde heute viel anders (besser) aussehen. Stellen Sie sich die Zukunft vor, wenn Chrome Python als unterstützte Sprache in Chrome ablegt. Oder stellen Sie sich Folgendes vor: Google legt C / C ++ in Chrome als unterstützte Sprache ab (http://code.google.com/p/nativeclient/).


Dies ist ein wirklich interessanter Beitrag. Ich wäre gespannt auf seine Anwendungsfälle, die die Grundlage seiner Argumente bilden. Ich bin mit seinen Punkten nicht uneinig, aber ich entwickle seit fast 10 Jahren JS-Anwendungen in Unternehmensgröße und habe einige der Dinge, die er erwähnt hat, nicht erlebt (insbesondere seinen ersten Punkt über "magic this"). Nach meiner eigenen Erfahrung werden Argumente gegen Javascript wie die in diesem Beitrag von Leuten mit einem starken traditionellen Hintergrund vorgebracht. In diesem Fall würde ich seine Verwirrung verstehen.
Herr JavaScript

Es ist ziemlich interessant zu sehen, dass die Antwort im Jahr 2016 durch die Entwicklung der Sprache völlig überholt ist.
Stephan Bijzitter

@Herr. JavaScript Hallo. Kennen Sie eine Reihe von Tutorials, die sich auf die Lösung von Beispielen für Probleme in der Praxis konzentrieren, anstatt nur JavaScript und seine Funktionen und Mechanismen zu untersuchen? Ich habe kein Glück mit Keyword-Suchen. Anstatt zum Beispiel einen solch detaillierten Tutorial- Link und seine Millionen von Beispielen und Funktionen durchzugehen, finde ich dort ein Repository mit kleinen Tutorials, in denen erklärt wird, wie man eine GUI-Anwendung erstellt, um ein Versicherungssystem oder Ärzte, eine Schule oder einen betrieblichen Teil von zu verwalten ein Supermarkt? Vielen Dank
Joshua

12

Warum?

JavaScript ist die am meisten missverstandene Sprache

Wir waren im dunklen Zeitalter und sind immer noch der allgemeinen Entwicklergemeinschaft einverstanden, dass JavaScript eine leistungsstarke und vielseitige Sprache ist. Es ist einfach kein Mainstream.

Der einzige Fortschritt der letzten Zeit ist, dass node.js zu einem Modewort geworden ist und die Leute anfangen zu akzeptieren, dass Javascript andere Verwendungszwecke hat.

Ich habe die JS & HTML5-Entwicklung für Windows 8 im Auge behalten und die Reaktion der .NET-Community lautete "Lieber Gott, warum?".

Es ist einfach eine Tatsache, dass die meisten Nicht-Webentwickler JavaScript immer noch als die Spielzeugsprache ansehen, die Sie verwenden, um in Ihren Browsern über Menüs zu scrollen.

Allerdings stimmt JavaScript nicht mit "modernen Entwicklungspraktiken" überein. Für mich ist JavaScript immer noch eine Hacksprache, die ich mit vim knacke und das Internet ist meine Dokumentation. Es gibt keine IDE, es gibt keine Entwicklungstools, es gibt keine automatische Vervollständigung oder "Intellisense", es gibt keine GUIs zum Klicken und Ziehen.

In der Welt der Java- und .NET-Entwickler sind sie an ihre GUIs und IDEs gebunden und könnten nicht in vim programmieren.


1
Ich stimme Ihnen zu, außer "Es gibt keine IDE, es gibt keine Entwicklungstools, es gibt keine automatische Vervollständigung oder" Intellisense ", es gibt keine GUIs zum Klicken und Ziehen." Tatsächlich kann man all das mit vielen verschiedenen IDE-Lösungen erreichen. Ich verwende zum Beispiel Visual Studio und es ist einfach großartig.
Jose Faeti

1
@JoseFaeti sorry, Visual Studio ist keine Javascript IDE. Ich bin schneller in vim als in VS2010. Dies bedeutet, dass VS2010 eine undichte JS-IDE ist.
Raynos

2
@Raynos, "Ich bin in vim schneller als in VS2010. Dies bedeutet, dass VS2010 eine undichte JS-IDE ist." - oder vielleicht heißt das einfach, dass du VS nicht so gut kennst wie vim.
Péter Török

2
Absolut nicht, aber ich werde kein RIA-Frontend in Silverlight erstellen, weil ich Resharper und LINQ oder die ASP.Net MVC-App mit einer dünnen jQuery-Schicht liebe, da es wieder .Net-freundlich ist, wenn es auf der Client-Seite reichhaltige Javascript-Sprachen gibt das sind besser für den Job geeignet.
Sa93

1
Ich möchte nur dem Chor der Leute meine Stimme hinzufügen, die behaupten, dass es JavaScript-IDEs gibt. Es ist ehrlich gesagt dumm, etwas anderes zu behaupten. Sie mögen die IDEs vielleicht nicht und sie sind vielleicht nicht perfekt, aber sie sind immer noch IDEs. Oder habe ich mir bei der Arbeit mit JS die Intellisense- und Code-Vervollständigung von VS vorgestellt?
Ian Newson

10

Ihre Liste enthält keine Informationen zum Schreiben von Dateien auf das System, was ein wesentlicher Bestandteil der Softwareentwicklung ist.

Die Leute würden nicht daran denken, JS zum Erstellen einer Anwendung zu verwenden, da dies die De-facto-Skriptsprache für das Web ist und Sie immer das richtige Tool für den Job verwenden würden.

Warum sollten Sie mehrere Hektar JS schreiben, um eine Datei zu schreiben, wenn dies in Java / .NET / C / C ++ eine triviale Operation ist?

Wie andere bereits erwähnt haben, haben node.js und seine Bibliotheken serverseitige Operationen trivial gemacht, und mit zunehmender Beliebtheit von node.js wird das Erlernen dieser Funktion zu einer Fähigkeit für einen Lebenslauf, da Sie in der Lage sind, diese zu verwalten, zu erweitern und zu erstellen Anwendungen damit.


1
+1 völlig vergessen, wie wichtig eine Stdio-Bibliothek ist.
Raynos

1
Was das Dateisystem betrifft, so haben wir jetzt lokale Speicher-APIs, obwohl Sie sich aus Gründen der Langlebigkeit nicht darauf verlassen würden. Das Schreiben in ein Dateisystem muss jedoch nicht unbedingt direkt erfolgen. Möglicherweise ruft Ihr Javascript einen Server auf, der (in LOLCode oder C oder JS selbst geschrieben) in eine bestimmte Art von Speicher schreibt.
Sa93

1
Auf der Serverseite. Die NodeJS-Datei-API ist nur eine Trivialität wie C etc ... <- wenn Sie die E / A in C korrekt ausführen (nicht blockierend). Ein Ajax-Aufruf mit einem normalen Wrapper kann auch 2-3 Zeilen umfassen. MyLib.Ajax.post ('/ persistence / Something', {data: blahObj})
sa93

@ sa93 Bitte verwechseln Sie die Host-Umgebungen des Browsers nicht mit JavaScript. localStorage ist eine Host-API in Browsern. Es ist nicht in der ES5-Spezifikation definiert.
Raynos

1
@reinierpost Writing files to the file system has been replaced with HTTP POST.Nicht, wenn Sie die APIs schreiben, die die Posts verarbeiten.
StuperUser

5

Die meisten gebräuchlichen Sprachen sind leistungsfähiger und besser gestaltet als JavaScript. Alle von Ihnen erwähnten Funktionen werden von anderen dynamischen Sprachen wie Python oder Ruby unterstützt, die insgesamt besser gestaltet sind. Einige der Funktionen, die Sie erwähnen, sind ohnehin nicht unbedingt wünschenswert - viele würden statisches Tippen mit Typinferenz dem dynamischen Tippen vorziehen, wenn Sie die Wahl haben.

Ich sage das nicht, um JavaScript aufzulösen. Ich arbeite sehr gerne mit JS, wenn ich Web entwickle. Aber objektiv gesehen hat JS eine Reihe von Nachteilen im Vergleich zu anderen Sprachen:

  • Zahlreiche unfixierbare Mängel. Bei der anfänglichen Entwicklung von JS wurden viele Fehler gemacht. Sie müssen hier nicht aufgezählt werden, sie sind gut dokumentiert. Alle Sprachen haben Fehler im ursprünglichen Design, die später behoben werden. Der Unterschied zu JS besteht darin, dass die Sprache viel zu schnell entwickelt und veröffentlicht wurde und diese Fehler aufgrund der erforderlichen Abwärtskompatibilität in Browsern niemals behoben werden können.
  • Extrem langsamer Prozess zur Einführung von Verbesserungen und neuen Funktionen. Da müssen sich alle Browser-Anbieter einig sein und könnten auch aus verschiedenen politischen Gründen die Entwicklung der Sprache bremsen wollen. Schauen Sie sich C # an, das tatsächlich eine neuere Sprache als JS ist. Als C # eingeführt wurde, hatte es nicht zB. Closures oder höherwertige Funktionen wie JS, aber nach mehreren Iterationen hat es jetzt all das und darüber hinaus Funktionen wie Linq und asynchrone Syntax, um die JavaScript-Entwickler nur beneiden können.
  • Verarmte Standardbibliothek. Moderne Sprachen wie Python, Ruby oder alles, was auf Java oder .net basiert, verfügen über umfangreiche Standardbibliotheken für fast alles, was Sie benötigen könnten. In JS können Sie eine Datei nicht einmal ohne Bibliotheken von Drittanbietern lesen. Sie erwähnen Regex, aber alle modernen Sprachen haben das und tausend Dinge mehr.
  • Andere Sprachen haben die wenigen Vorteile von JavaScript aufgeholt. Features wie Closures und erstklassige Funktionen waren mächtig im Vergleich zu klobigen statischen Sprachen wie Java vor zehn Jahren, aber dynamische und funktionale Sprachen hatten diese Features schon lange, und selbst Java, eine ziemlich konservative Sprache, hat dies in Java 8 hinzugefügt.

Die einzige Funktion, die JavaScript wirklich von anderen modernen Sprachen unterscheidet, ist die prototypbasierte Vererbung (im Gegensatz zur klassenbasierten Vererbung). Der Vorteil dieses Modells ist zweifelhaft, da jeder es sowieso nur zum Emulieren der klassenbasierten Vererbung verwendet.

Es gibt einfach keinen Grund, JavaScript zu wählen, wenn Sie die Möglichkeit haben, eine andere moderne Sprache zu wählen. Der einzige Grund wäre, wenn es die einzige Sprache wäre, die du kennst.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.