40 votes

Pourquoi HTML / JavaScript / CSS ne sont pas des langages compilés et le seront-ils un jour?

Pourquoi HTML/JavaScript/CSS ne sont pas de devenir les langages compilés (ou peut-être même de fusionner en un seul langage compilé)? Que faire si les navigateurs étaient en cours d'exécution "Navigateur de la Machine Virtuelle" et html/javascript/css sources pourrait par compilé dans un navigateur "bytecode". Ne serait-il pas aider les développeurs et les utilisateurs?

Je peux voir quelques défis:

  1. Que faire avec des milliards de pages existantes? Faire de cette compilation en option, donc si vous voulez, vous pouvez utiliser le bon vieux html. Si vous souhaitez charger un navigateur avec une page compilée juste utilisation .chtml par exemple.

  2. Comment les moteurs de recherche seraient les pages d'index? Faire un decompiler qui serait décompiler bytecode dans exactes des sources originales (par exemple comme le flash peut être décompilé). Ou les moteurs de recherche peuvent utiliser la même machine virtuelle et d'obtenir les données dont ils ont besoin à partir de là.

  3. Comment faire pour le rendre compatible avec tous les navigateurs? Avoir une centralisé développeur (disons w3c) afin de développer cette machine virtuelle, puis chaque navigateur de l'incorporer.

Mais que penser des avantages:

  1. Vitesse.
  2. Taille.
  3. Pas plus de "lâche" et de "demi-correct" html. C'est soit correcte ou ne compile pas.
  4. Regarde la même chose dans tous les (pris en charge) du navigateur.

Si ce n'est un bytecode puis au moins avoir quelques natif de compression passe, html n'est probablement pas le moyen le plus efficace de stockage des données. Je sais qu'il est gzip mais pourquoi de compresser les pages à chaque fois sur un serveur et de le décompresser dans un navigateur si l'on peut compresser une fois et de le donner à un navigateur?

Donc, ce qui nous empêche de prendre cette route (bien, en plus d'une énorme quantité d'efforts pour que tout se)?

19voto

Dave Markle Points 44637

Ah, mais le Javascript EST en train de devenir un langage compilé. Découvrez Firefox 3.5 avec TraceMonkey. Il est incroyablement rapide par rapport à la messagerie unifiée vous-savez-qui de son navigateur. Il est vrai que le JS ne sera jamais C, mais il est beaucoup plus dynamique de la langue que C est, et dans de nombreuses façons, ce qui le rend plus expressif et puissant.

Aussi loin que HTML, je ne pense pas que le manque de validité de HTML est un préjudice énorme à la vitesse. Je pense que les moteurs de mettre ensemble la représentation visuelle et de manipuler le DOM besoin d'obtenir beaucoup mieux (euh, c'est à dire, je suis à la recherche dans votre direction générale...). CSS conformité doit obtenir mieux, et CSS lui-même a besoin d'obtenir de plus en plus puissants. (Prendre le bus avec le CSS 3 personnes!)

Mais je pense que la vitesse va de mieux en mieux sur Firefox et Chrome, à tel point que les gens vont commencer à l'utiliser pour intégrer le développement de l'application. Il est drôle. Adobe semble être la vente Flash que leur plate-forme pour le contenu web dynamique, MSFT est la vente de Silverlight pour le contenu web dynamique, et Google veut juste vraiment améliorer HTML et Javascript pour afficher du contenu web dynamique. Et Google fait assez bien jusqu'à présent, je dois dire...

4voto

Farid Points 687

Depuis HTML et CSS ne sont pas de code, il ne peut pas être compilé. Le V8 de Google Chrome, le moteur ne fait convertir JS en byte code, s'attendre à d'autres moteurs de rendu pour les suivre!

http://code.google.com/apis/v8/design.html

Récemment, nous avons retravaillé un système de template php que j'ai aidé à créer pour utiliser rapetisser pour compresser plusieurs JS et CSS dans un fichier à chaque, en voyant nos tailles de fichier baisse d'environ 20% de la origial tailles combinées. Minify aussi ne gzip et la mise en cache, donc c'est vraiment incroyable pour l'accélération de sites web.

http://code.google.com/p/minify/

En bref, vous ne pouvez pas compiler non code, HTML et CSS, JS peut être compilé, et commence à l'être, mais tout dépend de ce que les navigateurs envie de le faire.

Les navigateurs juste besoin d'être sur la balle quant à l'appui des standards du web, le plus de navigateurs ce faire, le moins de maux de tête nous les développeurs web ont. J'ai été très heureux avec Youtube est très de dépôt public de soutien pour IE6, nous avons besoin de plus d'action comme ça pour le web pour aller de l'avant.

2voto

Alex Martelli Points 330805

Le V8 moteur javascript (également intégré à Google Chrome, mais il est open-source et possède une licence de sorte que vous êtes les bienvenus à l'utiliser dans le prochain navigateur de vous écrire!) ne compiler en Javascript en code machine natif -- bien sûr, il le fait en "juste à temps" (comme sur la plupart des compilateurs -- Java, C#, etc!), pas "à l'avance" (comme Fortran n'en 1954, quand les ordinateurs étaient tout simplement trop faible pour supporter la compilation dans le milieu de l'exécution). Je serais surpris si d'autres bonnes JS moteurs, tels que ceux dans les derniers Firefox et Safari, ne font pas la même.

Vous n'êtes pas la promotion du javascript, un langage compilé" (car il est évident qu'elle ne l'EST déjà compilé, si vous utilisez un bon moteur JS), mais plutôt "à l'avance" compilation pour elle (juste au moment où la plupart des langues modernes sont essentiellement abandon d'avance sur le temps de compilation). En poussant la machine mais plutôt à un code compilable code en bas de la fil de sons comme la plupart idée horrible -- taille beaucoup plus grande, les difficultés dans l'appui à un CPU vs un autre, de la sécurité des cauchemars correctement dans le bac à sable, etc, etc) avec pas grand-chose en terme de compensation des prestations.

Cela dit, si vous êtes vraiment désireux de pousser code machine pour le client, essayer nativeclient (tant que le client est une machine x86 - oublier chaque téléphone intelligent sur la planète, de nombreux netbooks, le bon vieux mac, etc) -- au moins il promet un correctif pour la sécurité des cauchemars. Si et quand vous êtes heureux avec nativeclient, en transformant le just-in-time compiler en avance sur le temps, on est beaucoup plus facile défi technique (si vous souhaitez continuer à utiliser Javascript pour les sources, plutôt que d'autres langues, bien sûr).

1voto

Ken Smith Points 9165

Voir ici pour une discussion sur la question

Pas toutes les raisons données sont nécessairement valide, mais un point important est que, sauf si vous êtes Google, côté serveur CPU cycles sont beaucoup plus précieux que côté client cycles: il est donc plus facile pour le client de compilation/optimiser ce qui est assez souvent généré de façon dynamique en HTML/JavaScript, plutôt que sur le serveur.

Ken

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X