Antes de que aparecieran los lenguajes de programación Java y C #, los programas de computadora solo se compilaban o interpretaban. 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??
Para escribir un programa sigue estos pasos:
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 el código fuente que 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 donde todas las llamadas de función entre diferentes módulos se enganchan juntas, se asignan ubicaciones de memoria para las variables y todo el código se almacena en la memoria, luego se escribe en el disco como un programa completo. Esto 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í..
Los pasos para ejecutar un programa a través de un intérprete son
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 volverse a leer, luego volver a procesarse.
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 hace que sea más fácil portar programas escritos en 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). Lo ejecuta Common Language Runtime (CLR), parte del marco .NET, un entorno que proporciona servicios de soporte como la recolección de basura y Just -Compilación a tiempo.
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 consultas de bases de datos, entonces la diferencia de velocidad apenas se nota.
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.