Rumah hujung hadapan web tutorial js Inti JavaScript: Adakah ia dibina di atas C atau C?

Inti JavaScript: Adakah ia dibina di atas C atau C?

May 05, 2025 am 12:07 AM
c/c++

JavaScript tidak dibina di atas C atau C; Ia adalah bahasa yang ditafsirkan yang berjalan pada enjin sering ditulis dalam c. 1) JavaScript direka sebagai bahasa yang ringan dan ditafsirkan untuk pelayar web. 2) Enjin berevolusi dari jurubahasa mudah kepada penyusun JIT, biasanya dalam C, meningkatkan prestasi. 3) Enjin V8, yang ditulis dalam C, menyusun JavaScript ke kod mesin asli, meningkatkan kelajuan pelaksanaan. 4) Ciri -ciri C adalah penting untuk membina enjin JavaScript kompleks, tetapi sintaks dan semantik JavaScript tetap bebas.

Inti JavaScript: Adakah ia dibina di atas C atau C?

JavaScript, bahasa yang telah merevolusikan pembangunan web, sering mencetuskan rasa ingin tahu tentang seni bina yang mendasari. Ramai yang tertanya -tanya, "Adakah JavaScript dibina di atas C atau C?" Mari kita menyelam topik yang menarik ini dan meneroka teras JavaScript, evolusinya, dan bagaimana ia berinteraksi dengan bahasa asas ini.

JavaScript, di tengah -tengahnya, tidak dibina secara langsung di atas c atau c. Sebaliknya, ia adalah bahasa yang ditafsirkan yang berjalan pada enjin, biasanya ditulis dalam C atau bahasa peringkat rendah yang lain. Enjin JavaScript yang paling terkenal ialah V8, yang dibangunkan oleh Google untuk Chrome dan Node.js, yang sememangnya ditulis dalam c. Walau bagaimanapun, ini tidak bermakna JavaScript sendiri "dibina di atas" C; Sebaliknya, enjin yang menafsirkan dan melaksanakan JavaScript dibuat menggunakan c.

Mari kita menyelidiki hubungan ini dan meneroka selok -belok teras JavaScript.


Permulaan JavaScript bermula pada tahun 1995, yang dicipta oleh Brendan Eich di Netscape. Pada mulanya dinamakan Mocha, ia dinamakan semula sebagai JavaScript untuk memanfaatkan populariti Java, walaupun kedua -dua bahasa itu agak berbeza. JavaScript direka untuk menjadi bahasa yang ringan dan ditafsirkan yang boleh dijalankan dalam pelayar web, menjadikannya alat penting untuk kandungan web yang dinamik.

Enjin JavaScript yang pertama adalah penterjemah mudah yang ditulis dalam pelbagai bahasa, termasuk C. dari masa ke masa, kerana permintaan untuk prestasi yang lebih baik berkembang, enjin berkembang menjadi pengkompil masa depan (JIT), yang biasanya ditulis dalam C disebabkan oleh kemampuan dan kemampuan tahap sistemnya. Evolusi ini menandakan peralihan yang ketara dalam model pelaksanaan JavaScript, dari semata -mata ditafsirkan kepada model hibrid yang menggabungkan tafsiran dan penyusunan.

Enjin V8, yang diperkenalkan oleh Google pada tahun 2008, adalah penukar permainan. V8 menyusun JavaScript terus ke kod mesin asli sebelum melaksanakannya, yang secara dramatik meningkatkan prestasi. Senibina V8, yang ditulis dalam C, mempamerkan bagaimana kecekapan C dimanfaatkan untuk meningkatkan kelajuan pelaksanaan JavaScript. Enjin terkenal lain seperti Spidermonkey (Mozilla) dan JavaScriptCore (Apple) juga menggunakan C atas sebab yang sama.

Berikut adalah contoh mudah bagaimana JavaScript boleh berinteraksi dengan C melalui enjin V8:

 // Kod JavaScript
fungsi salam (nama) {
    kembali `hello, $ {name}!`;
}

console.log (salam ("dunia"));
Salin selepas log masuk

Kod JavaScript ini, apabila dijalankan pada enjin V8, akan diubah menjadi kod mesin asli oleh komponen C -written V8. Dalaman enjin, seperti parser, pengoptimal, dan pemungut sampah, semuanya dilaksanakan dalam c.

Orang mungkin bertanya, mengapa tidak menggunakan C untuk enjin ini? C menawarkan ciri pengaturcaraan berorientasikan objek, templat, dan perpustakaan standard yang kaya, yang penting untuk membina sistem kompleks seperti enjin JavaScript. C, manakala lebih kompleks daripada C, menyediakan abstraksi dan pengoptimuman prestasi yang lebih baik yang penting untuk enjin JavaScript moden.

Walau bagaimanapun, pergantungan ini pada C untuk enjin tidak bermakna JavaScript sendiri "dibina di atas" c. JavaScript kekal sebagai bahasa peringkat tinggi, ditafsirkan, dan sintaks dan semantiknya bebas daripada c. Enjin hanya menyediakan persekitaran untuk JavaScript berjalan dengan cekap.

Apabila mempertimbangkan kelebihan dan potensi perangkap seni bina ini, beberapa perkara datang ke fikiran:

  • Prestasi : Menggunakan C untuk enjin membolehkan penambahbaikan prestasi yang signifikan, yang penting untuk aplikasi web moden. Walau bagaimanapun, ini juga bermakna bahawa sebarang pepijat atau ketidakcekapan dalam kod C boleh memberi kesan kepada prestasi JavaScript.

  • Kerumitan : Kerumitan C boleh membawa kepada pembangunan dan penyelenggaraan enjin yang lebih mencabar. Pemaju yang bekerja di enjin JavaScript perlu mahir dalam kedua -dua JavaScript dan C, yang boleh menjadi lengkung pembelajaran yang curam.

  • Keselamatan : Oleh kerana enjin JavaScript ditulis dalam C, sebarang kelemahan keselamatan dalam kod C berpotensi dieksploitasi, yang mempengaruhi keselamatan aplikasi JavaScript.

  • Kemudahalihan : Walaupun JavaScript sendiri sangat mudah alih, enjin yang ditulis dalam C perlu disusun untuk platform yang berbeza, yang dapat memperkenalkan ketidakkonsistenan dalam tingkah laku di seluruh persekitaran yang berbeza.

Dalam pengalaman saya, bekerja dengan JavaScript dan memahami enjin asasnya telah mencerahkan. Saya telah melihat secara langsung bagaimana pengoptimuman dalam enjin V8 boleh membawa kepada keuntungan prestasi yang signifikan dalam aplikasi Node.js. Walau bagaimanapun, saya juga menghadapi cabaran ketika menyahpepijat isu -isu yang berpunca dari internal C enjin, yang boleh menjadi menakutkan.

Untuk membungkus, teras JavaScript tidak dibina di atas C atau C; Ia adalah bahasa yang ditafsirkan yang bergantung kepada enjin, sering ditulis dalam C, untuk melaksanakan dengan cekap. Hubungan ini antara JavaScript dan C adalah bukti kuasa menggabungkan bahasa peringkat tinggi dengan pengoptimuman peringkat rendah untuk mewujudkan sistem yang mantap dan pelaku. Semasa anda meneroka JavaScript lagi, pemahaman dinamik ini dapat memperdalam penghargaan anda terhadap bahasa dan ekosistemnya.

Atas ialah kandungan terperinci Inti JavaScript: Adakah ia dibina di atas C atau C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1657
14
Tutorial PHP
1257
29
Tutorial C#
1229
24
Mengapa dalam C/C++, saiz struktur tidak sama dengan jumlah saiz setiap ahli? Mengapa dalam C/C++, saiz struktur tidak sama dengan jumlah saiz setiap ahli? Aug 26, 2023 am 09:29 AM

Saiz elemen jenis struktur yang diperoleh oleh sizeof() tidak selalu sama dengan saiz setiap ahli individu. Kadangkala pengkompil menambah beberapa padding untuk mengelakkan masalah penjajaran. Jadi dimensi mungkin berubah. Padding ditambah apabila anggota struktur diikuti oleh anggota bersaiz lebih besar atau berada di hujung struktur. Penyusun yang berbeza mempunyai jenis kekangan penjajaran yang berbeza. Dalam piawaian C, jumlah struktur penjajaran adalah bergantung kepada pelaksanaan. Kes 1 Dalam kes ini, z berganda ialah 8 bait panjang, yang lebih besar daripada x (4 bait)). Jadi 4 bait lagi padding ditambah. Selain itu, data jenis pendek y mempunyai 2 bait ruang dalam ingatan, jadi 6 bait tambahan ditambah sebagai padding. Contoh kod #include<stdio.h>structmyS

Apakah perbezaan antara php dan c# Apakah perbezaan antara php dan c# Jun 02, 2023 pm 01:45 PM

Perbezaan antara php dan c# ialah: 1. Sistem jenis bahasa adalah berbeza, PHP adalah dinamik, manakala C# adalah jenis statik 2. Platform yang digunakan adalah berbeza, PHP boleh mencapai cross-platform, manakala C# adalah eksklusif untuk Windows 3; . Paradigma pengaturcaraan adalah berbeza, PHP Ia menyokong pengaturcaraan berorientasikan objek, prosedural dan berfungsi, dan C# lebih cenderung kepada pengaturcaraan berorientasikan objek 4. Kelajuan pelaksanaan berbeza, PHP lebih cepat, dan C# agak perlahan; Senario aplikasi adalah berbeza, PHP digunakan dalam pembangunan web, pelayan, dll. C# digunakan untuk desktop Windows dan aplikasi web.

Buat alat pemformatan kod C/C++ menggunakan alat Clang Buat alat pemformatan kod C/C++ menggunakan alat Clang Aug 26, 2023 pm 01:09 PM

Dalam tutorial ini, kami akan membincangkan program untuk mencipta alat pemformatan kodC/C++dengan alat bantuanhelpofclang.SETUPsudoaptinstallpythonsudoaptinstallclang-format-3.5 Kami kemudiannya akan mencipta fail Python di lokasi yang pengguna semasa mempunyai kebenaran membaca dan menulis. Contoh importoscpp_extensions=(".cxx",".cpp&

Dalam C/C++, terdapat dua operasi: pra-kenaikan dan pasca-kenaikan. Dalam C/C++, terdapat dua operasi: pra-kenaikan dan pasca-kenaikan. Aug 25, 2023 pm 02:25 PM

Di sini kita lihat apa itu pra-kenaikan dan pasca-kenaikan dalam C atau C++. Kedua-dua pra-kenaikan dan pasca-kenaikan adalah pengendali kenaikan. Tetapi terdapat sedikit perbezaan antara mereka. Operator pra-kenaikan mula-mula menambah nilai pembolehubah dan kemudian memberikannya kepada pembolehubah lain, tetapi dalam kes pengendali selepas kenaikan, ia mula-mula memberikan kepada pembolehubah dan kemudian menambah nilai. Contoh #include<iostream>usingnamespacestd;main(){ intx,y,z x=10;&nb;

Satu artikel menerangkan secara terperinci konfigurasi vscode C/C++ menjalankan persekitaran [pengajaran peringkat pengasuh] Satu artikel menerangkan secara terperinci konfigurasi vscode C/C++ menjalankan persekitaran [pengajaran peringkat pengasuh] Feb 27, 2023 pm 07:33 PM

Bagaimana untuk membangunkan C/C++ dalam VScode? Bagaimana untuk mengkonfigurasi persekitaran C/C++? Artikel berikut akan berkongsi dengan anda tutorial persekitaran berjalan C/C++ konfigurasi VScode (pengajaran peringkat pengasuh).

Dalam C/C++, fungsi strcpy() ialah fungsi yang digunakan untuk menyalin satu rentetan ke rentetan lain Dalam C/C++, fungsi strcpy() ialah fungsi yang digunakan untuk menyalin satu rentetan ke rentetan lain Sep 09, 2023 am 08:49 AM

Fungsi strcpy() ialah fungsi perpustakaan standard. Ia digunakan untuk menyalin satu rentetan ke rentetan yang lain. Dalam bahasa C, ia diisytiharkan dalam fail pengepala "string.h", manakala dalam bahasa C++, ia diisytiharkan dalam fail pengepala cstring. Ia mengembalikan penunjuk ke destinasi. Ini ialah sintaks strcpy() dalam bahasa C, char*strcpy(char*dest,constchar*src); Ia menyalin keseluruhan rentetan ke dalam rentetan sasaran. Ia menggantikan keseluruhan rentetan dan bukannya menambahkannya. Ia tidak mengubah rentetan sumber. Berikut ialah contoh strcpy() dalam bahasa C: Contoh Demo Dalam Talian#in

Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Apr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Program C/C++ untuk mengira bilangan sifar mengekor dalam pemfaktoran nombor Program C/C++ untuk mengira bilangan sifar mengekor dalam pemfaktoran nombor Aug 29, 2023 pm 12:29 PM

Di sini kita akan melihat cara mengira bilangan sifar mengekor dalam hasil pemfaktoran sebarang nombor. Oleh itu, jika n=5, maka 5! =120. Hanya ada satu di belakang 0. Untuk 20!, ia akan menjadi 4 sifar sebagai 20!=2432902008176640000. Cara paling mudah ialah mengira faktorial dan mengira 0. Tetapi untuk nilai n yang lebih besar, pendekatan ini gagal. Jadi kita akan mengambil pendekatan lain. Jika faktor perdana ialah 2 dan 5, maka sifar tertinggal akan muncul. Jika kita mengira 2 dan 5, kita boleh mendapatkan hasilnya. Untuk melakukan ini, kami akan mengikuti peraturan ini. Mengekori 0 = Mengira algoritma untuk 5 dalam faktorial (n) kiraan faktor perdanaTrailingZeros(n)mula &

See all articles