Compilado - Interpretado

Site: Facultad de Ingeniería U.Na.M.
Curso: Computación ET-344
Livro: Compilado - Interpretado
Impresso por: Usuário visitante
Data: domingo, 20 abr. 2025, 20:08

1. Compilado SI , Interpretado NO

Las personas que programan, escriben el programa o conjunto de acciones que debe seguir el procesador en un lenguaje que no es el Español, o Ingles.

Es un lenguaje especifico que NO es el que entiende el Procesador.

El procesador entiende un lenguaje BINARIO ( compuesto por 0s y 1s) , así que hay alguien que debe hacer la traducción desde el lenguaje en el cual escribimos al que entiende el procesador. C++, python )

    Figura 1

Figura 2

Para introducir el concepto de Interprete ( que usa Python ) y compilador ( que usa C++) lo vamos  a hacer con un ejemplo.

Escenario 1:

Una persona que habla español y tiene muy mala memoria  tiene que traducir un texto del Ingles, llama a una persona que sabe Ingles la cual le traduce. Al rato tiene llamarlo nuevamente para que traduzca el mismo texto por que se olvidó, así cada vez que quiere saber que dice el texto debe llamar al traductor o interprete para que le indique que dice el texto.

Escenario 2:

Una persona que habla español y tiene muy mala memoria  tiene que traducir un texto del Ingles, llama a una persona que sabe Ingles la cual le  traduce el texto del Ingles al español y se lo escribe en una hoja, así cada vez que quiere saber que dice el texto solo debe leer lo que está traducido.

  • Escenario 1 = Interprete. ( Python)
  • Escenario 2 = Compilador ( C++)

Tanto el Compilador como el Interprete son programas que hace su trabajo: TRADUCIR.

Solo que el Interprete los hace todas y cada uno de las veces, a diferencia del Compilador que lo hace una sola vez.

Si pensamos en estos elementos que mencionamos en los escenarios podemos establecer algunas características propias de cada uno de ellos según la analogía y que son válidos para  los que sería puntualmente un Compilador o Interprete. Otros elementos mas técnicos no se aprecian en esta analogía planteada, como por ejemplo la relación con el Sistema Operativo, etc. Pero eso está fuera del alcance del curso. El proposito de esta sección es que el alumno entienda que hay en principio dos maneras de traducir a Binario el lenguaje de programación que escribimos.

En este lenguaje de programación C++ se usa el Compilador.

2. Comparativa de Velocidades.

La comparación de la velocidad de ejecución entre Python y C++ es un tema ampliamente debatido en la comunidad de desarrollo de software. Aunque, en general, C++ suele ser significativamente más rápido que Python debido a su naturaleza compilada y su cercanía al hardware, la diferencia exacta en rendimiento puede variar según la tarea específica y las optimizaciones aplicadas.

Ejemplo de comparación práctica:

Un ejemplo ilustrativo es un programa que cuenta desde 0 hasta 1.000.000.000. Implementado en Python, este proceso tomó aproximadamente 1 minuto y 19 segundos, mientras que en C++ solo requirió 21 milisegundos.

Observación: Notar que es un caso de comparación, dependiendo el caso puede variar la velocidad relativa, por otro lado aquí NO se evalúan otras cuestiones como: facilidad, lugar de implementación, etc.

Factores que influyen en la diferencia de rendimiento:

  1. Compilación vs. Interpretación: C++ es un lenguaje compilado, lo que significa que el código se traduce directamente a lenguaje máquina antes de su ejecución, permitiendo una ejecución más rápida. En contraste, Python es interpretado, procesando el código línea por línea en tiempo de ejecución, lo que introduce una sobrecarga adicional

  2. Tipado estático vs. dinámico: C++ utiliza tipado estático, determinando los tipos de datos en tiempo de compilación, lo que facilita optimizaciones de rendimiento. Python emplea tipado dinámico, determinando los tipos en tiempo de ejecución, lo que puede ralentizar la ejecución debido a la necesidad de comprobaciones adicionales.

  3. Gestión de memoria: En C++, el programador tiene control directo sobre la gestión de memoria, permitiendo optimizaciones específicas. Python maneja la memoria automáticamente mediante un recolector de basura, lo que simplifica la programación pero puede introducir latencias en la ejecución.

Casos específicos y optimizaciones:

Aunque C++ generalmente ofrece un rendimiento superior, Python puede acercarse en velocidad mediante el uso de bibliotecas optimizadas como NumPy o mediante técnicas como la compilación Just-In-Time (JIT) con herramientas como Numba. Estas estrategias permiten que Python alcance velocidades comparables a las de C++ en ciertos contextos, especialmente en aplicaciones científicas y de análisis de datos.

Conclusión:

Si bien C++ ofrece ventajas significativas en términos de velocidad de ejecución, especialmente en tareas que requieren un uso intensivo del procesador, la elección entre Python y C++ debe basarse en las necesidades específicas del proyecto. Python destaca por su facilidad de uso, rapidez en el desarrollo y una amplia gama de bibliotecas, lo que lo hace ideal para prototipado rápido y aplicaciones donde el rendimiento no es el factor crítico.

Para una ilustración visual de esta comparación, puedes ver el siguiente video: