2011-08-10 19 views
44

Se si tratta di un linguaggio di scripting come implica il nome, deve essere scritto in un linguaggio di livello inferiore, giusto? Come il PHP è scritto in C in quale lingua è scritto JavaScript?In quale lingua è scritto JavaScript?

+8

"deve essere scritto in una lingua inferiore", non necessariamente, ad esempio, [Narciso] (https://github.com/mozilla/narcissus/) è un interprete Javascript, scritto in puro Javascript (è un [ valutatore meta-circolare] (http://en.wikipedia.org/wiki/Meta-circular_evaluator)) :) – CMS

+0

Sto indovinando che ci sono un certo numero di diversi motori JavaScript scritti in tutti i tipi di lingue diverse. – Galik

risposta

72

Javascript è solo uno standard, più formalmente conosciuto come ECMAScript. Può essere implementato in qualsiasi lingua, proprio come qualsiasi altro standard.

Il motore JavaScript di Chrome, V8, è scritto in C++.

Dalla pagina del progetto:

V8 è scritto in C++ e viene utilizzato in Google Chrome, il browser open source di Google.

V8 implementa ECMAScript come specificato nel ECMA-262, 5 ° edizione, e gira su Windows (XP o più recente), Mac OS X (10.5 o più recente), e Linux sistemi che utilizzano IA-32, 64, o Processori ARM.

Il motore Javascript di Firefox, SpiderMonkey (e ora TraceMonkey) è scritto anche in C++. E come i maestri qui sotto, Rhino è scritto in Java.

+6

Infatti.Anche se scommetterei che [la maggior parte di essi sono implementati in C++] (http://en.wikipedia.org/wiki/List_of_ECMAScript_engines) (o C e le sue derivate). Rhino è ovviamente Java. – maerics

3

Qualunque sia la lingua dei browser web client JavaScript interprete è in :)

4

Javascript è un'implementazione dello standard ECMAScript, ma non v'è alcun interprete canonica singolare come si vede con PHP.

La maggior parte delle principali implementazioni (standalone o parti di browser Web) tendono ad essere ampiamente scritte in C o C++ per motivi di prestazioni, ma non è sempre così. Rhino, un motore gestito da Mozilla, è scritto in Java.

+4

Ci * potrebbe * essere implementazioni multiple di PHP, ma ... nessuno è interessato. –

+0

@Ignacio Scioccante, non è vero? ;) – dfreeman

+3

@ IgnacioVazquez-Abrams - risulta che Facebook era interessato :) –

8

La maggior parte degli interpreti Javascript sono scritti in C/C++ (V8, Nitro, ecc.), Tuttavia un interprete compatibile può essere scritto in qualsiasi lingua (Rhino → Java, Interpreter → Javascript, ecc ...).

2

maggior parte delle implementazioni di spettacolo comportamento JavaScript che è chiaramente causato dall'utilizzo di puntatori e byref passaggio di parametri, che punta normalmente verso l'utilizzo di C o C++

Questo è chiaramente notevole per esempio quando si sta assumendo a parte una matrice multidimensionale in un ciclo, con l'aiuto degli array intermedi. Questi tendono a comportarsi in modo molto "strano", se non si ha familiarità con i puntatori e il passaggio di parametri (è necessario fare var hlp = new Array() ogni volta o sovrascrive i valori precedenti che sono già stati memorizzati altrove)

Sono piuttosto curioso di come un'implementazione di javascript in Java ad esempio, perché immagino che questo tipo di comportamento sarà abbastanza diverso in quel caso?

Problemi correlati