Introduccion
Lenguajes de alto nivel y lenguajes de bajo nivel

Los programadores escriben instrucciones en diversos lenguajes de programación. La computadora puede entender directamente algunos de ellos, pero otros requieren pasos de traducción intermedios. Hoy día se utilizan cientos de lenguajes de computadora, los cuales pueden dividirse en tres tipos generales:

1. Lenguaje máquina

Una computadora sólo puede entender el lenguaje máquina. El  lenguaje de máquina ordena a la computadora realizar sus operaciones fundamentales una por una. Dicho lenguaje es difícil de usar para lar persona porque trabajar con números no es muy cómodo además estos números están en formato binario.

2. Lenguajes de bajo nivel (ensamblador)

Para facilitar y agilizar su labor a los programadores, se buscaron nuevos lenguajes. El lenguaje ensamblador consiste en pequeñas abreviaturas de palabras en ingles. Se crearon los programar traductores para convertir los programas escritos en lenguaje ensamblador a lenguaje máquina a velocidades de computadora. Estos lenguajes aun requerían muchas instrucciones para realizar simples operaciones.

3. Lenguajes de alto nivel

Para acelerar, aún más, el proceso de programación se desarrollan los lenguajes de alto nivel en los que se podía escribir un enunciado para realizar tareas sustanciales. Los lenguajes de alto nivel permiten a los programadores escribir instrucciones que asemejan el ingles cotidiano y contiene notaciones matemáticas de uso común.

Ambientes de Programación

Los programadores necesitan un ambiente de programación, es decir, una lugar en donde puedan plasmar sus ideas, un lugar en donde puedan escribir sus programas, en otras palabras donde puedan programar. Los ambientes de programación vienen a ser los diferentes leguajes de programación que existen, son muy variados, con muchas cualidades propias pero se puede realizar una misma tarea, muchas veces, con cualquiera de ellos. Existen lenguajes de programación de Alto y Bajo nivel; entre los más conocidos de Alto nivel podemos mencionar a C, C++, JAVA, Fortran, T. Pascal, etc.

Traductor de lenguajes de programación

Los traductores son programas que traducen los programas en código fuente, escritos en lenguajes de alto nivel, a programas escritos en lenguaje máquina. Los traductores pueden ser de dos tipos: compiladores e interpretes

Compilador

Un compilador es un programa que lee el código escrito en un lenguaje (lenguaje origen), y lo traduce o traduce en un programa equivalente escrito en otro lenguaje (lenguaje objetivo). Como una parte fundamental de este proceso de traducción, el compilador le hace notar al usuario la presencia de errores en el código fuente del programa. Vea la figura de abajo.

El C++ es un lenguaje que utiliza un compilador y su trabajo es el de llevar el código fuente escrito en C++ a un programa escrito en lenguaje máquina.

Entrando en más detalle un programa en código fuente es compilado obteniendo un archivo parcial (un objeto) que tiene extensión obj luego  el compilador invoca al linker que convierte al archivo objeto en un ejecutable con extensión exe que como ya sabemos es un archivo que esta en formato binario (ceros y unos) y que puede funcionar por si solo.

Además el compilador de C++ al realizar su tarea realiza una comprobación de errores en el programa, es decir, revisa que todo este en orden por ejemplo variables y funciones bien definidas, revisa todo lo referente a cuestiones sintácticas, esta fuera del alcance del compilador que por ejemplo el algoritmo utilizado en el problema funcione bien.

La siguiente figura muestra los pasos para tener un programa ejecutable desde el código fuente:

Interprete

Los interpretes en lugar de producir un Lenguaje objetivo, como en los compiladores, lo que hacen es realizar la operación que debería realizar el Lenguaje origen. Un interprete lee el código como esta escrito y luego lo convierte en acciones, es decir, lo ejecuta en ese instante.

Existen lenguajes que utilizan un Interprete, como por ejemplo JAVA, y su interprete traduce en el instante mismo de lectura, el código en lenguaje máquina para que pueda ser ejecutado.

La siguiente figura muestra el funcionamiento de un interprete.

Diferencia entre  Compilador e Interprete

Los compiladores difieren de los interpretes en varios aspectos:
Un programa que ha sido compilado puede correr por si solo, pues en el proceso de compilación se lo transformo en otro lenguaje (lenguaje máquina).
Un interprete traduce el programa cuando lo lee, convirtiendo el código del programa directamente en acciones.
La ventaja del interprete es que dado cualquier programa se puede interpretarlo en cualquier plataforma (sistema operativo), en cambio el archivo generado por el compilador solo funciona en la plataforma en donde se lo ha creado.
Pero por otro lado un archivo compilado puede ser distribuido fácilmente conociendo la plataforma, mientras que un archivo interpretado no funciona si no se tiene el interprete.
Hablando de la velocidad de ejecución una archivo compilado es de 10 a 20 veces más rápido que un archivo interpretado.