Javascript Là Ngôn Ngữ Thông Dịch Nhưng Từ Khi Có Nodejs Nó Thành ... Trang chủ » Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch » Javascript Là Ngôn Ngữ Thông Dịch Nhưng Từ Khi Có Nodejs Nó Thành ... Có thể bạn quan tâm Javascript Lịch Javascript Lược Sử Giang Hồ Javascript Mảng 2 Chiều Javascript Ngày Tháng Năm Javascript Nhập Ngày Tháng Năm Javascript là ngôn ngữ thông dịch nhưng từ khi có nodejs nó thành biên dịch? programming javascript nodejs Huy_nguyen_dang (Huy Nguyen Dang) July 13, 2020, 10:43am #1 mình có đọc là javascript là ngôn ngữ thông dịch nhưng từ khi có nodejs nó thành biên dịch. ai hiểu dõ về cái này có thể giải thích cho mình được không 1 Like kisuluoibieng (Tên Gì Cũng Được) July 13, 2020, 10:13am #2 Huy_nguyen_dang: nhưng từ khi có nodejs nó thành biên dịch bạn chỉ cho mình thấy lý do bạn gọi nó là biên dịch được không? 3 Likes HR16 (Gà Coder) July 13, 2020, 10:52am #3 Bản chất của Node.js vừa là trình biên dịch, vừa là trình thông dịch nhưng dạng biên dịch của nó khá đặc biệt, nó được gọi là Biên dịch tại chỗ (Just-in-time compilation) giống Java, mà tất nhiên Node.js không tạo ra từ Java, nó được tạo ra dựa trên V8 Engine của Chrome (đây là phần mềm dùng để biên dịch code Javascript trên Chrome nói riêng và các trình duyệt nhân Chronium nói chung). Mà V8 Engine lại được tạo ra bằng C và C++ . Ngoài ra, Node.js là một Javascript runtime được xây dựng dựa trên V8 Engine, chính trang chủ của nó đã ghi rất rõ ràng. 5 Likes hungaya (Hung) July 13, 2020, 1:28pm #4 Từ độ dài câu trả lời và cách hỏi hời hợt của bạn, mình chỉ đưa hint, còn lại bạn nên tự search Google. JavaScript trên V8 là biên dịch, không có thông dịch, và runtime có 2 loại runtime khác nhau: 1 JS runtime chạy lúc bắt đầu Event Loop, các JS runtime phát sinh chạy trong các lần Event Loop sau. 5 Likes HR16 (Gà Coder) July 13, 2020, 2:31pm #5 @hungsteve Và có một điếm vô lí (chắc thế?) là Javascript là một ngôn ngữ thông dịch mặc dù V8 và SpiderMoney là trình biên dịch, nó biên dịch Javascript thành bytecode, mà khoan bytecode hình như được dùng trong trình thông dịch thì phải và nó không phải là mã máy ? Dù sao thì cơ chế hoạt động của Javascript trên V8 hay SpiderMonkey cũng khá giống Java. Và cách Node.js chạy code Javascript lại theo hướng thông dịch? Mà dù sao thì có trang này có câu hỏi liên quan đến chủ đề của topic này https://www.quora.com/Is-Node-js-compiled-or-interpreted 4 Likes HR16 (Gà Coder) July 13, 2020, 2:47pm #6 Tựu chung lại thế này, ai bảo Javascript là ngôn ngữ biên dịch vậy ? Nó vẫn là ngôn ngữ thông dịch, Wikipedia có dùng từ “theo phiên bản hiện hành” rồi: JavaScript JavaScript, theo phiên bản hiện hành, là một ngôn ngữ lập trình thông dịch được phát triển từ các ý niệm nguyên mẫu. Ngôn ngữ này được dùng rộng rãi cho các trang web (phía người dùng) cũng như phía máy chủ (với Nodejs). Nó vốn được phát triển bởi Brendan Eich tại Hãng truyền thông Netscape với cái tên đầu tiên Mocha, rồi sau đó đổi tên thành LiveScript, và cuối cùng thành JavaScript. Giống Java, JavaScript có cú pháp tương tự C, nhưng nó gần với Self hơn Java. .js là phần mở rộng thường được dùn... Đúng là JavaScript được biên dịch trên V8, SpiderMonkey,…nhưng không phải là biên dịch thành mã máy mà là biên dịch thành bytecode, có lẽ vì thế nó vẫn được gọi là ngôn ngữ thông dịch, ngoài cái lí do cái khái niệm đó xuất hiện từ lâu rồi và nó là một ngôn ngữ kịch bản ra (để ý chữ “script” trong Javascript). Còn Node.js là một Javascript runtime dựa trên V8, nó vừa là trình biên dịch, vừa là trình thông dịch. Còn muốn tìm hiểu kĩ hơn thì bạn nên lên Google tìm như @hungaya nói. 4 Likes hungaya (Hung) July 13, 2020, 3:20pm #7 Mô hình chia thành Front Compiler và Back Compiler có từ lâu rồi, Front Compiler nhận input là source code, compile/interpret thành output là intermediate code, Back Compiler nhận input là intermediate code, compile/interpret thành output là destination code. Các compiler có 2 pha front và back trước đây như: LLVM (Clang) của C++, .NET của C#, JVM của Java. V8 cũng là compiler có 2 pha, front compiler là Ignition, back compiler là TurboFan, intermediate code thì gọi là bytecode. Còn nhập nhằng biên dịch hay thông dịch thường đến từ back compiler, hay TurboFan của V8 engine. TurboFan dựa trên lịch sử runtime trước đó mà chọn khối bytecode mà compile ra machine code. Do các bước compile 1 khối bytecode tương tự như quá trình compile toàn bộ mã nguồn 1 file, khác với interpreter chỉ cần phân tích 1 câu lệnh (không cần kiểm tra ngữ nghĩa giữa biến, biểu thức, hàm), nên đa số vẫn xem back compiler, hay TurboFan, là compiler hơn là interpreter. Với 2 phần front-end và back-end đều là compiler nên tựu chung nó vẫn là compiler, tức là biên dịch. Về lý do việc nêu lên 2 cái runtime trước và sau Event Loop, là để cho thấy có 1 phần JavaScript sẽ trực tiếp biên dịch ra mã máy, không dựa vào optimization plan nào cả, hay không phụ thuộc vào TurboFan. 7 Likes DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch Javascript - Ngôn Ngữ Biên Dịch Hay Thông Dịch - Viblo Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch? - Blog | Got It AI Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch - Trắc Nghiệm Online Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch - Campus Study Lab Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch? - Săn Dev Chủ Đề Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch ... Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch - Darkedeneurope Trắc Nghiệm Về Ngôn Ngữ JavaScript Javascript Là Ngôn Ngữ Biên Dịch Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch - .vn Chủ đề Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch - VietAds Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch | 7scv Javascript Là Ngôn Ngữ Thông Dịch Hay Biên Dịch - LamSon Education Javascript Là Ngôn Ngữ Thông Dịch Và Biên Dịch Và Biên Dịch?