Un lenguaje compilado es un lenguaje de programación de computadoras cuyo código fuente generalmente se compila o se traduce a código de máquina para producir un programa ejecutable. Los compiladores son programas de utilidad creados para traducir una implementación específica de un lenguaje de programación en un archivo binario ejecutable que está diseñado para ejecutarse en un determinado sistema operativo. Este archivo ejecutable independiente se puede ejecutar en cualquier plataforma compatible sin la ayuda de otro programa y sin necesidad de volver a compilarlo. Algunos lenguajes compilados comunes son Ada, C ++ y Fortran.
Los programas de computadora también se pueden escribir en un lenguaje interpretado o en un lenguaje de secuencias de comandos. La decisión de implementar un proyecto en un lenguaje compilado generalmente está relacionada con la mayor velocidad de ejecución de sus programas. Se considera que una mayor velocidad compensa lo que generalmente es un proceso de desarrollo y mantenimiento más complejo. Los sistemas operativos y las utilidades que necesitan acceso directo al hardware a menudo requieren la eficiencia de un lenguaje compilado.
Los idiomas interpretados deben ser analizados, traducidos y ejecutados por una utilidad de interpretación cada vez que se ejecuta el programa. Si el intérprete no reside en una computadora, el programa no se puede ejecutar. En un lenguaje compilado, este análisis y traducción que consume mucho tiempo se lleva a cabo una vez en tiempo de compilación y el ejecutable no necesita ningún programa de utilidad para ejecutarse. Cuando la velocidad o la necesidad de acceso de hardware de bajo nivel no es un factor, la relativa facilidad con la que se puede implementar un programa interpretado puede convertirlo en una opción atractiva.
Los lenguajes de secuencias de comandos se implementan a menudo para dar a los usuarios un mayor control sobre los programas de lenguaje compilados o para proporcionar funcionalidad adicional. Este tipo de lenguaje también debe interpretarse en tiempo de ejecución. El uso más familiar del lenguaje de secuencias de comandos es en las páginas web de Internet, donde el navegador actúa como intérprete de secuencias de comandos. Sin embargo, estos lenguajes han existido desde la época de las primeras computadoras centrales para automatizar procesos simples.
Al desarrollar un proyecto de software, a menudo hay que elegir entre el uso eficiente de los recursos informáticos y el costo del tiempo de desarrollo. Esto puede llevar a una combinación de lenguaje compilado y lenguaje interpretado o de scripting dentro de un proyecto en particular. Los elementos críticos de tiempo y recursos de un programa generalmente se codifican mejor en un lenguaje compilado. Las interfaces y los elementos con menos requisitos de recursos podrían desarrollarse más económicamente en un lenguaje interpretado. Incluso los elementos que eventualmente se implementarán en un lenguaje compilado podrían ser prototipados de manera más rentable como un programa de lenguaje interpretado.