Diferencia entre tiempo de ejecución y tiempo de compilación

Los programas de computadora se ejecutan en dos etapas distintas.
Por eric david lindgren

Tiempo de compilación

El tiempo de compilación traduce código de lenguaje humano a lenguaje máquina.

La primera etapa en la ejecución de un programa, el tiempo de compilación, involucra la traducción de un lenguaje que los humanos comprenden, o código fuente, al lenguaje que las computadoras entienden, o código máquina. El código fuente contiene palabras que reconoces, números en formato decimal y agrupaciones organizativas que hacen que el flujo de instrucciones sea más sencillo de comprender. La etapa del tiempo de compilación termina cuando el nuevo programa es un archivo ejecutable.


Tiempo de ejecución

El tiempo de ejecución ocurre cuando la computadora ejecuta el programa.

La computadora usa las instrucciones que el tiempo de compilación produce para ejecutar el programa. Durante el tiempo de ejecución la computadora lee la traducción del código fuente para llevar a cabo las tareas que el programador ha incorporado en el código. Cada vez que alguien ejecuta el programa lo hace en tiempo de ejecución.


Diferencia

El tiempo de ejecución y el de compilación son dos etapas de procesamiento diferentes.

El tiempo de compilación se lleva a cabo solamente una vez, traduciendo el código fuente a un archivo ejecutable. Este último puede iniciar el tiempo de ejecución cualquier cantidad de veces sin necesitar volver a visitar el tiempo de compilación a menos que el programa requiera cambios. La mayoría de los usuarios de programas experimentan solamente el tiempo de ejecución.


Errores del tiempo de compilación

Los errores en tiempo de compilación ocurren antes de que tu programa se vuelva ejecutable.

Los errores pueden ocurrir durante ambas etapas de la ejecución del programa. Los errores de tiempo de compilación, o errores de sintaxis, existen en el código fuente. Entre los ejemplos se encuentran comandos mal escritos, orden incorrecto de las operaciones, variables con tipos no coincidentes y omisión de los elementos necesarios. Un programador puede detectar errores en tiempo de compilación muy fácilmente debido a que son sintácticos en vez de lógicos. El compilador generalmente indicará un error en tiempo de compilación y explicará o dará pistas acerca de cómo solucionarlo. Si el compilador genera exitosamente un archivo ejecutable a partir de tu código fuente, significa que tu programa no contiene errores en tiempo de compilación.


Errores catastróficos en tiempo de ejecución

Los errores en tiempo de ejecución pueden ocasionar que tu programa se bloquee.

Los errores en tiempo de ejecución ocurren mientras un programa se ejecuta. Los errores catastróficos en tiempo de ejecución ocasionan que un programa se bloquee y deje de ejecutarse prematuramente. Entre los ejemplos se encuentran el acceso a memoria restringida y la división entre cero. La instrucción x / y es correcta sintácticamente, pero si 'y' contiene el valor 0 en tiempo de ejecución causará que el programa se bloquee. Un programador quizá encuentre difícil el detectar errores catastróficos en tiempo de ejecución debido a que usualmente ocurren sólo bajo ciertas condiciones.


Errores lógicos en tiempo de ejecución

Los errores en tiempo de ejecución pueden causar un comportamiento no esperado.

Un error lógico no causa que el programa se bloquee pero hace que se ejecute de una forma que el programador no esperaba. Considera un programa con un menú de opciones que espera que el usuario introduzca el número de la opción que desee. Si el usuario escribe una letra, el programa, esperando un número, la convierte a un valor numérico y envía al usuario a una de las opciones del menú. El programa se ejecuta como si nada estuviera mal en vez de decirle al usuario que escribió una opción no válida.

Referencias