Was, wie und warum JavaScript-Engine?
Hallo Mitleser, Dieser Artikel ist für diejenigen, die neugierig sind, warum wir eine Engine brauchen, wie sie funktioniert und WTH eine JS-Engine ist !!!? Also, dieser Artikel ist in Abschnitte unterteilt. Warum was und wie JS funktioniert.
Haftungsausschluss hier – wir gehen nicht auf das Wesentliche ein (Stapel, Speicherhaufen usw.). Der Artikel konzentriert sich nur auf die JS Engine. Ich habe versucht, diesen Artikel interaktiv zu gestalten, nicht wie andere langweilige Artikel. damit Sie alles verstehen und erhalten können, was dieser Artikel zu bieten hat.
Lassen Sie uns die Fragen aufwerfen, nicht wahr?
Was und warum JS Engine?
Eine JavaScript-Engine ist eine Softwarekomponente , die JavaScript -Code ausführt . Die ersten JavaScript- Engines waren reine Interpreter , aber alle relevanten modernen Engines verwenden …. etc. (laut Wikipedia)
Brechen wir die Monotonie: Anstatt die obige Zeile zu verstehen, verstehen wir dies:
Angenommen, es gibt zwei Leute, einer ist Franzose und der andere ist Deutscher✈️, beide müssen sich unterhalten, wie würden sie abschneiden? natürlich mit Hilfe eines Übersetzers/Dolmetschers.
Dasselbe gilt für den Computer und Ihren Code . Er benötigt eine Engine/einen Vermittler, da Ihr Computer den Code nicht verstehen kann. Technisch gesehen versteht der Computer die source code, er versteht die machine code.
es bedeutet, dass Sie Folgendes verstehen:
'Hallo!'
und das versteht Ihr Computer
' 01001000 01100101 01101100 01101100 01101111 00100001'
Quellcode ➡️⚙️➡️ Maschinencode
die Art und Weise, wie der Code konvertiert wird, bestimmt den Typ. wie interpreted, compiled, und JIT compiled.
Sie haben vielleicht von der kompilierten Sprache gehört, interpretiert, und was ist JIT kompiliert????
und ich glaube dass viele Leute denken, dass Javascript interpretierte Sprache ist. Lassen Sie mich Ihnen sagen, dass es nicht ❌ ist. „ JS ist JIT (Just In Time) kompilierte Sprache“.
Lassen Sie uns jeden Weg verstehen.
- Kompilierung: Bei der Kompilierung wird der gesamte Quellcode auf einmal in Maschinencode konvertiert, was eine bessere Leistung bietet. Die Kompilierung geht schneller, da der Quellcode bereits kompiliert wurde, wir führen ihn nur aus. Wir haben also bereits Bytecode / Maschinencode bereit.
- Dolmetscher: macht die gleiche Arbeit, aber Zeile für Zeile, nicht alles auf einmal. das macht es 10X langsamer als Compiler. Code wird gleichzeitig gelesen und ausgeführt, JS war früher eine rein interpretierte Sprache. was JS viel viel viel langsamer machte!!.
- Um eine langsame Ausführung zu vermeiden, verwendet modernes JS den Ansatz der JIT-Kompilierung (just in time), bei der der Quellcode in Maschinencode konvertiert wird, aber im Gegensatz zur Kompilierung keine portable Datei erstellt wird. und die Ausführung erfolgt sofort. Das bedeutet, dass die moderne JS-Engine beides verwendet.
- Interpretation – Sie lesen eine Zeile und übersetzen eine Zeile, wieder zweite Zeile – übersetzen Sie eine Zeile. was verdammt viel Zeit in Anspruch nimmt,
- Zusammenstellung – Sie lesen das ganze Buch – erstellen Sie Ihre eigene Version des Buches auf Hindi und geben Sie Ihrem Freund das Buch zum Lesen. Wenn Sie es also später jemandem erklären müssen, können Sie es tun. das geht schneller.
- JIT-Kompilierung – Sie lesen das Buch, anstatt eine Kopie des Buches anzufertigen. Sie erklären es Ihrem Freund, sodass Sie kein Exemplar des Buches benötigen. das ist der effizienteste und schnellste Weg.
So wird JS-Code in der Engine ausgeführt, die diese Schritte durchlaufen muss. um den Quellcode in Maschinencode umzuwandeln.
Lassen Sie uns eins nach dem anderen verstehen:
- Der erste Schritt wäre, um Gottes willen, „zu codieren“!, XD!
- Parsing: parse konvertiert den Quellcode in ein Token (das bedeutet, dass Ihr Code wie const, message, =, 'hello' sein wird. Dies sind 4 Token), dann wird das Token in eine Datenstruktur namens Abstract Syntax Tree (AST ) , das so aussieht
Dies ist nur eine Codezeile, stellen Sie sich vor, wie umfangreich Ihr Programm wäre. Sie fragen sich vielleicht, warum wir überhaupt eine Analyse nach AST brauchen. können wir nicht einfach kompilieren, was wir haben, direkt?
Lassen Sie mich Ihnen also sagen, dass AST eine entscheidende Rolle bei der Validierung der Korrektheit✅ und der ordnungsgemäßen Verwendung des Programms und der Sprache spielt. (z. B. Linting verwendet AST, für diejenigen unter Ihnen, die nichts über Lint wissen. Es überprüft Ihren Code und zeigt Fehler an, ist es nicht cool ), und AST wird auch an anderen Stellen wie Babel, Webpack, Minifiers und verwendet Syntax-Highlighter.
Wenn Sie sehen möchten, wie AST aussieht, können Sie diese Website besuchen. oder beziehen Sie sich auf dieses Beispiel.
3. Kompilierung: Es wandelt ⚙️ AST in Maschinencode/Binärcode um, jetzt wurde der Code in Binärcode (0, 1) umgewandelt, den unser Computer verstehen kann.
4. Ausführung: Es passiert im Aufrufstapel (was ein weiteres interessantes Thema ist, aber wir werden es hier nicht behandeln). Die Geschichte endet hier nicht,
5. Optimierung: Moderne JS-Engine optimiert den Code kontinuierlich. Warum ist JIT schnell? weil es zuerst die nicht optimierte Version des Maschinencodes erstellt, sodass zumindest die Ausführung so schnell wie möglich erfolgt, und im Hintergrund wird es eine kontinuierliche ♻️ Optimierung geben, die den Code optimiert und vorheriger nicht optimierter Code durch neuen ersetzt wird optimierte.
Fazit :
Warum brauchen wir einen Motor? ➡ Da unser Code (Quellcode) vom Computer nicht verstanden werden kann, versteht er nur den Binärcode (0,1) / Maschinencode. also brauchen wir einen Vermittler für unsere Konvertierung (das macht unsere Engine),
Was Engine tut ➡ Quellcode ➡️⚙️➡️ Maschinencode
So funktioniert Engine ➡ Es funktioniert in vier Schritten
Quellcode ➡ ➡️⚙️➡️ ➡ AST ( Abstrakter Syntaxbaum ) ➡ ➡️⚙️➡️ ➡ Binärcode/Maschinencode ➡ ➡️⚙️➡️ ➡ Ausführung im Aufrufstapel ➡ ➡️⚙️

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































