Java là ngôn ngữ thông dịch hay biên dịch
Show Trình biên dịch là trình dịch chuyển đổi từ ngôn ngữ nguồn (các ngôn ngữ lập trình bậc cao) thành ngôn ngữ đối tượng (ví dự như ngôn ngữ máy). Ngược lại với trình biên dịch, trình thông dịch là một chương trình bắt chước việc thực hiện của các chương trình được viết bằng ngôn ngữ nguồn. Rõ ràng, khả năng nhận thức của con người và một thiết bị điện tử như máy tính là khác nhau. Con người có thể hiểu bất cứ điều gì thông qua các ngôn ngữ tự nhiên, nhưng một máy tính thì không thể. Máy tính cần một trình dịch để chuyển đổi các ngôn ngữ được viết ở dạng ngôn ngữ mà con người có thể đọc thành dạng ngôn ngữ mà máy tính có thể đọc. Trình biên dịch và trình thông dịch là các loại trình dịch ngôn ngữ. Vậy trình dịch ngôn ngữ là gì? Trình dịch ngôn ngữ là một phần mềm dịch các chương trình từ một ngôn ngữ nguồn ở dạng có thể đọc được bởi con người thành một chương trình tương đương bằng ngôn ngữ đối tượng. Ngôn ngữ nguồn nói chung là ngôn ngữ lập trình cấp cao và ngôn đối tượng thường là ngôn ngữ máy. Bảng so sánh
Định nghĩa trình biên dịchTrình biên dịch là một trình dịch đọc một chương trình được viết bằng ngôn ngữ cấp cao và chuyển đổi nó thành ngôn ngữ máy hoặc ngôn ngữ cấp thấp và báo cáo các lỗi có trong chương trình. Nó chuyển đổi toàn bộ mã nguồn trong một lần hoặc có thể mất nhiều lượt để làm như vậy, nhưng cuối cùng, người dùng sẽ nhận được mã được biên dịch sẵn sàng để thực thi. Trình biên dịch hoạt động theo từng giai đoạn, các giai đoạn khác nhau có thể được nhóm thành hai phần đó là:
Các giai đoạn biên dịchBây giờ hãy để chi tiết hiểu về hoạt động của từng giai đoạn.
Symbol table (bảng ký hiệu) là một cấu trúc dữ liệu quản lý các mã định danh cùng với loại dữ liệu có liên quan mà nó đang lưu trữ. Trình xử lý lỗi phát hiện, báo cáo, sửa các lỗi gặp phải giữa các giai đoạn khác nhau của trình biên dịch. Định nghĩa trình thông dịchTrình thông dịch là một thay thế để thực thi một ngôn ngữ lập trình và thực hiện công việc tương tự như một trình biên dịch. Trình thông dịch thực hiện kiểm tra từ vựng, phân tích cú pháp và kiểm tra các kiểu tương tự như trình biên dịch. Nhưng trình thông dịch xử lý cây cú pháp trực tiếp để truy cập các biểu thức và thực thi câu lệnh thay vì tạo mã trung gian. Một trình thông dịch có thể yêu cầu xử lý cùng một cây cú pháp nhiều lần, đó là lý do tại sao tốc độ sẽ đối chậm hơn so với thực hiện chương trình được biên dịch. Việc biên dịch và thông dịch kết hợp để có thể thực thi ngôn ngữ lập trình. Trong đó một trình biên dịch tạo mã ở cấp trung gian, sau đó mã được diễn giải thay vì được biên dịch thành mã máy. Sử dụng một trình thông dịch thì sẽ thuận lợi trong quá trình phát triển chương trình, trong đó phần quan trọng nhất là có thể kiểm tra việc sửa đổi chương trình một cách nhanh chóng thay vì chạy chương trình một cách hiệu quả. Tổng kếtCả trình biên dịch và trình thông dịch đều có cùng một công việc nhưng khác nhau về quy trình vận hành, Trình biên dịch lấy mã nguồn theo cách tổng hợp trong khi Trình thông dịch lấy các phần cấu thành của mã nguồn. Mặc dù cả trình biên dịch và trình thông dịch đều có những ưu điểm và nhược điểm nhất định. Với trình thông dịch thì mã nguồn có thể thực thi ở mọi nơi mà không cần phải biên dịch trước. Nhưng bù lại thì trình biên dịch sẽ tiết kiệm thời gian thực thi hơn.
Chúng ta khi nhắc đến các ngôn ngữ lập trình thường nhắc đến cụm từ biên dịch (compiled) và thông dịch (interpreted). Vậy thực sự chúng là gì? Khả năng nhận thức của con người và một thiết bị điện tử như máy tính là khác nhau. Con người có thể hiểu bất cứ điều gì thông qua các ngôn ngữ tự nhiên, nhưng một máy tính thì không thể. Máy tính cần một trình dịch để chuyển đổi các ngôn ngữ được viết ở dạng mà con người có thể đọc thành dạng mà máy tính có thể đọc. Khác biệt giữa biên dịch và thông dịchTrình biên dịch (compiler) và trình thông dịch (interpreter) là các loại trình dịch ngôn ngữ chuyển đổi các đoạn mã lập trình sang ngôn ngữ máy. Điểm khác nhau giữa biên dịch và thông dịch nằm ở quá trình chuyển đổi và thực thi.
Chính vì vậy ngôn ngữ thông dịch sẽ dễ hiện thực hơn do bỏ qua việc kiểm tra lỗi và tối ưu code thường được thực hiện trong quá trình compiled. Đồng thời hỗ trợ hoạt động đa nền tảng, mã nguồn có thể thực thi mọi nơi mọi lúc mà không cần biên dịch. Tuy nhiên nhược điểm của thông dịch là:
Ngôn ngữ biên dịch và thông dịchNgôn ngữ C++Trong ví dụ này, C++ là ngôn ngữ lập trình biên dịch, Visual Studio là trình biên dịch và Windows là hệ điều hành; quá trình đó được tóm tắt ngắn gọn như sau:
Ngôn ngữ Java Java là một ngôn ngữ thông dịch điển hình. Các bạn viết mã nguồn Java bằng Netbean trên Linux và lại nhấn… F5, chương trình sẽ được thực thi. Vậy thì trong này, Netbean là trình biên dịch, Linux là hệ điều hành.
Ngoài Java còn có 1 số NNLT thông dịch phổ biến khác như:
Thông thường, các ngôn ngữ lập trình thông dịch rất gần gũi với ngôn ngữ tự nhiên, dễ đọc, dễ hiểu, chạy trên nhiều hệ điều hành khác nhau… Nhưng mà nó… chậm lắm. Bảng so sánh
|