In welcher Sprache ist JavaScript geschrieben?

68

Wenn es sich um eine Skriptsprache handelt, wie der Name schon sagt, muss sie in einer niedrigeren Sprache geschrieben sein, oder? Wie PHP in C geschrieben ist In welcher Sprache ist JavaScript geschrieben?

Sergio
quelle
8
"Es muss in einer niedrigeren Sprache geschrieben sein", nicht unbedingt, zum Beispiel, Narziss ist ein Javascript-Interpreter, geschrieben in reinem Javascript (es ist ein Meta-Circular-Evaluator ) :)
Christian C. Salvadó
Ich vermute, es gibt eine Reihe verschiedener JavaScript-Engines, die in allen möglichen Sprachen geschrieben sind.
Galik
@CMS Ja, aber die zugrunde liegende Frage hier ist, welche Sprache der erste JS-Interpreter geschrieben hat. Sie können JavaScript Interpreter nicht in JavaScript schreiben, wenn Sie kein Tool zum Lesen Ihres JavaScript-Codes haben (in diesem Fall Interpreter). Dieser Link hier erklärt dieses Hühnerei-Problem: stackoverflow.com/questions/18247888/…
RegarBoy

Antworten:

114

Javascript ist nur ein Standard, der formeller als ECMAScript bekannt ist . Es kann in jeder Sprache implementiert werden, genau wie jeder Standard.

Die Javascript-Engine von Chrome, V8 , ist in C ++ geschrieben.

Von der Projektseite:

V8 ist in C ++ geschrieben und wird in Google Chrome, dem Open Source-Browser von Google, verwendet.

V8 implementiert ECMAScript gemäß ECMA-262, 5. Ausgabe, und läuft unter Windows- (XP oder neuer), Mac OS X- (10.5 oder neuer) und Linux-Systemen, die IA-32-, x64- oder ARM-Prozessoren verwenden.

Die Javascript-Engine von Firefox, SpiderMonkey (und jetzt TraceMonkey), ist ebenfalls in C ++ geschrieben. Und wie die Maerics unten sagten, ist Rhino in Java geschrieben.

Seth Carnegie
quelle
8
Tatsächlich. Obwohl ich wetten würde, dass die meisten von ihnen in C ++ (oder C und seinen Derivaten) implementiert sind . Rhino ist offensichtlich Java.
Maerics
31

Alle bisherigen Antworten sind korrekt, aber da dies noch nicht erwähnt wurde, kann JavaScript in JavaScript geschrieben werden .

Matthew Crumley
quelle
9
Atwoods Gesetz vom Feinsten!
Evaldas Buinauskas
Coole Antwort, aber der Geek in mir muss dich auch korrigieren. SpiderMonkey ist ein Motor, also gibt es das Küken, aber ich sehe das Ei nicht,
clusterBuddy
10

Die meisten Javascript-Interpreter sind in C / C ++ (V8, Nitro usw.) geschrieben. Ein kompatibler Interpreter kann jedoch in jeder Sprache geschrieben werden (Rhino → Java, Interpreter → Javascript usw.).

gf3
quelle
7

Javascript ist eine Implementierung des ECMAScript- Standards, aber es gibt keinen singulären kanonischen Interpreter, wie Sie ihn bei PHP sehen.

Die meisten wichtigen Implementierungen (eigenständig oder als Teil von Webbrowsern) sind aus Leistungsgründen in der Regel in C oder C ++ geschrieben, aber das ist nicht unbedingt immer der Fall. Rhino, eine von Mozilla gewartete Engine, ist in Java geschrieben.

dfreeman
quelle
5
Es könnte mehrere Implementierungen von PHP geben, aber ... niemand interessiert sich dafür.
Ignacio Vazquez-Abrams
@ Ignacio Schockierend, nicht wahr? ;)
dfreeman
5
@ IgnacioVazquez-Abrams - stellte sich heraus, Facebook waren interessiert :)
Jon Hudson
5

In welcher Sprache auch immer der Javascript-Interpreter des Client-Webbrowsers geschrieben wurde :)

Tom Studee
quelle
2

Die meisten Implementierungen von Javascript zeigen ein Verhalten, das eindeutig durch die Verwendung von Zeigern und die Übergabe von Byref-Parametern verursacht wird, was normalerweise auf die Verwendung von C oder C ++ hinweist

Dies ist beispielsweise dann besonders bemerkenswert, wenn Sie ein mehrdimensionales Array in einer Schleife mithilfe von Zwischenarrays zerlegen. Diese verhalten sich in der Regel sehr "seltsam", wenn Sie nicht mit Zeigern und der Übergabe von Parametern vertraut sind (Sie müssen jedes Mal var hlp = new Array () ausführen, da sonst die vorherigen Werte überschrieben werden, die Sie bereits an einer anderen Stelle gespeichert haben).

Ich bin ziemlich neugierig, wie eine Implementierung von Javascript in zum Beispiel Java funktioniert, weil ich mir vorstelle, dass diese Art von Verhalten in diesem Fall ganz anders sein wird.

Rients Dijkstra
quelle
Nein. Die Semantik der JavaScript-Ausführung hängt nicht von der Sprache ab, in der sie implementiert wurden.
Bergi
-4

C++ist die Grundsprache für alles Moderne und Phantasievolle. Die meisten modernen Hochsprachen sind Teilmengen der Niedrigsprache C++. Alle modernen Sprachen, die Sie heute sehen, sind eine Teilmenge der C++einen oder anderen. Auch Javaist eine Teilmenge von C++.

Gayan S. Muthukumarana
quelle
Das ist falsch. Java ist keine Teilmenge von C ++. C ++ wird nicht als einfache Sprache betrachtet. Sie denken vielleicht an C, und selbst dann sind Java und andere Sprachen keine 'Teilmenge' von C. Sie basieren möglicherweise auf C, aber sie sind keine Teilmenge. Die akzeptierte Antwort liefert eine bessere Antwort: Javascript kann in jeder Sprache geschrieben werden, die beliebteste Implementierung ist jedoch C ++, dh Googles V8.
David Frick
Ich verstehe nicht, was du damit meinst. C ++ ist eine andere Sprache, die als Obermenge von C entstanden ist. Wenn eine Sprache eine Teilmenge von C ++ ist, sollte dieser Python-Code in C ++ funktionieren : print("hello world"). Fügen Sie es in eine neue Datei ein und kompilieren Sie es mit einem C ++ - Compiler. Kompiliert es? Wenn nicht, dann ist Python keine Teilmenge von c ++
ARI FISHER