top of page
  • Foto del escritorReclunautas

#EsTendencia No suele considerarse a HTML y CSS lenguajes de programación

En el mundo de la programación lleva mucho tiempo vigente un debate acerca de si los lenguajes HTML y CSS, que son la base del desarrollo web, son o no 'lenguajes de programación'. Sea en discusiones online o no, no es infrecuente encontrarnos con programadores de lenguajes de programación 'de verdad' siendo cortantes cuando oyen a alguien sugerir que sabe programar sólo porque ha aprendido HTML.

En StackOverflow, de hecho, se preguntan por qué tienden a ser "tan pendantes" con este tema, mientras que algunos diseñadores web consideran que los programadores con 'pedigree' son demasiado dogmáticos en su definición de lenguajes.

Pero no se trata de un debate baladí: a nivel técnico, es importante tener claro qué constituye un lenguaje de programación y qué no lo hace. Y también tener claro qué son realmente capaces de hacer HTML y CSS, para despejar cualquier duda sobre la etiqueta más correcta a aplicarles.

Lo primero que hay que tener claro es qué criterio utilizar para decidir qué es un lenguaje de programación y qué no. Y el más habitual y tradicional para ello es la capacidad de un lenguaje para ser 'Turing-completo'. Pero, ¿qué demonios es eso?


¿Turing-Qué?

Un lenguaje de programación se considera Turing-completo cuando tiene la capacidad de realizar cualquier cálculo que una Máquina de Turing pueda llevar a cabo. La pregunta es obvia, entonces, es "¿Qué es una Máquina de Turing?".

Como habrás supuesto ya, el Turing al que no dejamos de hacer referencia es Alan Turing, el padre de la computación moderna, popularizado por su trabajo con las computadoras Enigma durante la Segunda Guerra Mundial.

Pero esas no son las máquinas a las que nos referimos, sino a un dispositivo abstracto que Turing teorizó en 1936, que contaba con las siguientes características:

  • Consta de una cinta infinita dividida en celdas, una cabeza de lectura/escritura que se mueve a lo largo de la cinta y un conjunto finito de estados y reglas de transición.

  • Puede leer y escribir símbolos en la cinta, cambiar de estado según las reglas y moverse hacia la izquierda o la derecha.

Esta descripción puede parecer simple, pero es una abstracción utilísima con la que Turing demostró que -si bien hay problemas que, efectivamente, una computadora nunca podrá resolver- si un problema puede resolverse mediante un algoritmo, puede resolverse con una máquina de Turing.

Por lo tanto, ser 'Turing-completo' significa que el lenguaje en cuestión debe ser capaz de simular cualquier algoritmo de computación, realizando para ello tres tareas fundamentales:

  • Leer y escribir sobre un medio de almacenamiento.

  • Controlar el flujo de ejecución mediante instrucciones condicionales (como if/else) y bucles (como for o while).

  • Modificar su propio código o estado durante la ejecución.

Tres ejemplos rápidos de lenguajes Turing-completos serían Python, Java y C++.

HTML y CSS, sin embargo, no cumplen con estos criterios: HTML es un lenguaje de marcado utilizado para estructurar contenido en la web, mientras que CSS es un lenguaje de estilo usado para describir la presentación visual de un documento HTML.





5 visualizaciones0 comentarios
bottom of page