Los lenguajes de alto nivel necesitan de programas traductores para poder ser ejecutados. Hay dos tipos de traductores: los compiladores y los intérpretes. Los compiladores Los compiladores traducen los programas fuente a programas objeto o compilados. Estos programas objeto, en ensamblador, necesitan posteriormente de un traductor de ensamblador o linkador para ser traducidos a lenguaje máquina. El programa resultante de la compilación de un programa fuente se llama programa objeto. Para poder compilar un programa se necesita esa aplicación y el kit de desarrollo de aplicaciones. Los intérpretes Los intérpretes hacen que los programas fuente sean traducidos y ejecutados directamente por el ordenador, sin necesidad de ser compilados. La mayor parte de los interpretes se emplean para trabajar en entornos integrados de desarrollo. Un ejemplo puede ser Visual Basic. No se generan ejecutables, sino que son ejecutados desde la propia aplicación. Para él existe un kit de desarrollo que permite traducir los programas interpretados a compilados, pudiéndose posteriormente ejecutar desde el sistema operativo sin necesidad del entrono de desarrollo. Access también funciona como un entorno de desarrollo que genera bases de datos que puden ser interpretadas y ejecutadas. El uso de entornos de desarrollo permite la creación y una rápida depuración de programas de modo previo a su compilación. Para ejecutar un programa en Visual Basic, desde el entrono de desarrollo se selecciona el objeto a ejecutar y en la barra de menús se selleciona ejecutar. Después se pulsa sobre iniciar o iniciar con compilación completa. Aparecerá en pantalla el resultado de la ejecución del fichero seleccionado. También puede ejecutarse un programa pulsando sobre el botón ejecutar de la barra de herramientas. La evolución de los lenguajes de programación se ha realizado en cuatro generaciones. Las dos primeras se corresponden de forma aproximada con las dos primeras generaciones de ordenadores. En la primera aparece el lenguaje máquina y en la segunda los lenguajes ensambladores. En la tercera aparecen FORTRAN, COBOL, ALGOL, LISP, PASCAL, lenguaje C y los lenguajes estructurados. La cuarta generación está formada por los Sistemas de Gestión de Bases de Datos (SGBD): DB2, Oracle, Sybase SQL Server y en microinfomática Acces, FoxPro, Dbase y Visual Basic, aunque este último no es un SGBD. Ensambladores Son lenguajes en los que a cada instrucción en código fuente le corresponde una instrucción en código máquina. Poseen relativamente pocas instrucciones y no utilizan direcciones físicas de memoria, sino que permiten el uso de direcciones simbólicas y de comentarios. Para ser ejecutado un programa escrito con lenguaje ensamblador necesita ser traducido, utilizándose para ello un "ensamblador" que genera código máquina y elimina los comentarios. El ensamblador genera una tabla que mantiene referencias entre las direcciones simbólicas de datos con las direcciones físicas. En algunos lenguajes ensambladores, que poseen código extendido, a determinadas instrucciones les corresponden varias instrucciones de código máquina. Lenguaje máquina El lenguaje máquina depende de la arquitectura del ordenador, siendo interpretado directamente por el ordenador sin ninguna modificación. Por las dos razones antes expuestas, su velocidad de ejecución es muy alta. La codificación de los programas en lenguaje máquina se hace en binario, octal o hexadecimal, por lo que no es fácilmente legible por el programador. Los programas en lenguaje máquina utilizan direcciones físicas de memoria para almacenar datos. Son interpretables por ordenadores con el mismo tipo de arquitectura. Por ejemplo, un programa escrito para una estación de trabajo de Digital no puede ser interpretado correctamente por una estación de trabajo de IBM o por un ordenador personal, y viceversa. En cambio, un programa escrito en lenguaje máquina para un ordenador personal con procesador 286 puede ser inerpretado por un 486, ya que ambos procesadores comparten las mismas instrucciones. Este tipo de lenguaje ejecuta multitud de operaciones sencillas rápidamente. Por ejemplo, algunos programas no tienen instrucciones para la multiplicación, por lo que han de ejecutarlas como una sucesión de sumas, es decir, almacenando valores intermedios en memoria. Fuente: http://www.galeon.com/kronen/lenguajes.htm