En el desarrollo de software, en la programación, encontramos distintos y una variedad de lenguajes los cuales algunos son compilados, otros interpretados y otros híbridos. Sin embargo, el tiempo de ejecución es el mismo para todos, es decir, todos pasan por un tiempo de ejecución.
Es importante entender la diferencia de estos dos conceptos: tiempo de compilación y tiempo de ejecución.
Cuando hablamos de tiempo de compilación, nos referimos a la fase en el que el código fuente es analizado y convertido en ejecutable. Y cuando hablamos de tiempo de ejecución, nos referimos a cuando el programa ya ha sido compilado o interpretado y se ejecuta en el sistema para procesar datos y mostrar resultados. Resumiendo, cuando el código ya está funcionando.
Ahora veámoslo detenidamente.
Tiempo de compilación
Como hemos dicho, es la parte donde el código fuente es convertido en formato ejecutable y, este proceso no ocurre con todo el código, o, mejor dicho, solo ocurre en los lenguajes compilados como C o C++, por ejemplo, donde un compilador traduce el código en lenguaje de alto nivel a código máquina.
En este tiempo, se pueden detectar errores de sintaxis y tipado, como por ejemplo escribir mal una instrucción o asignar un valor de tipo incorrecto a una variable.
En los lenguajes compilados, es importante corregir los errores en tiempo de compilación para garantizar que el código se transforme correctamente en un ejecutable.
Hay que mencionar también que, dado que cada vez que realicemos algún cambio en el código, debemos “perder” tiempo compilándolo otra vez, la compilación nos ofrece una optimización de rendimiento que permite que nuestro programa sea mucho más rápido y eficiente.
Tiempo de ejecución
Este es el tiempo o periodo por el que pasan todos los programas, independientemente de que sean compilados, interpretados o híbridos. Es el momento el cual el programa en si se está ejecutando.
Respecto a los errores que se pueden producir en este tiempo, aquí podemos destacar una clara diferencia entre los lenguajes compilados e interpretados.
Por ejemplo, si en C++ tenemos algo como:
int main() { int numero = "hola"; // Error: tipo de dato incorrecto return 0; }
Directamente el compilador lanzará un error y no podremos compilar el programa, lo cual quiere decir que antes de convertirlo en ejecutable el código deberá estar libre de errores. Sin embargo, no sucede igual con un lenguaje “interpretado” como Python.
Por ejemplo:
numeros = [1, 2, 3] print(numeros[5]) # Error: índice fuera de rango
El error anterior no será detectado antes de ejecutar el código, pero sí que fallará cuando intente acceder al índice inexistente en la lista.
¿Ves la diferencia?
En lenguajes compilados, es importante corregir los errores en tiempo de compilación para garantizar que el código se transforme correctamente en un ejecutable.
Y aunque la mayoría de errores se detectan antes, en tiempo de compilación, algunos errores como división por cero o accesos de memoria inválidos, solo aparecen en tiempo de ejecución.
En lenguajes interpretados o con ejecución en máquina virtual, es crucial realizar pruebas y manejar excepciones para evitar fallos en tiempo de ejecución.
Aquí, no hay una fase de compilación previa como tal, por lo que los errores aparecen directamente durante el tiempo de ejecución.
Como trabaja un compilador y un interprete
Existe una clara diferencia en cómo trabaja un compilador y un intérprete.
Resumidamente podemos decir que un compilador traduce el código fuente escrito en un lenguaje de alto nivel (C, C++, Go, etc.) a código máquina o binario ejecutable que la computadora puede entender y ejecutar directamente. El compilador traduce todo el código de una sola vez antes de ejecutarlo.
Por otro lado, un intérprete traduce y ejecuta el código fuente línea por línea. Es decir, en lugar de convertir todo el código en un archivo ejecutable como lo hace un compilador, el intérprete lee cada instrucción del código, la traduce a código máquina y la ejecuta en tiempo real.
Espero que este pequeñísimo articulo haya servido de interés 😉
Sobre el autor
Este artículo está publicado bajo una licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional . Puedes compartirlo y adaptarlo, incluso con fines comerciales, siempre que cites al autor y mantengas esta misma licencia.