Das Problem mit Javascript ist nicht die Sprache selbst - es ist eine sehr gute, prototypische und dynamische Sprache. Wenn Sie von einem OO-Hintergrund kommen, gibt es ein bisschen von einer Lernkurve, aber es ist nicht die Sprache die Schuld.
Die meisten Leute nehmen an, dass Javascript wie Java ist, weil es eine ähnliche Syntax und einen ähnlichen Namen hat, aber eigentlich ist es viel mehr wie Lisp. Es ist eigentlich ziemlich gut für die DOM-Manipulation geeignet.
Das eigentliche Problem besteht darin, dass es vom Browser kompiliert wird, und das bedeutet, dass es je nach Client auf sehr unterschiedliche Weise funktioniert.
Nicht nur das eigentliche DOM ist je nach Browser unterschiedlich, sondern auch die Leistung und das Layout unterscheiden sich erheblich.
Bearbeiten nach Klarstellung in der Frage
Angenommen, mehrere interpretierte Sprachen würden unterstützt - Sie haben immer noch die gleichen Probleme. Die verschiedenen Browser wären immer noch fehlerhaft und hätten unterschiedliche DOMs.
Außerdem müsste für jede Sprache ein Dolmetscher in den Browser eingebaut oder irgendwie als Plug-in installiert werden (den man vor dem Aufruf der Seite überprüfen könnte). Es hat ewig gedauert, Javascript in Einklang zu bringen.
Sie können kompilierte Sprachen nicht auf dieselbe Weise verwenden - dann führen Sie eine ausführbare Datei ein, die nicht so einfach auf ihre Funktion hin überprüft werden kann. Viele Benutzer würden sich dafür entscheiden, es nicht laufen zu lassen.
OK, wie wäre es also mit einer Art Sandkasten für den kompilierten Code? Klingt für mich nach Java Applets. Oder ActionScript in Flash. Oder C# in Silverlight.
Wie wäre es mit einer Art IL-Norm? Das hat mehr Potenzial. Entwickeln Sie in welcher Sprache Sie wollen und kompilieren Sie es dann zu IL, die der Browser dann JITs.
Außer, dass Javascript irgendwie schon dieses IL ist - sehen Sie sich nur an GWT . Es ermöglicht Ihnen, Programme in Java zu schreiben, sie aber als HTML und JS zu verteilen.
Bearbeiten nach weiterer Klärung der Frage
Javascript ist bzw. war nicht die einzige Sprache, die von Browsern unterstützt wurde: In den dunklen Zeiten des Internet Explorers konnte man zwischen Javascript und VBScript wählen, um es im IE auszuführen. Technisch gesehen hat der IE nicht einmal Javascript ausgeführt - er hat JScript (hauptsächlich um zu vermeiden, dass Sun für das Wort java Oracle ist immer noch Eigentümer des Namens Javascript ).
Das Problem war, dass VBScript Eigentum von Microsoft war, aber auch, dass es einfach nicht sehr gut war. Während Javascript immer mehr Funktionen hinzufügte und in anderen Browsern (z. B. FireBug) erstklassige Debugging-Tools zur Verfügung standen, blieb VBScript auf den IE beschränkt und war so gut wie nicht debugging-fähig (Entwicklungswerkzeuge für IE4/5/6 gab es nicht). In der Zwischenzeit entwickelte sich VBScript auch zu einem ziemlich mächtigen Skripting-Tool im Betriebssystem, aber keine dieser Funktionen war im Browser verfügbar (und wenn doch, wurden sie zu massiven Sicherheitslücken).
Es gibt immer noch einige unternehmensinterne Anwendungen, die VBScript verwenden (und einige nutzen diese Sicherheitslücken), und sie verwenden immer noch IE7 (sie haben IE6 nur eingestellt, weil MS ihn endlich abgeschafft hat).
Es war ein Albtraum, Javascript auf den heutigen Stand zu bringen, und es hat 20 Jahre gedauert. Es gibt immer noch keine konsistente Unterstützung. Sprachfunktionen (die 1999 spezifiziert wurden) fehlen immer noch in einigen Browsern, und es werden viele Zusatzmodule benötigt.
Das Hinzufügen einer alternativen Sprache zum Dolmetschen in Browsern ist mit zwei großen Problemen verbunden:
-
Alle Browserhersteller dazu zu bringen, den neuen Sprachstandard zu implementieren - etwas, das sie für Javascript in 20 Jahren immer noch nicht geschafft haben.
-
Eine zweite Sprache verwässert möglicherweise die Unterstützung, die Sie bereits haben, so dass (zum Beispiel) IE eine zweitklassige Javascript-Unterstützung hat, aber (wieder) ein großartiges VBScript. Ich möchte wirklich nicht Code in verschiedenen Sprachen für verschiedene Browser schreiben.
Es sollte beachtet werden, dass Javascript noch nicht "fertig" ist - es wird immer noch weiterentwickelt, um in neuen Browsern besser zu werden. Die neueste Version ist den Implementierungen in den Browsern um Jahre voraus und sie arbeiten an der nächsten.
4 Stimmen
Google Dart, Script#, CoffeeScript, JSX (beide verschiedene Implementierungen von JS), JavaScript Harmony usw. Siehe diesen Link für mehr github.com/jashkenas/coffee-script/wiki/
2 Stimmen
"Warum nur Javascript? Auf der Serverseite (Ihrer bevorzugten OS-Plattform) können wir einen DOM-Baum mit jeder Sprache manipulieren, sogar mit Fortran. Warum unterstützt die Client-Seite (die Browser-Plattform) nur Javascript?" Auf der Server-Seite können Sie installieren, was immer Sie wollen, aber ich kann Ihre Kunden nicht zwingen, zusätzliche Plugins/Addons zu installieren, auch wenn wir so viele Bugs und Sicherheitsprobleme mit Javascript haben, raten Sie mal, wie viele Bugs und Sicherheitsprobleme wir haben würden, wenn wir ein paar mehr hinzufügen?
6 Stimmen
@Peter Ich kann nicht erkennen, ob Ihr Argument ernst gemeint ist oder ein Witz. Es ist trivial einfach für die Leute, Plattformen zu installieren, wenn sie wollen. Wenn eine Alternative zu Javascript verfügbar wäre und gut funktionieren würde, dann würden kommerzielle Anbieter von den Nutzern verlangen, dass sie das herunterladen, was für die Ausführung benötigt wird - so wie sie es schon immer mit Flash und eine Zeit lang auch mit Silverlight getan haben. Von all den Gründen, warum es auf der Client-Seite keine Alternativen geben könnte, ist die Schwierigkeit, sicherzustellen, dass die Nutzer über die eigene Plattform verfügen, keiner von ihnen von Bedeutung.
1 Stimmen
@ely: Und es ist gut ausgegangen? Blitzlicht? Java-Applets? Silverlight? Ich hatte noch nicht einmal eine Instanz von Silverlight installiert.
0 Stimmen
@SebastianMach Ja, diese Laufzeiten von Drittanbietern haben sehr gut funktioniert und zu einer großen Markteroberung und zu Gewinnen für ihre Mutterunternehmen geführt. Ich würde sogar sagen, dass DRM-Tech wahrscheinlich das erfolgreichste (aus Unternehmenssicht) Laufzeit-Framework ist, und seine Präsenz ist jetzt größer denn je, im Browser und anderswo. Eine andere Sache, die man bei dieser Argumentation bedenken sollte, ist, dass jeder eine Browser-Laufzeitumgebung zur Manipulation des DOM erstellen kann. Es hat sich einfach nicht gelohnt, dies mit einer anderen Sprachvariante zu tun. Javascript hat die Landnahme nur zufällig gewonnen.
0 Stimmen
@ely: Ja, die Eigentümer könnten durch ihre Laufzeiten bezahlt werden. Aber hat sich Flash für die kleinen Ziegel und Mörtel bezahlt gemacht? Diese Websites waren teuer, von Suchmaschinen nicht indizierbar und heutzutage oft genug einfach kaputt. Wenn selbst Nicht-IT-Leute in meinem sozialen Umfeld sich beschweren "igitt, Flash, ..., na ja, dann suche ich mir eben ein anderes", dann ist es wohl nicht die richtige Technik für den alten Laden.