Die Präferenz für dynamisches und statisches Tippen ist weitgehend Geschmackssache, und verschiedene Menschen finden sie in verschiedenen Situationen mehr oder weniger geeignet.
Meine Frage ist, wäre es technisch möglich, eine statisch typisierte Alternative zu JavaScript für die clientseitige Webseitenerweiterung usw. zu haben?
Antworten:
Es gibt sicherlich keinen technischen Grund, warum so etwas nicht existieren könnte. Es gibt nichts besonders über clientseitigen Code , dass Mandate die Verwendung von dynamisch typisierten Sprachen.
quelle
Da es sehr unwahrscheinlich ist, dass eine andere Sprache breite Akzeptanz findet, ist es am besten, eine statisch typisierte Version von JavaScript (dh eine Sprache in der Nähe von Java) und einen Präprozessor zu erstellen, der diese in normales JavaScript konvertiert.
Zum Beispiel sieht Ihr Skript so aus:
und der Präprozessor überprüft, ob jede Variable, Funktion, jedes Objekt usw. entsprechend ihrem Typ korrekt verwendet wird, und ändert das Skript in
was jeder Browser handhaben kann.
quelle
Sicher. Das Google Web Toolkit kompiliert statisch typisiertes Java in JavaScript ... Denken Sie nur daran: die ganze Schönheit und Flexibilität von Java mit der ganzen Leistung von maschinengeneriertem JavaScript!
Im Ernst, Sie könnten dies für alle Arten von Sprachen tun, und viele haben es versucht (es gibt oder gab auch Compiler für C und C #). Ob das Endergebnis praktisch ist oder nicht, hängt davon ab, was Sie erreichen möchten: Google sucht nach einer konsistenten Plattform für die Entwicklung sehr großer clientseitiger Apps und verfügt über eine eigene JavaScript-Engine zum Booten. Sie werden vielleicht feststellen, dass die Übernahme eines solchen Tieres für Hover-Effekte und den seltsamen AJAX-Aufruf weitaus mehr Schmerzen verursacht, als nur zu lernen, mit ein bisschen untypisiertem Code zu leben ...
quelle
Die meisten Vorteile statisch typisierter Sprachen werden beim Kompilieren realisiert. Wenn die Sprache auf dem Client interpretiert werden soll, gehen viele dieser Vorteile verloren. Wenn Sie sie auf dem Server kompilieren, müssen Sie herausfinden, wie Sie sie laden und auf dem Client ausführen können (denken Sie an ActiveX-Steuerelemente). Sie könnten einen hybriden Ansatz wählen (zu einer Zwischenform mit Token kompilieren), aber dann kehren Sie im Grunde zu Java-Applets zurück.
quelle
Es existiert bereits.
ActionScript 3 (die Skriptsprache hinter Flash und Flex) ist ein Dialekt von ECMAScript, der starke Typen implementiert, und Sie können ihn mehr oder weniger clientseitig wie JavaScript verwenden (der Unterschied besteht darin, dass AS3 ein Flash-Plugin benötigt, und wird zusammengestellt). Ich persönlich versuche heutzutage, mich davon fernzuhalten, aber wenn Sie im "statischen" Lager sind, versuchen Sie es.
Damit ist die Hauptfrage beantwortet, und jetzt, da wir diese haben, lautet Ihre sekundäre Frage "Ist Flash praktisch?". Die Antwort lautet "Ja", mit ein paar "Wenn" und "Aber"
quelle
Theoretisch können Sie beliebige Skripte auf eine gewünschte Seite kleben. Das
<script>
Tag hat schließlich eintype
Attribut.Das einzige Hindernis besteht darin, genügend Marktanteile in Bezug auf die Implementierung in verschiedenen Browsern zu gewinnen, damit sich die Verwendung lohnt.
Also ja, es ist zu diesem Zeitpunkt eher unwahrscheinlich.
quelle
</script>
). Sie könnten dort Brainf * ck-Code einfügen, wenn Sie es wirklich wollten. Anschließend müssen Sie in dem Browser, den Sie verwenden möchten, lediglich einen Interpreter für die von Ihnen gewählte Sprache implementieren.<script type="vbscript">
einmal ...Wäre es praktisch? Nein.
Ist es möglich? Ja!
Die Entwicklung einer eigenen statisch typisierten Alternative zu JavaScript wäre bestenfalls zeitaufwändig. Im schlimmsten Fall könnten Sie keine vorhandenen Browser davon überzeugen, Ihre Client-Skriptsprache zu implementieren, und müssten Ihre eigene schreiben.
quelle
Vielleicht finden Sie Ihre Antwort hier: /programming/86426/why-require-javascript-rather-than-supporting-a-standard-browser-virtual-machine
Hinweis: Meiner Meinung nach sind neuere Antworten trotz ihrer niedrigeren Punktzahl aufschlussreicher.
quelle
Sie können Sprachen wie haXe verwenden, um Ihren Code statisch zu schreiben und in Javascript zu exportieren. JavaScript wird sehr schnell und ist daher als Ausgabesprache ausreichend. Der Versuch, eine statisch typisierte Sprache als Webstandard durchzusetzen, ist nahezu unmöglich. Versuche, statische Typisierung in JavaScript einzuführen, sind aus zu weitreichenden Gründen gescheitert.
quelle
Wäre es technisch möglich? Wenn es in Java implementiert werden soll, würde ich "sehr, sehr schwer, aber möglich" ohne signifikanten Leistungsverlust sagen.
Ich schreibe gerade ein statisch typisiertes DSL in Java von Hand. Die einzige Möglichkeit, die Überprüfung des Laufzeit-Typs zu vermeiden, besteht darin, Generika zu verwenden und "ungeprüfte" Warnungen zu unterdrücken ... das heißt, bis die Zeit für die Implementierung gekommen ist mehrdimensionale Arrays (Klassenparameter müssen zur Kompilierungszeit bekannt sein und sind daher von Natur aus endlich, während mehrdimensionale Arrays eine unendliche Anzahl von Typen darstellen ...) Ich versuche leider immer noch, dies herauszufinden - ich bin mir sicher, dass ich Bei benutzerdefinierten Klassen treten ähnliche Probleme auf.
Ich stolpere immer wieder über diese Art von Problemen, aber nachdem ich eine Weile darauf gesessen habe, finde ich eine gute Lösung. Also, es zu tun , und die haben Leistung Vorteile der statischen Typisierung (keine Laufzeittypprüfung), würde ich sagen , es ist extrem schwierig, aber nicht unmöglich. Abzüglich der Leistung würde ich hart sagen, aber sehr gut möglich.
Ich weiß, dass es eine alte Frage ist, dachte nur, dass meine Erfahrung für jemanden wertvoll sein könnte.
quelle
Es ist technisch möglich, clientseitige Skripte in jeder vom Benutzeragenten (Browser) unterstützten Skriptsprache zu schreiben. In der Praxis ist JavaScript / ECMAScript die einzige weit verbreitete Sprache. Es ist unwahrscheinlich, dass es erfolgreich ist, Browserhersteller davon zu überzeugen, eine neue Sprache zu implementieren und zu unterstützen. Wenn Sie also eine neue statisch typisierte clientseitige Sprache verwenden möchten, müssen Sie entweder die neue Sprache in JavaScript übersetzen oder einen Interpreter dafür in JavaScript implementieren.
Es gibt mehrere Projekte, die bereits so etwas tun. Zum Beispiel Google Web Toolkit , wie in einer der anderen Antworten erwähnt.
quelle
Vorausgesetzt, Sie haben keine Hoffnung darauf, dass alle Browser, die in der realen Welt verwendet werden, eine neue Sprache unterstützen. Die Sprache muss bis zu jscript kompiliert werden.
Da alle Beispiele des Webs in jscript vorliegen, sollte die Sprache meistens wie jscript aussehen.
Ich denke, es gibt einen Bereich mit einer "Teilmenge" von jscript, die von einem statischen Prüfer überprüft wird, aber auch gültiges jscript ist. Z.B:
quelle
Die optionale statische Typisierung war Teil von ECMAScript's Project Harmony - ob dies jemals in clientseitigem [browserbasiertem] JavaScript geschehen wird oder nicht, ist wohl unbekannt. Siehe diesen Wikipedia-Link: http://en.wikipedia.org/wiki/ECMAScript#Future_development
quelle