asm.js

Cos’è asm.js?

un nuovo linguaggio di programmazione? no!

un’altra libreria per javascript? no!

un uccello? un aereo? no, niente di tutto questo!

asm.js è un subset del linguaggio javascript utilizzabile da appositi compilatori per produrre applicativi che girano ovunque sia disponibile un interprete javascript, e questi applicativi sono più performanti dei corrispondenti scritti nativamente in javascript !!!

Detto così sembra impossibile, eppure funziona. La magia dipende da due fattori:

il primo è che gli ottimizzatori dei compilatori sono veramente bravi a fare il loro lavoro,

il secondo è che i costrutti di asm.js vengono riconosciuti dagli interpreti javascript ed eseguiti in modo più performante.

Vediamo come funziona: supponiamo di volere eseguire la nostra applicazione scritta in C o in C++, con il compilatore LLVM produciamo del bytecode che viene poi processato dal compilatore emscripten il quale produce codice javascript che viene eseguito nel browser. Il gioco è fatto!

E cosa succede se non lavoriamo con il C o il C++? non importa, date un’occhiata all’elenco di Jeremy Ashkenas dei linguaggi che si compilano in javascript

Per esempio prendiamo un linguaggio a caso …. Ruby, in questa pagina potete divertirvi con l’interprete mruby, compilato dal C al Javascript !

Se siete interessati a qualcosa di meno “serio” date un’occhiata alla demo di BananaBread, uno sparatutto 3D in prima persona che gira nel browser :

 

 

kk

 

 

 

Un pensiero su “asm.js”

  1. Bella l’idea dell’astrazione, che poi non e’ nulla di nuovo se pensiamo alla JVM ; la cosa che mi lascia pero’ sempre perplesso e’ un compilatore che genera un codice intermedio interpretato che magari viene eseguito da un interprete a sua volta interpretato da un codice compilato in un linguaggio intermedio e cosi’ via. Alla fine di tutto questo giro l’entropia dell’universo aumenta piu’ o meno che a scriversi il codice di cui si abbisogna in C nativo? o in Java? o in assembly??? Oppure: asm.js e’ green programming o aumenta il riscaldamento globale o il buco nell’ozono o quello che volete? Ci siamo capiti… Io ricordo il Rasoio di Occam “entia non sunt multiplicanda praeter necessitatem”.

Lascia un commento