Ngôn ngữ lập trình thường rơi vào một trong hai loại ngôn ngữ - ngôn ngữ được biên dịch hoặc ngôn ngữ được dịch. Tuy nhiên, sự khác biệt không nằm ở ngôn ngữ; đó là trong việc thực hiện. Không sai khi nói rằng cả hai đều là thuộc tính của việc thực hiện ngôn ngữ, nhưng không phải là thuộc tính của chính ngôn ngữ đó. Thực hiện một ngôn ngữ lập trình có nghĩa là thu hẹp khoảng cách từ tư duy cấp cao của lập trình viên đến các số 0 và số 0 của máy. Nếu được thực hiện hiệu quả, các lập trình viên có thể tập trung vào các vấn đề thực tế hơn là vào các chi tiết của máy móc. Vì vậy, một ngôn ngữ lập trình có thể được biên dịch hoặc giải thích dựa trên việc thực hiện.
Vâng, cả hai loại ngôn ngữ lập trình đều có thế mạnh của chúng. Một số ngôn ngữ yêu cầu tất cả mã của bạn được biên dịch trước khi bất kỳ mã nào có thể được thực thi. Các ngôn ngữ khác diễn giải mỗi lệnh tại thời điểm mã được thực thi. Trong thực tế, các ngôn ngữ được biên dịch thường được biên dịch bởi một lập trình viên trên máy tính của lập trình viên; khi lập trình viên chia sẻ phần mềm, anh ấy / cô ấy chia sẻ 0 và 1 đã biên dịch, nhưng không chia sẻ mã nguồn. Tuy nhiên, với ngôn ngữ được dịch, mã được lưu theo cùng định dạng bạn đã nhập và phải được dịch vào thời gian chạy. Chúng ta hãy xem một so sánh chi tiết giữa các ngôn ngữ được biên dịch và giải thích.
Máy tính chỉ có khả năng thực thi ngôn ngữ máy, là ngôn ngữ của bộ xử lý trung tâm (CPU) và rất đơn giản. Mục tiêu của bất kỳ việc thực hiện ngôn ngữ lập trình nào là dịch một chương trình nguồn sang ngôn ngữ máy để CPU có thể được thực thi. Tất cả các cài đặt ngôn ngữ dịch một chương trình nguồn thành một số biểu diễn trung gian trước khi dịch biểu diễn trung gian sang ngôn ngữ máy. Phương pháp trực tiếp nhất để dịch chương trình sang ngôn ngữ máy được gọi là biên dịch. Một chương trình được viết bằng ngôn ngữ được biên dịch phải được chuyển đổi sang định dạng khác trước khi chạy. Mã nguồn phải được chuyển đổi thành các hướng dẫn dễ đọc của máy trước khi thực hiện. Nói tóm lại, các ngôn ngữ có triển khai thường là trình biên dịch và không phải trình thông dịch được gọi là ngôn ngữ được biên dịch.
Thông dịch viên là một chương trình được viết bằng một số ngôn ngữ khác và được biên dịch thành ngôn ngữ có thể đọc được bằng máy. Bản thân trình thông dịch là chương trình ngôn ngữ máy và được viết để đọc các chương trình nguồn từ ngôn ngữ được thông dịch và giải thích chúng. Một ngôn ngữ được giải thích, ngược lại, không biên dịch mã nguồn thành ngôn ngữ máy trước khi chạy chương trình. Nó chỉ đơn thuần là giải thích mã trên bay. Vì vậy, bạn không nhận được lợi ích hoặc nhược điểm của lỗi biên dịch. Các ngôn ngữ được giải thích yêu cầu một phần mềm gọi là trình thông dịch, lấy mã nguồn và thực thi một lệnh tại một thời điểm. Khi bạn chạy một chương trình nguồn được thông dịch, bạn thực sự chạy trình thông dịch. Trình thông dịch là chương trình ngôn ngữ máy thực thi tất cả các chương trình bạn viết bằng ngôn ngữ được thông dịch.
- Một chương trình được viết bằng ngôn ngữ được biên dịch phải được chuyển đổi sang định dạng khác trước khi chạy. Mã nguồn phải được chuyển đổi thành các hướng dẫn dễ đọc của máy trước khi thực hiện. Một ngôn ngữ được giải thích, ngược lại, không biên dịch mã nguồn thành ngôn ngữ máy trước khi chạy chương trình. Nó chỉ đơn thuần là giải thích mã trên bay. Các ngôn ngữ được giải thích yêu cầu một phần mềm gọi là trình thông dịch, lấy mã nguồn và thực thi một lệnh tại một thời điểm.
- Với các ngôn ngữ được biên dịch, có ít nhất hai bước để chuyển từ mã nguồn sang thực thi, trong khi với các ngôn ngữ được thông dịch, chỉ có một - thực thi. Một chương trình được viết bằng ngôn ngữ diễn giải không được biên dịch - nó được diễn giải bởi một chương trình khác trong khi nó chạy. Một chương trình được viết bằng ngôn ngữ được biên dịch trải qua một quá trình để thay đổi nó từ định dạng văn bản có thể đọc được của con người thành định dạng có thể đọc được bằng máy. Một chương trình được gọi là trình biên dịch thực hiện quá trình chuyển đổi này.
- Các chương trình biên dịch chạy nhanh hơn các chương trình được giải thích, nhưng các chương trình được dịch có thể được sửa đổi trong khi chương trình đang chạy. Điều này làm cho các chương trình diễn giải lý tưởng để viết phần mềm hiệu suất trực tiếp. Làm việc với các ngôn ngữ được biên dịch có thể tốt vì nhiều lỗi được tìm thấy khi mã nguồn được biên dịch. Các lỗi này, được gọi là lỗi biên dịch ngăn mã biên dịch. Ngược lại, các ngôn ngữ được dịch không được biên dịch, do đó bạn không nhận được lợi ích hoặc nhược điểm của lỗi biên dịch.
- Với các ngôn ngữ được thông dịch, tất cả các gỡ lỗi xảy ra trong thời gian chạy. Không có bước biên dịch trong đó bạn có thể bỏ qua tất cả các lỗi cú pháp trong mã của mình; thay vào đó bạn phải chạy chương trình để tìm bất kỳ lỗi nào trong đó. Điều này trở thành một vấn đề khi bạn diễn giải chương trình sửa đổi các tệp hoặc thực hiện bất kỳ thay đổi nào đối với tài nguyên vĩnh viễn. Điều này làm cho một số lỗi khó bắt hơn vì mã không cần phải biên dịch. Các ngôn ngữ được giải thích cũng thể hiện một số lo ngại về bảo mật trong môi trường trực tuyến vì mã độc có thể được thực thi giữa chừng.
Tóm lại, cả hai ngôn ngữ được biên dịch và giải thích đều có thế mạnh của chúng. Một số ngôn ngữ yêu cầu tất cả mã của bạn được biên dịch trước khi bất kỳ mã nào có thể được thực thi. Các ngôn ngữ khác diễn giải mỗi lệnh tại thời điểm mã được thực thi. Sự khác biệt chính giữa hai là có ít nhất hai bước để có được từ mã nguồn để thực thi với các ngôn ngữ được biên dịch. Tuy nhiên, với các ngôn ngữ được giải thích, chỉ có một bước - thực hiện. Các chương trình được biên dịch chạy nhanh hơn các chương trình được giải thích, nhưng các chương trình được dịch có thể được sửa đổi trong khi chương trình đang chạy.