Un lenguaje de programación es una notación diseñada para pasar instrucciones a una máquina. Según esa definición, tanto C ++ como HTML son lenguajes de programación, como fue la notación que Joseph Marie Jacquard usó en 1801 para programar sus telares .
Sin embargo, con la proliferación de lenguajes que se utilizan para estructurar y / o describir datos, la definición de un lenguaje de programación cambió para incluir solo lenguajes que son capaces de expresar algoritmos. Esta es la definición más común hoy en día y excluye lenguajes como HTML o XML.
En el corazón de la definición actual está el concepto de integridad de Turing . La mayoría de los lenguajes de programación son Turing completos, y la integridad de Turing a menudo se cita como el único rasgo crítico que separa un lenguaje de programación de cualquier otro lenguaje de computadora. Esto es lo suficientemente bueno como regla general, pero no del todo exacto:
- Algunos lenguajes completos que no son de Turing se consideran lenguajes de programación, por ejemplo Charity .
- Algunos lenguajes que generalmente no se consideran lenguajes de programación son Turing completos, por ejemplo XSLT .
- La integridad de Turing por sí sola no dice mucho acerca de la utilidad de un idioma .
Dependiendo del contexto, puede elegir cualquier definición que desee.
Editar:
Que se sepa aún más, una implementación de un lenguaje no confiere características al lenguaje en sí mismo, por ejemplo: la especificación de un lenguaje puede definir un lenguaje completo durante un tiempo, alguien podría implementarlo al azar dejando de lado su integridad. Sin embargo, el hecho de que esta implementación no esté completa no significa que el lenguaje en sí no esté completo (sino que probablemente significa que la implementación no es conforme). Los detalles de un idioma y los detalles de una implementación particular de un idioma deben reconocerse como cosas separadas, por eso es incorrecto llamar a un idioma interpretado o compilado, etc.