Ventajas y desventajas de los compiladores
Las computadoras leen los comandos del lenguaje máquina escrito en binario; por ejemplo, largas cadenas de ceros y unos. Aunque las computadoras puedan leer este lenguaje eficientemente, la mayoría de los programadores humanos no pueden hacerlo. Por esta razón ellos trabajan en un lenguaje de programación que puedan comprender, el cual traducen después al lenguaje máquina que la computadora entiende. Si bien muchos lenguajes nuevos usan intérpretes que traducen de uno a otro conforme se ejecuta el programa, los lenguajes de programación antiguos usaban compiladores que efectuaban esta traducción completamente, antes de que la computadora ejecutara la aplicación.
Ventaja: autónomo y eficiente
Una gran ventaja de los programas que se compilan es que son unidades autónomas listas para ser ejecutadas. Debido a que ya se encuentran compiladas en archivos binarios de lenguaje máquina, no es necesaria una segunda aplicación o paquete que el usuario deba mantener actualizado. Si un programa se compila para Windows en una arquitectura x86, el usuario final solamente necesita un sistema operativo Windows ejecutándose en una arquitectura x86. Adicionalmente, un paquete precompilado puede ejecutarse más rápido que un código fuente compilador intérprete en tiempo real.
Desventaja: específico a un hardware
Dado que un compilador traduce el código fuente a un lenguaje máquina específico, los programas deben ser compilados específicamente para OS X, Windows o Linux, así como para arquitecturas de 32 o 64 bits. Para un programador o una compañía de software que intentan hacer que un producto llegue a la mayor audiencia posible, ésto representa la necesidad de tener múltiples versiones del código fuente para la misma aplicación, lo cual da como resultado una mayor cantidad de tiempo empleada en el mantenimiento del código fuente y problemas adicionales cuando son liberadas las actualizaciones.
Ventaja: optimización de hardware
Si bien estar restringido a un paquete de hardware específico tiene sus desventajas, compilar un programa también puede incrementar el desempeño de este último. Los usuarios pueden enviar opciones específicas a los compiladores, relacionadas con los detalles del hardware en el que se ejecutará el programa. Esto permite que el compilador genere código en lenguaje máquina que hace un uso más eficiente del hardware especificado, a diferencia del código más genérico. Esto también permite a los usuarios avanzados el optimizar el desempeño de un programa en sus computadoras.
Desventaja: tiempos de compilación
Una de las desventajas de tener un compilador es que verdaderamente debe compilar código fuente. Mientras que los pequeños programas que muchos desarrolladores novatos codifican requieren cantidades triviales de tiempo para ser compilados, las grandes suites de aplicaciones pueden tardar cantidades significativas de tiempo en compilar. Cuando los programadores no tienen nada que hacer mas que esperar a que el compilador termine, este tiempo puede hacer el proceso más tardado, especialmente durante la etapa de desarrollo, cuando el código debe ser compilado para probar su funcionalidad y resolver errores.