Đang thực hiện
Tên đăng nhập
Mật khẩu
 
Hoặc đăng nhập bằng:
Nhập lại mật khẩu

Trang chủ Tin tổng hợp
Tin tổng hợp

Sự khác nhau của trình thông dịch (interpreter) và biên dịch (compiler)

Cập nhật: 30/08/2018 Lượt xem: 246
JavaScript lúc mới ra đời khá chậm, nhưng sau đó nhanh hơn nhờ một thứ gọi là just-in-time (JIT). Nhưng JIT hoạt động như thế nào? Trước tiên tìm hiểu về điều này, chúng ta cùng xem trình thông dịch và biên dịch hoạt động thế nào?
su-khac-nhau-giua-trinh-thong-dich-va-bien-dich

JavaScript lúc mới ra đời khá chậm, nhưng sau đó nhanh hơn nhờ một thứ gọi là just-in-time (JIT). Nhưng JIT hoạt động như thế nào?
 

JavaScript hoạt động như thế nào trong trình duyệt


 
Khi bạn là lập trình viên và bạn thêm JavaScript vào trang của bạn, tức là bạn đang có một mục tiêu và một vấn đề.

- Mục tiêu: B
ạn muốn nói cho máy tính biết nó phải làm gì.
- Vấn đề: B
ạn và máy tính sử dụng ngôn ngữ khác nhau.

Bạn sử dụng ngôn ngữ của con người, còn máy tính sử dụng một ngôn ngữ máy. Ngay cả khi bạn không nghĩ về JavaScript hoặc các ngôn ngữ lập trình bậc cao khác như ngôn ngữ của con người, chúng là ngôn ngữ của con người. Chúng được thiết kế để con người nhận thức được, không phải thiết kế để máy hiểu. 

Vì vậy, công việc của các công cụ JavaScript là để ngôn ngữ của con người của bạn biến thành một cái gì đó máy tính có thể hiểu được.

Như trong bộ phim nổi tiếng Cuộc đổ bộ bí ấn - Arrival (2016), con người và người ngoài hành tinh không sử dụng ngôn ngữ giống nhau.
su-khac-nhau-giua-trinh-thong-dich-va-bien-dich-1

Hai nhóm có những cách suy nghĩ khác nhau về thế giới. Và họ phải sử dụng một ngôn trung gian như hình + ký tự để có thể hiểu được nhau.

Điều đó cũng đúng với con người và máy tính (tôi sẽ giải thích điều này nhiều hơn trong bài tiếp theo). 

          Vậy bản dịch diễn ra như thế nào? 


Trong lập trình, thường có hai cách dịch sang ngôn ngữ máy. Bạn có thể sử dụng một trình thông dịch (interpreter) hoặc một trình biên dịch (compiler). 

Với một trình thông dịch, bản dịch này dịch từng dòng một, ngay lập tức.

su-khac-nhau-giua-trinh-thong-dich-va-bien-dich-2

Một trình biên dịch khác với thông dịch. Nó dịch toàn bộ và sau đó mới viết xuống.

su-khac-nhau-giua-trinh-thong-dich-va-bien-dich-3
 

Có những ưu và khuyết điểm đối với mỗi cách xử lý bản dịch này.
 

Ưu điểm và khuyết điểm của trình thông dịch


Trình thông dịch nhanh chóng được thiết lập và hoạt động. Bạn không phải trải qua toàn bộ bước biên dịch đó mới có thể bắt đầu chạy mã của mình. Bạn chỉ cần bắt đầu dịch dòng đầu tiên đó và chạy nó, cứ thế.

Bởi vì điều này, một trình thông dịch có vẻ giống như một sự phù hợp tự nhiên cho JavaScript. Điều quan trọng là nhà phát triển web có thể tiếp tục và chạy mã của họ một cách nhanh chóng. 

Và đó là lý do tại sao các trình duyệt đã sử dụng trình thông dịch JavaScript ngay từ đầu. 

Nhưng việc sử dụng thông dịch khiến bạn đang chạy cùng một mã nhiều lần. Ví dụ: Nếu bạn đang ở trong vòng lặp. Sau đó, bạn phải làm thêm cùng một bản dịch và thêm và thêm nữa.


 

Ưu điểm và khuyết điểm của trình biên dịch



Trình biên dịch có sự cân bằng ngược lại. 

Phải mất thêm một chút thời gian để bắt đầu bởi vì nó phải trải qua bước biên dịch đó ngay từ đầu. Nhưng sau đó mã trong các vòng lặp sẽ chạy nhanh hơn, vì nó không cần phải lặp lại bản dịch cho mỗi lần truyền qua vòng lặp đó. 

Một sự khác biệt là trình biên dịch có nhiều thời gian hơn để xem mã và chỉnh sửa nó để nó sẽ chạy nhanh hơn. Các chỉnh sửa này được gọi là tối ưu hóa. 

Trình thông dịch thì đang thực hiện công việc của mình trong thời gian chạy, do đó, không thể mất nhiều thời gian trong giai đoạn dịch để tìm ra các tối ưu hóa này.


 
Tư vấn viên 1: Lê Thoa
Tư vấn viên 2: Thu Huyền
Tuyển sinh lập trình viên quốc tế - MMS new vision
Khóa học C&B Excel - Trần Văn Hải