Trình chuyển đổi mã nguồn (Transpiler) là gì?
1. Transpiler
Trong khoa học lập trình, Transpiler là một thuật ngữ chỉ các công cụ đọc mã nguồn được viết bằng một ngôn ngữ lập trình và tạo ra mã tương đương của một ngôn ngữ khác. Nó cũng thường được gọi nó là "trình chuyển đổi nguồn thành nguồn" (source-to-source converter).
Thuật ngữ Transpiler bắt nguồn từ việc ra đời của các ngôn ngữ như CoffeeScript, TypeScript và Dart,.. các ngôn ngữ này có cú pháp chặt chẽ và kiểu dữ liệu rõ ràng, có thể chuyển đổi sang JavaScript bằng các Transpiler được tích hợp sẵn. Các ngôn ngữ bạn viết và chuyển tiếp sang JavaScript thường được gọi là các ngôn ngữ "nhắm mục tiêu JavaScript" - mục đích của chúng là giúp các lập trình viên dễ dàng hơn trong việc phát triển, quản lý và duy trì dự án, đặc biệt là các dự án lớn.
Hiện nay, các lập trình viên ngày càng chuyển sang viết mã bằng các ngôn ngữ "nhắm mục tiêu JavaScript" bởi vì các công cụ viết mã nguồn hỗ trợ tốt hơn cho các ngôn ngữ này. Như bạn biết, mức độ hỗ trợ của các công cụ viết mã nguồn cho các lập trình viên trong quá trình viết code phụ thuộc vào sự chặt chẽ của cú pháp ngôn ngữ và sự rõ ràng của các kiểu dữ liệu.
Hiệu suất cũng là một trong các lý do để sử dụng Transpiler. Ví dụ: các phần quan trọng của cơ sở mã Python có thể được chuyển đổi sang Fortran và sau đó được gọi từ Python, nguyên nhân của điều này là Fortran có trình biên dịch (compiler) tốt hơn, có thể tạo ra mã tối ưu hơn.
Một vài công cụ Transpiler được tạo ra để chuyển đổi mã được viết trên một ngôn ngữ thành mã của chính ngôn ngữ đó, điều này có vẻ lạ. Các công cụ này thường chuyển đổi mã được viết với cú pháp cũ thành mã với cú pháp mới (ngắn gọn và hiện đại hơn), đôi khi ngược lại, Babel là một trường hợp như thế.
Như bạn đã biết, có rất nhiều các ứng dụng JavaScript được viết để chạy trên trình duyệt. Các trình duyệt được tích hợp sẵn một bộ máy phân tích và thực thi JavaScript. Tuy nhiên, trình duyệt là một chương trình được cài đặt tại máy tính hoặc thiết bị của người dùng, và không phải bất kỳ người dùng nào cũng thường xuyên cập nhập phiên bản mới cho trình duyệt của họ. Nếu bạn viết một ứng dụng với cú pháp JavaScript mới nó sẽ không thể hoạt động trên các trình duyệt cũ. Bạn không thể yêu cầu tất cả các người dùng phải cập nhập trình duyệt để truy cập vào ứng dụng (hoặc website) của bạn. Vì vậy, trong tình huống này bạn cần tới một công cụ như Babel.
Cú pháp JavaScript ES5 đã được công bố năm 2009, hiện nay hầu hết người dùng đang sử dụng các trình duyệt hỗ trợ phiên bản JavaScript này. Trong khi đó, cú pháp JavaScript ES6 chỉ mới được công bố năm 2015, vì vậy vẫn còn một lượng đáng kể người dùng vẫn sử dụng các trình duyệt cũ không hỗ trợ nó. Các lập trình viên có thể viết mã ứng dụng của họ với cú pháp JavaScript mới nhất. Sau khi hoàn thành, nó cần được chuyển đổi thành JavaScript ES5 bằng công cụ Babel trước khi triển khai để sử dụng.
- Babel la gi?
Các Transpiler đôi khi cũng bao gồm các Polyfill. Polyfill là một đoạn code nhỏ được tạo ra để mô phỏng một API có trong ngôn ngữ nguồn, nhưng không có trong ngôn ngữ đích. Chẳng hạn, bạn sử dụng ES6 để viết một ứng dụng và sử dụng một hàm "X" có sẵn trong ES6 nhưng không có trong ES5, vì vậy bạn cần một đoạn mã ES5 nhỏ để mô phỏng hàm "X" và có tính năng tương đương.
2. Compiler
Hãy chú ý tới sự khác biệt giữa hai thuật ngữ "Transpiler" và "Compiler". Compiler (trình biên dịch) được sử dụng để chuyển đổi mã nguồn viết trên ngôn ngữ lập trình cấp cao (do con người viết) thành mã nguồn của ngôn ngữ lập trình cấp thấp (mã máy) để tạo ra chương trình thực thi.
- Compiler
Các hướng dẫn lập trình Dart
- Kiểu dữ liệu Boolean trong Dart
- Hướng dẫn và ví dụ hàm trong Dart
- Hướng dẫn và ví dụ Dart Closures
- Interface trong Dart
- Hướng dẫn và ví dụ phương thức trong Dart
- Constructor trong Dart
- Property trong Dart
- Toán tử chấm chấm (..) trong Dart
- Hướng dẫn và ví dụ Dart Generics
- Lập trình Dart với công cụ trực tuyến DartPad
- Cài đặt Dart SDK trên Windows
- Cài đặt Visual Studio Code trên Windows
- Cài đặt Dart Code Extension cho Visual Studio Code
- Cài đặt Dart Plugin cho Android Studio
- Chạy ví dụ Dart đầu tiên của bạn trong Visual Studio Code
- Chạy ví dụ Dart đầu tiên của bạn trong Android Studio
- Dart JSON với thư viện dart:convert
- Hướng dẫn và ví dụ Dart List
- Biến (Variable) trong ngôn ngữ Dart
- Hướng dẫn và ví dụ Dart Map
- Vòng lặp trong Dart
- Xử lý Dart JSON với gói dart_json_mapper
- Trình chuyển đổi mã nguồn (Transpiler) là gì?
- Phân tích XML trong Dart
- Hướng dẫn và ví dụ Dart http
- Hướng dẫn và ví dụ Dart Future
- Các phương thức mở rộng (Extension) trong Dart
- Mixins trong Dart
- Bài thực hành Dart phân tích JSON với gói dart:convert
- Bài thực hành Dart http CRUD
- Từ khoá part và part of trong Dart
- Hướng dẫn và ví dụ Dart Dio
Show More
Các hướng dẫn TypeScript
- Chạy ví dụ TypeScript đầu tiên của bạn trong Visual Studio Code
- Không gian tên (Namespace) trong TypeScript
- Module trong TypeScript
- Toán tử typeof trong TypeScript
- Biến (Variable) trong TypeScript
- Vòng lặp trong TypeScript
- Cài đặt TypeScript trên Windows
- Hướng dẫn và ví dụ hàm trong TypeScript
- Tuples trong TypeScript
- Interface trong TypeScript
- Mảng (Array) trong TypeScript
- Toán tử instanceof trong TypeScript
- Phương thức trong TypeScript
- Hướng dẫn và ví dụ TypeScript Closures
- Constructor trong TypeScript
- Property trong TypeScript
- Phân tích JSON trong TypeScript
- Phân tích JSON trong TypeScript với thư viện json2typescript
- Trình chuyển đổi mã nguồn (Transpiler) là gì?
Show More