¿Qué hace que algunas cosas sean más fáciles de analizar que otras?

7

Acabo de leer la página de Wikipedia para WebAssembly y dice: “ WebAssembly está ... diseñado para ser más rápido de analizar que JavaScript ", lo que me hizo pensar, ¿qué hace que un determinado lenguaje o formato de datos sea más rápido de analizar que otros y qué algoritmos de análisis se utilizan?

    
pregunta Moses 10.03.2017 - 11:38

1 respuesta

16

Este tema es muy complejo. Puede buscar algoritmos de análisis en Google y obtendrá un montón de material detallado.

En general:

  • Cuantas menos ambigüedades se deben resolver, más rápido será el análisis proceso.
  • Cuantos más tokens deben considerarse antes de tomar una decisión se puede hacer, más complejo se vuelve.

Por ejemplo:
Cuando un analizador JS ve la palabra clave function en este código: function xyz(a, b) {} , la palabra clave de la función es ambigua. Primero tiene que procesar el siguiente token xyz y ver que es un identificador antes de que pueda decidir que es una declaración de función.

Sin embargo, si el siguiente token fuera ( estamos tratando con una función literal: function(a, b) {} . Eso requiere que el analizador se comporte de manera muy diferente, por lo tanto, más código en el analizador y, por lo tanto, una ejecución más lenta.

Si hubiera palabras clave diferentes para estos dos propósitos, no habría ambigüedad:

function_decl xyz(a, b, c) {} y function_lit(a, b, c) {}

Sin embargo, nadie querría escribir en ese idioma. Pero se supone que WebAssembly no se escribe a mano. Eso permite que el lenguaje se adapte a las máquinas, en lugar de a los humanos.

    
respondido por el marstato 10.03.2017 - 12:04

Lea otras preguntas en las etiquetas