asm.js c'est mieux !
Rien à voir, asm.js est un sous-ensemble de JavaScript, une sorte de bytecode ou langage assembleur. Cela permet de convertir du C/C++ vers du JavaScript.
Les incompréhensions sur asm.js ont la vie dure.
asm.js est effectivement un sous ensemble de javascript, mais un sous ensemble qui est facile à compiler en bloc.
De la même façon que llvm est capable de convertir du C ou du C++ en bytecode javascript, il existe la possibilité de convertir le même C ou C++ en asm.js.
Cet code asm.js peut être éxecuté par n'importe quelle VM javascript (il s'agit de bytecode javascript complètement valide), mais si il est exécuté sur une VM qui connait asm.js il va pouvoir être compilé de façon beaucoup plus efficace - notamment parceque les optimisation AOT (ahead of time - c'est à dire la compilation à l'avance de morceaux dont on va forcément avoir besoin, par opposition au JIT (just in time) qui ne compile que quand il y a le besoin ). On a entre 1,4x et 3x la vitesse d’exécution du C++ avec le backend LLVM actuel - qui est loin d'être optimal aux dires des mainteneurs.
Dans ce sens il est complètement sur le même ségment que DART : un nouveau langage web destiné à être beaucoup plus facile et efficace à compiler en JIT (voire en compil classique) - Mais lui il ne casse pas tout l'existant pour ce faire. Cependant il ne faut pas non plus s'attendre à ce qu'il soit aussi performant que DART - du moins dans un premier temps. Cependant le but du jeu étant d'utiliser un maximum d'UI et de graphismes 2D/3D (la majorité du calcul étant fait coté serveur et/ou par la carte graphique pour la 3D) il est possible que l'approche asm.js soit suffisante pour 95% des apps.
Il est difficile d'écrire de l'asm.js directement à la mano sans passer par un pré-compiler, la façon la plus proche est d'utiliser http://mbebenita.github.io/LLJS/ LLJS qui rend les choses compréhensibles (même si une personne habitué au javascript pur va prendre un moment pour retrouver ses marques).
En ce qui concerne DART, les deux derniers projets Open Source de chez Google auxquels j'ai participé (Android et Wave) m'ont laissé un gout beaucoup trop amer pour que je ne le considère sérieusement. Malheureusement je ne suis pas le seul. Je considère l'approche asm.js/LLJS beaucoup plus claire, ouverte et viable.
# Petite digression sur asm.js
Posté par Kaane . En réponse au journal Normalisation du langage Dart de Google par l'Ecma. Évalué à 2.
Les incompréhensions sur asm.js ont la vie dure.
asm.js est effectivement un sous ensemble de javascript, mais un sous ensemble qui est facile à compiler en bloc.
De la même façon que llvm est capable de convertir du C ou du C++ en bytecode javascript, il existe la possibilité de convertir le même C ou C++ en asm.js.
Cet code asm.js peut être éxecuté par n'importe quelle VM javascript (il s'agit de bytecode javascript complètement valide), mais si il est exécuté sur une VM qui connait asm.js il va pouvoir être compilé de façon beaucoup plus efficace - notamment parceque les optimisation AOT (ahead of time - c'est à dire la compilation à l'avance de morceaux dont on va forcément avoir besoin, par opposition au JIT (just in time) qui ne compile que quand il y a le besoin ). On a entre 1,4x et 3x la vitesse d’exécution du C++ avec le backend LLVM actuel - qui est loin d'être optimal aux dires des mainteneurs.
Dans ce sens il est complètement sur le même ségment que DART : un nouveau langage web destiné à être beaucoup plus facile et efficace à compiler en JIT (voire en compil classique) - Mais lui il ne casse pas tout l'existant pour ce faire. Cependant il ne faut pas non plus s'attendre à ce qu'il soit aussi performant que DART - du moins dans un premier temps. Cependant le but du jeu étant d'utiliser un maximum d'UI et de graphismes 2D/3D (la majorité du calcul étant fait coté serveur et/ou par la carte graphique pour la 3D) il est possible que l'approche asm.js soit suffisante pour 95% des apps.
Il est difficile d'écrire de l'asm.js directement à la mano sans passer par un pré-compiler, la façon la plus proche est d'utiliser http://mbebenita.github.io/LLJS/ LLJS qui rend les choses compréhensibles (même si une personne habitué au javascript pur va prendre un moment pour retrouver ses marques).
En ce qui concerne DART, les deux derniers projets Open Source de chez Google auxquels j'ai participé (Android et Wave) m'ont laissé un gout beaucoup trop amer pour que je ne le considère sérieusement. Malheureusement je ne suis pas le seul. Je considère l'approche asm.js/LLJS beaucoup plus claire, ouverte et viable.