web-dev-qa-db-fra.com

Pourquoi javascript est-il le seul langage de script côté client implémenté dans les navigateurs?

Pourquoi les navigateurs ne prennent-ils pas en charge, par exemple, Python comme alternative à Javascript? Ou des langages de script plus généraux? Y a-t-il une raison pour laquelle Javascript est le seul implémenté sur les navigateurs? Après tous, la balise de script prend en charge pour spécifier le langage de script utilisé.

(Je sais qu'il existe un support VBScript dans IE, mais il semble obsolète à toutes fins utiles.)

61
anand.trex

Eh bien, Google essaie de renverser cette tendance avec Dart . La communauté n'a pas été entièrement réceptive à l'idée; Soit.

Google a proposé d'ajouter plusieurs VM support pour Webkit qui n'a pas très bien fonctionné.

Un commentaire en particulier résume bien pourquoi il y a eu une certaine résistance à cela:

Dans ce cas, la fonctionnalité expose des langages de programmation supplémentaires sur le Web, quelque chose sans aucun avantage réel pour quiconque autre que les fans de la langue "la plus impressionnante" actuelle (il n'y a pas si longtemps qui aurait pu être Go, il y a environ un an, ce serait ont été Ruby, avant que python, je me souviens que je suis brusquement en hausse dans la popularité de haskell il n'y a pas si longtemps aussi, Lua est sur le point depuis longtemps, dans ce cas, c'est Dart - qui dit qu'il n'y aura pas de un langage complètement différent en vogue en 6 mois?), mais en tant que coût, il fragmente le Web et ajoute une charge de maintenance supplémentaire substantielle - le simple maintien des liaisons v8 et jsc n'est pas trivial et elles sont pour le même langage.

Le problème ici n'est pas "pouvons-nous faire vivre plusieurs vms en webkit" c'est "pouvons-nous exposer plusieurs langues au web", au premier je dis évidemment comme nous le faisons déjà, au second je dis que nous ne voulons pas à.

A moins que nous ne voulions transformer le webkit en moteur que tout le monde déteste en raison de toutes ses "fonctionnalités" uniques qui cassent le web ouvert, comme certains navigateurs à la fin des années 90.

CoffeeScript est un autre exemple d'un langage de script côté client émergent. Cependant, plutôt que de prendre en charge une autre machine virtuelle dans un navigateur (comme Google essaie de le faire avec Dart), il se compile en JavaScript. Il existe plusieurs autres "compiler X vers JavaScript" qui font cela également. emscripten est un bon exemple de compilation [~ # ~] llvm [~ # ~] en JavaScript.

Il existe donc de nombreuses autres langues clientes; ils utilisent tous JavaScript comme intermédiaire. Je dirais que ce devrait être aussi ce que fait Dart, cependant ils ont de la place pour s'améliorer .

42
vcsjones

Internet Explorer prend en charge n'importe quel moteur de script Windows , vous pouvez donc le faire prendre en charge n'importe quelle langue qui a été implémentée comme une seule, ou écrire la vôtre.

6
Martin Broadhurst

Parce que JavaScript est ce que tous les autres navigateurs prennent en charge, et les fournisseurs de navigateurs ont deux priorités principales:

  1. S'assurer que les pages Web existantes fonctionnent (ce qui nécessite JavaScript)
  2. Permettre aux auteurs de faire des choses visibles par l'utilisateur dans leur navigateur qu'ils ne pourraient pas faire dans d'autres navigateurs (le changement de langage de programmation serait entièrement caché aux utilisateurs, sauf en cas de panne).
0
Quentin