Un compilador es un traductor que transforma el lenguaje fuente (lenguaje de alto nivel) en lenguaje objeto (lenguaje máquina). A diferencia de un compilador, un intérprete es un programa que imita la ejecución de programas escritos en un lenguaje fuente. Otra diferencia entre el compilador y el intérprete es que el compilador convierte todo el programa de una vez, por otro lado, el intérprete convierte el programa tomando una sola línea a la vez.
Un compilador convierte todo el código fuente de una vez o puede tomar varias pasadas para hacerlo, pero finalmente, el usuario obtiene el código compilado que está listo para ejecutarse.
El intérprete es una alternativa para implementar un lenguaje de programación y hace el mismo trabajo que un compilador.
El código intermedio o el código de destino se genera en el caso de un compilador. En contra de intérprete no crea código intermedio.
Un compilador es comparativamente más rápido que el intérprete, ya que el compilador toma todo el programa de una vez, mientras que los intérpretes compilan cada línea de código después de la otra.
El compilador requiere más memoria que el intérprete debido a la generación de código objeto.
En el compilador cuando ocurre un error en el programa se detiene su traducción y después de eliminar el error todo el programa se traduce nuevamente. Por el contrario, cuando se produce un error en el intérprete, impide su traducción y, después de eliminar el error, se reanuda la traducción.
En un compilador, el proceso requiere dos pasos en los que primero se traduce el código fuente al programa de destino y luego se ejecuta. Mientras que el intérprete es un proceso de un solo paso en el que el código fuente se compila y ejecuta al mismo tiempo.
El compilador se utiliza en lenguajes de programación como C, C ++, C #, Scala, etc. Por otro lado, el intérprete se emplea en lenguajes como PHP, Ruby, Python, etc.
El compilador y el intérprete están destinados a hacer el mismo trabajo pero difieren en el procedimiento operativo, el compilador toma el código fuente de forma agregada, mientras que el intérprete toma las partes constituyentes del código fuente, es decir, declaración por declaración.