Definisi yang Anda kutip di atas terlalu umum untuk dipahami sepenuhnya oleh pemula, jadi izinkan saya menyederhanakannya menjadi sesuatu yang kita lihat secara praktis.
Compiler: adalah istilah umum untuk mendeskripsikan program yang mengambil kode sumber yang ditulis dalam satu bahasa dan menghasilkan (atau banyak) file output dalam beberapa bahasa lain. Dalam prakteknya kita kebanyakan menggunakan istilah ini untuk mendeskripsikan kompiler seperti gcc yang mengambil kode C sebagai masukan dan menghasilkan biner yang dapat dieksekusi (kode mesin) sebagai keluaran.
Transpiler juga dikenal sebagai kompiler sumber-ke-sumber. Jadi pada dasarnya mereka adalah bagian dari kompiler yang mengambil file kode sumber dan mengubahnya menjadi file kode sumber lain dalam beberapa bahasa lain atau versi berbeda dari bahasa yang sama. Ouput umumnya dapat dimengerti oleh manusia. Output ini masih harus melalui compiler atau interpreter agar dapat dijalankan di mesin.
Beberapa contoh transpiler:
- Menerapkan : Transpiles C / C ++ ke JavaScript
- Babel : Transpiles kode ES6 + ke ES5 (ES6 dan ES5 adalah versi atau generasi bahasa JavaScript yang berbeda)
Sekarang, apa yang mereka maksud dengan "tingkat abstraksi yang serupa": Seperti yang saya katakan itu mengkompilasi / transpiles ke file sumber, orang dapat berpendapat bahwa bahasa assembly juga merupakan file sumber dan dengan demikian gcc juga merupakan transpiler. Jadi, argumen inilah yang serupa dengan tingkat abstraksi yang kosong.
Gagasan untuk mengkategorikan bahasa ke tingkat bawah, menengah, dan atas didasarkan pada tingkat abstraksi yang mereka sediakan dari kerja aktual mesin / arsitektur.
Bahasa tingkat bawah seperti assembly sangat mirip dengan arsitektur prosesor, misalnya memiliki instruksi berbeda untuk prosesor yang berbeda. Sementara C / C ++ / Java / JavaScript, abstrak semua ini menyediakan lebih banyak abstraksi.
Jadi, transpiler mengkompilasi ke bahasa yang lebih dekat dengan bahasa yang Anda gunakan dalam abstraksi ini (atau lebih dekat ke level bahasa tersebut di tangga bahasa level bawah-menengah-atas).
Semoga ini membantu!