La definición que ha citado anteriormente es demasiado general para que un principiante la entienda por completo, así que déjeme simplificarla a algo que vemos en la práctica.
Compilador: es un término general para describir un programa que toma el código fuente escrito en un idioma y produce un archivo de salida (o muchos) en otro idioma. En la práctica, usamos principalmente este término para describir un compilador como gcc que toma código C como entrada y produce un ejecutable binario (código máquina) como salida.
Los transpiladores también se conocen como compiladores de fuente a fuente. Entonces, en esencia, son un subconjunto de compiladores que toman un archivo de código fuente y lo convierten en otro archivo de código fuente en algún otro idioma o una versión diferente del mismo idioma. El resultado es generalmente comprensible para un humano. Esta salida aún tiene que pasar por un compilador o intérprete para poder ejecutarse en la máquina.
Algunos ejemplos de transpiladores:
- Emscripten : Transpiles C / C ++ a JavaScript
- Babel : transpila el código ES6 + a ES5 (ES6 y ES5 son versiones o generaciones diferentes del lenguaje JavaScript)
Ahora, ¿qué quieren decir con "nivel similar de abstracción"? Como dije que compila / transpila a un archivo fuente, se puede argumentar que el lenguaje ensamblador también es un archivo fuente y por lo tanto gcc también es un transpilador. Entonces, este argumento es lo que este nivel similar de abstracción anula.
La noción de categorizar los lenguajes en niveles bajo, medio y superior se basa en el nivel de abstracción que proporcionan del funcionamiento real de la máquina / arquitectura.
Los lenguajes de nivel inferior como el ensamblaje están muy cerca de la arquitectura del procesador, es decir, tienen diferentes instrucciones para diferentes procesadores. Mientras que C / C ++ / Java / JavaScript, abstrae todo esto proporcionando más abstracción.
Entonces, un transpilador compila en un idioma que está más cerca del idioma con el que comenzó en los términos de esta abstracción (o está más cerca del nivel de ese idioma en la escala de idiomas de nivel medio-bajo-alto).
¡Espero que esto ayude!