• Asignatura: Informática
  • Autor: victorbocanegra1602
  • hace 5 años

A qué se refiere compilacion interpretacion?​

Respuestas

Respuesta dada por: theosierra
1

Respuesta: aquí está lo que buscas

creo

Explicación: Si programas habitualmente en unos pocos lenguajes, tendrás la costumbre de seguir siempre los mismos pasos para ejecutar los programas que escribas. Según el lenguaje, eso involucrará utilizar un intérprete, transformar tu código a ejecutable mediante un compilador, o incluso utilizar herramientas de automatización para pasar de un punto a otro. En este artículo nos interesa estudiar cuál es realmente la tarea que cumplen todos estos sistemas y qué los diferencia.

Por un lado, existen lenguajes y programas teóricos, es decir, que no llegan a ejecutarse en un ordenador pero también tienen su importancia, al poder razonar sobre ellos de forma lógica: el cálculo lambda de Church es un claro ejemplo. Se trata de un lenguaje diseñado con el razonamiento lógico como propósito, que incorpora reglas sencillas de cálculo (sustituciones y reducciones) para resolver las expresiones. Así, para este lenguaje existen tanto intérpretes como teoremas matemáticos.

Por otro lado, otro tipo de programas que no se interpretan ni compilan son los que se componen directamente en el lenguaje de la máquina que los va a ejecutar. En particular, los primeros programas de ordenador, escritos por Ada Lovelace entre 1842 y 1843, consistían en unas notas especificando en tablas y diagramas cómo realizar el cálculo de números de Bernoulli en la máquina analítica de Charles Babbage. Esta máquina, que podía realizar procesamiento de propósito general, era meramente un diseño y no se pudo construir hasta un siglo después (pese a ello, se pudo comprobar que los programas de Lovelace eran correctos). El equivalente actual sería escribir un programa en ensamblador, que se puede convertir directamente a código máquina transformando cada instrucción en su equivalente en binario.

Por tanto, la compilación y la interpretación son necesarias cuando la intención es ejecutar nuestro programa en una máquina, y el lenguaje de nuestro programa es una abstracción, es decir, no se corresponde directamente con el lenguaje máquina. En este sentido, podemos verlas como tareas de traducción, de un lenguaje origen de alto nivel (el de programación) a un lenguaje objetivo de bajo nivel.

El primer lenguaje de programación de alto nivel fue Plankalkül, diseñado entre 1942 y 1945, pero el primero con una implementación real y de uso común fue Fortran en 1954.

Compilación

La compilación es la conversión de código en un lenguaje en otro, en un paso previo a su ejecución. Normalmente cuando pensamos en compilación hablamos de su versión más tangible, aquella que nos da un binario ejecutable como salida. Se suele denominar a este tipo de compilación ahead-of-time (AOT). Muchos de los lenguajes clásicos y más rápidos se utilizan con compiladores AOT: desde Fortran hasta Rust, pasando por C y C++. Este tipo de compilación permite realizar optimizaciones complejas, por muy costosas que sean, y adaptar el ejecutable final a la máquina donde se va a ejecutar (el proceso de compilar para una plataforma distinta de la de compilación se llama compilación cruzada).

Si la compilación no es de este tipo, puede ser porque no veamos el binario generado, sino que directamente se pase a su ejecución, estrategia conocida como compilación just-in-time o JIT. Esta permite aplicar ciertas optimizaciones que aprovechen la información disponible en tiempo de ejecución sobre la máquina, pero no puede realizar todas las optimizaciones AOT, ya que esto generaría un retraso muy perceptible en la ejecución. Para optimizar al máximo el rendimiento al usar compilación JIT, algunos lenguajes realizan un paso de pre-compilación intermedia que no genera código máquina sino bytecode. En ese paso se trata de conseguir producir un código resultante de bajo nivel independiente de la plataforma de ejecución, de forma que la compilación JIT sea más rápida. Conocidos lenguajes que suelen utilizar compilación a bytecode y JIT son Java y C#. La mayoría de implementaciones de JavaScript son también compiladores JIT.

Preguntas similares