¿HTML es un lenguaje de programación?

¿HTML es un lenguaje de programación?


Tag HTML Markup Lenguaje de marcado Html5

HTML (HyperText Markup Language) es uno de los lenguajes más populares en el ámbito del desarrollo web, una herramienta casi esencial para configurar el diseño de una página web. Simple e intuitivo, con la ayuda de CSS y Javascript, HTML ofrece a los desarrolladores las herramientas necesarias para crear una aplicación web funcional y estéticamente agradable. Nadie se atreve a cuestionar la utilidad de HTML pero hay una pregunta que genera perplejidad entre los desarrolladores: ¿es posible definir HTML como un lenguaje de programación?

¿HTML es un lenguaje de programación?

Hay quien sostiene que HTML puede ser considerado como una especie de lenguaje de programación de tipo declarativo (que se concentra sobre “que cosa” tiene que hacer el programa y no sobre “cómo” hacerlo) de alto nivel, es decir, dotado de una sintaxis muy similar al lenguaje humano. Hay quien ve las cosas en una perspectiva más amplia, indicando que cualquier código que instruya al ordenador sobre la acción a realizar puede ser considerado un lenguaje de programación. Muchos piensan que no sea correcto considerar HTML un lenguaje de programación, en cuanto no es “turing-completo”: carece de una semántica que permita implementar cualquier máquina de Turing, una máquina que se pueda usar, en otras palabras, para resolver cualquier problema que admita una solución. Sin embargo, otros están convencidos que el “turing-completo” no representa un criterio apto para establecer si HTML puede o no pueda ser definido un lenguaje de programación.

Para entender si HTML puede ser considerado un lenguaje de programación o no, intentemos adoptar otra estrategia y respondamos, en primer lugar, a otra pregunta: 

¿Qué es un lenguaje de programación?

Según la Enciclopedia de la Ciencia y de la Tecnología, un lenguaje de programación representa un “conjunto de palabras y reglas, definidas de manera formal, para permitir que la programación de una computadora realice tareas determinadas”. Un lenguaje artificial, dotado de reglas rígidas y usado para comunicar a la máquina instrucciones precisas. Un lenguaje en el cual es posible, como leemos en la enciclopedia:

  1. declarar variables;
  2. manipular tipos de datos diferentes (como cadenas, números, booleanos o matrices);
  3. Efectuar operaciones matemáticas y lógicas;
  4. Implementar algoritmos;
  5. Dar instrucciones relacionadas con la lógica de control del flujo (es decir, el orden en que se ejecutan las instrucciones de un programa) en base a las condiciones especificadas por el programador. ¿Un ejemplo? El omnipresente “if/else”.

Si HTML poseyera estas características lógicas y estructurales, compartidas por la mayor parte de los lenguajes de programación, lógicamente, también podría considerarse un lenguaje de programación. Intentemos analizar caso por caso:

  1. En HTML no es posible declarar variables. No nos dejemos engañar por el tag <var>: similar a <code> y <samp>, esto solo sirve para formatear el texto de muestra de un código de programación, o de una expresión matemática, en cursiva, para enfatizarla;
  2. HTML no permite declarar o manipular datos en base a su tipo. Aunque en ciertos tag como <input>, <button> o <link> es posible especificar el “type”, este último se queda como un simple atributo. Con esto no especificamos el tipo de dato que queremos utilizar, sino que ofrecemos información añadida sobre un elemento HTML que el navegador “renderizará”;
  3. No pudiendo operar con tipos de datos como números enteros (integer) o números de punto flotantes (float), en HTML no podemos efectuar operaciones matemáticas o lógicas; 
  4. Tampoco se sobreentiende implementar algoritmos;
  5. No estando dotado por una lógica de control del flujo HTML no permite gestionar estructuras condicionales.

Todavía hay quien sostiene que algunos elementos HTML están dotados de una lógica de control interna en grado de manipular el DOM sin servirse de JavaScript. Elementos que, al interactuar con el input proporcionado por el usuario, podrían ejecutar instrucciones condicionales simples. Un ejemplo común es la copia del tag <details> y <summary>.

Al añadir el tag <summary> en el “parent” <details> es posible crear una especie de “acordeón” rudimentario (un panel “plegable”):

El tag <summary>, actuando como un interruptor (“toggle”), implementa un proceso rudimentario “if/else”: si el usuario hace click, se añade el atributo open al tag <details>. Haciendo clic de nuevo el atributo  “open”se quita:

Encontramos una lógica similar en el tag  <dialog>, que permite crear un ventana modal que se abre automáticamente al cargar la página, de nuevo gracias al atributo “open”, y que se puede cerrar con la ayuda de un botón insertado en un tag <form>:

Una vez cerrada, todavía será posible abrir de nuevo esta ventana modal sin la ayuda de JavaScript.

 

Aparte de estos elementos interactivos, introducidos recientemente en HTML5 (la última versión del lenguaje) y aún no admitidos por todos los principales navegadores, HTML sigue careciendo de las características comunes a la mayoría de los lenguajes de programación: no permite declarar variables, manipular diferentes tipos de datos, realizar operaciones matemáticas y lógicas, implementar algoritmos o estructuras de control de flujos. Esto se debe a que HTML tiene una función diferente. ¿Cuál?

Funciones de HTML

Es suficiente con echar un vistazo al acrónimo “HTML”: “HyperText Markup Language”. De hecho, se trata de un lenguaje de marcado (“markup”). Es decir, un lenguaje que, por medio de marcadores especiales (o etiquetas, “tag”), permite administrar el diseño y el formato de un documento. El trabajo del código HTML es ofrecer al browser toda la información relacionada al layout de una página web. El browser interpreta los marcadores presentes en el código fuente (HTML) y “representa” gráficamente su estructura: al tag <h1> corresponderá un título, a <p> un párrafo de texto, a <a> un hipervínculo y así…

Además, con la llegada de HTML5, se decidió dar mayor protagonismo a la función semántica de este lenguaje marcado. Lo demuestra la introducción de los llamados “tag semánticos”, como <header>, <footer>, <section>, <nav> o <article>. Se trata de elementos que, aunque técnicamente no difieren del simple <div>, se utilizan para asociar una etiqueta “parlante” a cada sección de una página web, asegurando una indexación más eficiente del contenido de las páginas web por parte de los motores de búsqueda y una mayor legibilidad del código fuente.

HTML, en conclusión, no dispone de las características técnicas necesarias para ser considerado a todos los efectos un lenguaje de programación. Esto sucede porque HTML nace como un lenguaje de marcado, con una función simple, pero esencial: describir al browser el layout, es decir, la estructura de una página web y ofrecer valor semántico a su contenido. Esto no significa que HTML no sea un arma importante en el arsenal del desarrollador web, ni un lenguaje de “segunda categoría”. HTML representa la columna vertebral de internet. Es un lenguaje simple pero fascinante, dotado por un rica documentación y una variada community. Un conocimiento profundizado de HTML permite al desarrollador realizar páginas web más funcionales y mejor organizadas, dominar framework como Bootstrap o Tailwind, así como mejorar los parámetros SEO de tu página web.

Curso de programación Aulab Hackademy

Conviértete en Desarrollador weben 6 meses

Descubre el bootcamp de programación Hackademy

Programa Completo

© 2020 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad