Mis amigos de programación siempre me dicen que HTML es un lenguaje de marcado y C ++ es un lenguaje de programación. Cuando les pregunto cuál es la diferencia, nunca me dan una respuesta razonable.
¿Qué podría hacer que una llamada C ++ sea un lenguaje de programación y HTML no?
programming-languages
terminology
markup
Lucas - Mejor Academia de codificación
fuente
fuente
Respuestas:
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:
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.
fuente
- Artículo de Wikipedia "Lo sé cuando lo veo"
Como la obscenidad, creo que todos conocemos un lenguaje de programación cuando lo vemos. Claramente, el OP lo hace, ya que ya has considerado que C ++ es un lenguaje de programación, y HTML no lo es.
Entonces, ¿cuál es exactamente el objetivo de buscar una definición formal? Yannis ya ha dado un gran resumen de por qué la definición más popular, la integridad de Turing, es defectuosa: conduce a una categorización que desafía la prueba "Lo sé cuando lo veo".
Les digo que cualquier definición que se les ocurra conducirá a algunos lenguajes que todos creemos que no son lenguajes de "programación" se clasificarán como tales; o para algunos lenguajes que todos creemos que son lenguajes de "programación" se clasificarán como no .
¿Por qué no simplemente ir con las tripas? Utilizo una heurística simple: un lenguaje de programación es un lenguaje cuyo propósito principal, en mi opinión y según mis observaciones, es escribir programas. No para marcar el contenido. No para transformar XML. Para escribir programas de propósito general. Prefiero saberlo cuando lo veo que tratar de definir una definición formal, y no veo ningún valor genuino que pueda surgir al intentar tal definición.
fuente
Los lenguajes de marcado tratan principalmente de cómo se muestra la información y, en general, carecen de la infraestructura de programación de variables, matemáticas, comparación, toma de decisiones (si ... entonces), bucles (por, mientras), etc.
HTML en sí mismo es estático; es decir, al igual que un procesador de texto, está destinado a presentar la información tal como es. Solo con la adición de algún tipo de lenguajes de programación (generalmente lenguajes de script como JavaScript, PHP, etc.) las páginas web HTML pueden tener un contenido "cambiante". Los lenguajes de secuencias de comandos proporcionan las posibilidades de "programación" con variables, matemáticas, comparaciones, toma de decisiones, bucles, etc.
fuente
HTML es un lenguaje declarativo. No hace mucho por sí solo, solo describe un documento y su contenido (usando etiquetas que tienen un significado semántico).
C ++ por otro lado hace algo. Sí define funciones y clases, pero también describe cómo estas funciones deberían funcionar juntas, cómo sus entradas y salidas están vinculadas de manera significativa y cómo la aplicación debería ejecutarse como un todo.
fuente