Diferencias entre compiladores e intérpretes

Antes de Java y aparecieron los lenguajes de programación C #, los programas de computadora eran solo compilado o interpretado. Lenguajes como lenguaje ensamblador, C, C ++, Fortran, Pascal casi siempre se compilaron en código máquina. Por lo general, se interpretaban lenguajes como Basic, VbScript y JavaScript.

Entonces, ¿cuál es la diferencia entre un programa compilado y uno interpretado?

Compilando

Para escribir un programa sigue estos pasos:

  1. Editar el programa
  2. Compile el programa en archivos de código de máquina.
  3. Enlace los archivos de código de la máquina a un programa ejecutable (también conocido como exe).
  4. Depurar o ejecutar el programa

Con algunos idiomas como Turbo Pascal y Delphi se combinan los pasos 2 y 3.

Los archivos de código de máquina son módulos autónomos de código de máquina que requieren vincularse entre sí para construir el programa final. La razón para tener archivos de código de máquina separados es la eficiencia; los compiladores solo tienen que recompilar código fuente

instagram viewer
Eso ha cambiado. Los archivos de código de máquina de los módulos no modificados se reutilizan. Esto se conoce como hacer la aplicación. Si desea volver a compilar y reconstruir todo el código fuente, eso se conoce como Build.

La vinculación es un proceso técnicamente complicado en el que todas las llamadas de función entre diferentes módulos se enganchan juntas, se asignan ubicaciones de memoria para variables y todo el código se almacena en la memoria, luego se escribe en el disco como un programa completo. Este suele ser un paso más lento que la compilación, ya que todos los archivos de código de máquina deben leerse en la memoria y vincularse entre sí.

Interpretando

Los pasos para ejecutar un programa a través de un intérprete son

  1. Editar el programa
  2. Depurar o ejecutar el programa

Este es un proceso mucho más rápido y ayuda a los programadores novatos a editar y probar su código más rápido que usar un compilador. La desventaja es que los programas interpretados son mucho más lentos que los compilados. Tanto como 5-10 veces más lento ya que cada línea de código tiene que volver a leerse y luego volverse a procesar.

Ingrese Java y C #

Ambos lenguajes están semi-compilados. Generan un código intermedio que está optimizado para la interpretación. Este lenguaje intermedio es independiente del hardware subyacente y esto facilita la transferencia programas escritos en cualquiera de los otros procesadores, siempre que se haya escrito un intérprete para ese hardware.

Java, cuando se compila, produce un código de bytes que una máquina virtual Java (JVM) interpreta en tiempo de ejecución. Muchas JVM utilizan un compilador Just-In-Time que convierte el código de bytes en código de máquina nativo y luego ejecuta ese código para aumentar la velocidad de interpretación. En efecto, el código fuente de Java se compila en un proceso de dos etapas.

C # se compila en Common Intermediate Language (CIL, que anteriormente se conocía como Microsoft Intermediate Language MSIL). Esto es ejecutado por Common Language Runtime (CLR), parte de .NET Framework, un entorno que proporciona servicios de soporte como recolección de basura y compilación Just-In-Time.

Tanto Java como C # emplean técnicas de aceleración, por lo que la velocidad efectiva es casi tan rápida como un lenguaje compilado puro. Si la aplicación pasa mucho tiempo haciendo entradas y salidas, como leer archivos de disco o ejecutar base de datos consultas, entonces la diferencia de velocidad apenas se nota.

¿Qué significa esto para mi?

A menos que tenga una necesidad muy específica de velocidad y deba aumentar la velocidad de fotogramas en un par de fotogramas por segundo, puede olvidarse de la velocidad. Cualquiera de C, C ++ o C # proporcionará velocidad suficiente para juegos, compiladores y sistemas operativos.

instagram story viewer