openplanning

Mục lục

Trình chuyển đổi mã nguồn (Transpiler) là gì?

Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

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, TypeScriptDart,.. 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.
  • TODO Link?
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""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.
  • TODO Link?