soy Kseso y esto EsCSS

¿Qué lenguaje es CSS? Que sí, que no, que si de marcado o programación

¿Qué tipo de lenguaje es CSS? Como si de verdad importase.

¿Qué lenguaje es CSS? Que sí, que no, que si de marcado o programación

·Por Kseso ✎ 4
Trilla tradicional

¿Es CSS un lenguaje de programación?

Hace escasas fechas en mi TL de Twitter volvió a aparecer una vieja discusión que yo pensaba superada y olvidada sobre el tipo de lenguaje que es CSS.

Y digo que creía olvidad y superada porque la cuestión tal como siempre se ha intentado abordar está mal planteada y aboca a no tener respuesta válida. Todo lo que se diga bajo ese planteamiento podrá (y de hecho siempre fue) rebatido. Todo el mundo tiene (parte) de razón. Y por lo tanto... todos equivocados.

El error: el lenguaje. Toda la energía se pierde en hallar respuesta a lo que no la tiene: el tipo de lenguaje que sea o deje de ser, que pueda o no ser CSS. Especialmente cuando se añade la coletilla programación.

Porque todas las peleas vienen cuando se afirma o niega que CSS sea un lenguaje de programación. Especialmente cuando se juntan quien sí conoce y domina lo suficiente de CSS con quienes su dominio y conocimientos son de otras áreas: backends reconvertidos a font, javascripteros (especialemte), programadores (puros y prístinos)... étc y lo echan de menos al enfrentarse a CSS

Va para dos años que me enzarcé por última vez en esa cuestión y que decidí preguntar en la lista de correo de CSS del Consorcio. La respuesta vino de la mano de Tab Atkins Jr y con ella terminó el hilo:

¿Qué no cumple CSS para ser considerado un lenguaje de programación?
Esta es una cuestión filosófica que depende principalmente de lo que cada uno está dispuesto a aceptar como definición de un "lenguaje de programación", y por lo tanto:
(a) no tiene una respuesta que sea incluso remotamente verificable como "correcta", y
(b) no es relevante para el desarrollo del lenguaje CSS.
- Tab Atkins Jr -

Confieso que en un principio esta respuesta me dejó totalmente descolocado. Descolocado y algo tocado el ego porque yo pensaba que se podría generar una bonita y enriquecedora discusión. En un principio.

Pero tras leerla por segunda vez tuve un momento ¡ajá!. Si en la parba es la paja la que impide ver el grano vamos a limpiar y dejar el muelo limpio.

¡Fuera el lenguaje!

Realmente la cuestión del lenguaje se ha hecho relevante porque para unos (los que aman CSS) creen que se le hace de menos cuando los otros (quienes no lo comprenden y odian más o menos) les niegan la escarapela programática.

Así que este post va para los primeros. Los segundos... que aprendan a amar a CSS por su cuenta xD

Va para los primeros porque la pregunta e intento de respuesta va a ser otra. Más corta pero mucho más veraz, completa, irrefutable y por supuesto satisfactoria:

¿Qué es CSS en 2017?

La definición oficial

Tradicionalmente todos los documentos de desarrollo de CSS se comienzan con el apartado Abstract que expone la finalidad del mismo. Y como punto y aparte final de él se añadía la coletilla:
CSS is a language for describing the rendering of structured documents (such as HTML and XML) on screen, on paper, in speech, etc.

¡Coño! ¿Cómo no iba a haber controversia si eran los propios desarrolladores de CSS quien daban pie diciendo que CSS es un lenguaje (a secas) y su finalidad?. Lógico que lo siguiente fuese que hubiese quienes sintieran la necesidad de completar qué tipo de lenguaje era.

Sin embargo esto cambió hace un tiempo con la publicación del documento CSS Snapshot 2015.

El título de su apartado 2 dice textualmente: Cascading Style Sheets (CSS) — The Official Definition

Y la respuesta textual es
As of 2015, Cascading Style Sheets (CSS) is defined by the following specifications.

Traducido a román paladino: CSS es lo que hace.

Y a continuación lista todos los documentos de CSS estables: los que habían alcanzado el status de recomendación y aquellos otros que sin haber llegado se preveía que no sufrirían cambios significativos. (Esto mismo se mantiene y actualiza en el reciente CSS Snapshot 2017)

A mi personalmente me encanta esta definición sobre qué es css (Css se define por sus especificaciones). Lo que sea o deje de ser CSS como tipo de lenguaje no tiene importancia. CSS no tiene necesidad de definirse en base a qué pueda ser sino sobre lo que hace. No te importe cómo me llamen sino lo que pueda hacer por ti.

Y sacar el tipo de lenguaje que pueda ser CSS no es sólo por capricho. Hoy por hoy CSS se está volviendo inclasificable bajo esa óptica.

Tradicionalmente lo que podía hacer CSS era bastante homogéneo. Unos colores por aquí, unos tamaños por allá, acá un flotado, acullá otros...

Pero con la llegada de cada novedad CSS la cosa se complicaba cada vez más. Especialmente tras el cierre de CSS2.1: gradientes, medias queries, at-rules condicionales, flexbox, pseudoclases de todos los tipos (¡hasta lógicas!), funciones CSS de lo más variado, filtros y modos de fusión...

Y no digamos ya con las últimas promesas algunas ya hechas realidad: CSS Grid Layout, custom properties, animaciones y transformaciones... y otras en camino: CSS Masking, CSS Shapes, CSS Box Alignment...

Propósito de año nuevo en Julio

Así que adiós a pérdidas de tiempo en discusiones inútiles de quienes, reconvertidos en "estilistas" que no acaban de asimilar qué hace CSS y cómo lo hace, añoran las formas, métodos y lógicas de lo que conocen sin comprender y aceptar que CSS no es lo que ellos querrían que fuese.

Yo, que sólo soy Un enredique amanuense de CSS ignorante incluso de CSS lo tengo claro: no más discusiones inútiles. Sólo jugar y experimentar disfrutando de la búsqueda del próximo "#impoCSSible inside" (propio o ajeno) que lleve un pasito más allá los límites autoimpuestos de CSS.

Y del lenguaje de marcado ¿qué?

Todo un clásico: CSS es un lenguajes de marcado.
JAJAJAJAJA!!!!

Mi consejo hoy cada vez que escuches algo por el estilo es que sigas caminando, vuelvas tu cabeza con grácil meneo de cabellera (quien la conserve), pongas y le dediques la mejor de tus sonrisas y digas claro que sí, guapi mientras sigues caminado hacia la puesta de sol en el horizonte.
Fundido a negro y FIN

avatar del Editor del blog

Ramajero Argonauta, Enredique Amanuense de CSS.
#impoCSSible inside
Dicen que, en español, EsCss es el mejor blog de CSS. Posíblemente exageren.
@Kseso EsCss Don Kseso Kseso