Định nghĩa mà bạn đã trích dẫn ở trên là quá chung chung để một người mới bắt đầu có thể hiểu hoàn toàn và vì vậy hãy để tôi đơn giản hóa nó thành một cái gì đó mà chúng ta thấy thực tế.
Trình biên dịch: là một thuật ngữ chung để mô tả một chương trình lấy mã nguồn được viết bằng một ngôn ngữ và tạo ra một (hoặc nhiều) tệp đầu ra bằng một số ngôn ngữ khác. Trong thực tế, chúng tôi chủ yếu sử dụng thuật ngữ này để mô tả một trình biên dịch như gcc lấy mã C làm đầu vào và tạo ra tệp thực thi nhị phân (mã máy) làm đầu ra.
Transpilers còn được gọi là trình biên dịch từ nguồn sang nguồn. Vì vậy, về bản chất chúng là một tập hợp con của các trình biên dịch lấy một tệp mã nguồn và chuyển đổi nó sang một tệp mã nguồn khác bằng một số ngôn ngữ khác hoặc một phiên bản khác của cùng một ngôn ngữ. Con người nói chung là dễ hiểu. Đầu ra này vẫn phải thông qua trình biên dịch hoặc trình thông dịch để có thể chạy trên máy.
Một số ví dụ về transpilers:
- Emscripten : Chuyển C / C ++ sang JavaScript
- Babel : Chuyển mã ES6 + sang ES5 (ES6 và ES5 là các phiên bản hoặc thế hệ khác nhau của ngôn ngữ JavaScript)
Bây giờ, chúng có nghĩa là gì bởi "mức độ trừu tượng tương tự": Như tôi đã nói nó biên dịch / chuyển đổi sang một tệp nguồn, người ta có thể tranh luận rằng hợp ngữ cũng là một tệp nguồn và do đó gcc cũng là một trình chuyển tiếp. Vì vậy, đối số này là cái mà mức trừu tượng tương tự này làm mất tác dụng.
Khái niệm phân loại ngôn ngữ thành cấp thấp hơn, trung bình và cao hơn dựa trên mức độ trừu tượng mà chúng cung cấp từ hoạt động thực tế của máy móc / kiến trúc.
Các ngôn ngữ cấp thấp hơn như hợp ngữ rất gần với kiến trúc bộ xử lý, tức là có các lệnh khác nhau cho các bộ xử lý khác nhau. Trong khi C / C ++ / Java / JavaScript, hãy trừu tượng hóa tất cả những điều này để cung cấp thêm tính trừu tượng.
Vì vậy, một trình chuyển đổi biên dịch sang một ngôn ngữ gần với ngôn ngữ bạn bắt đầu hơn về mặt trừu tượng này (hoặc gần hơn với cấp độ của ngôn ngữ đó trong bậc thang ngôn ngữ cấp thấp hơn trung bình cao hơn).
Hi vọng điêu nay co ich!