Ciò che rende alcune cose più facili da analizzare rispetto ad altre?

7

Stavo leggendo la pagina di Wikipedia per WebAssembly e dice: " WebAssembly è ... progettato per essere più veloce da analizzare di JavaScript ", cosa che mi ha fatto pensare, cosa rende più veloce l'analisi di un determinato linguaggio o formato dati rispetto ad altri e quali algoritmi di parsing vengono utilizzati?

    
posta Moses 10.03.2017 - 11:38
fonte

1 risposta

16

Questo argomento è molto complesso. Puoi google per gli algoritmi del parser e avrai un sacco di materiale dettagliato.

In generale:

  • Meno ambiguità devono essere risolte, più veloce è l'analisi processo.
  • Più token devono essere considerati prima di una decisione può essere fatto, più diventa complesso.

Ad esempio:
Quando un parser JS vede la parola chiave function in questo codice: function xyz(a, b) {} , la parola chiave della funzione è ambigua. Prima deve elaborare il prossimo token xyz e vedere che si tratta di un identificatore prima che possa decidere che si tratta di una dichiarazione di funzione.

Tuttavia, se il token successivo fosse un ( abbiamo a che fare con una funzione letterale: function(a, b) {} . Ciò richiede che il parser si comporti in modo molto diverso, quindi più codice nel parser, quindi esecuzione più lenta.

Se ci fossero diverse parole chiave per questi due scopi, non ci sarebbe alcuna ambiguità:

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

Tuttavia, nessuno vorrebbe scrivere in un tale linguaggio. Ma WebAssembly non dovrebbe essere scritto a mano. Ciò consente di adattare il linguaggio alle macchine piuttosto che agli umani.

    
risposta data 10.03.2017 - 12:04
fonte

Leggi altre domande sui tag