La puissance du CSS pour les intégrateurs web

Le 07/07/2016

Dans Webdesign

Aujourd'hui, les inspirations pour intégrateurs vous prouvent que le CSS est un langage complexe et qu'il n'a pas grand-chose à envier au Javascript !

Disgression : le CSS, un langage de programmation ?

Le CSS est-il un langage de programmation ? Cette question est bien plus complexe que l'on pourrait le penser. Pour tenter d'y répondre, penchons-nous sur la définition de langage de programmation.

Un langage de programmation est construit à partir d'une grammaire formelle, qui inclut des symboles et des règles syntaxiques, auxquels on associe des règles sémantiques. Ces éléments sont plus ou moins complexes selon la capacité du langage. Les modes de fonctionnement et de définition de la complexité d'un langage de programmation sont généralement déterminés par leur appartenance à l'un des degrés de la Hiérarchie de Chomsky.

Sous un angle théorique, tout langage informatique peut être qualifié de langage de programmation s'il est Turing-complet c'est-à-dire qu'il permet de représenter toutes les fonctions calculables au sens de Turing et Church (en admettant néanmoins pour exception à la théorie que la mémoire des ordinateurs n'est pas un espace infini).

Wikipedia

D'après cette définition, il est nécessaire pour un langage informatique d'être Turing complète, c'est-à-dire être capable de représenter toutes les fonctions calculables, qu'il a au moins la puissance d'une machine de Turing, et qu'il hérite des problématiques des machines de Turing, en particulier le fait que le problème de l'arrêt est indécidable (c'est-à-dire que la machine de Turing ne peut pas détecter qu'elle a planté, vu qu'elle est plantée).

Pour ce qui est du CSS, il est possible de programmer un Automate cellulaire rule 110 en CSS et HTML, comme le montre cet exemple (qui n'est pas tout à fait autonome, il demande l'aide de l'utilisateur pour passer d'une state à une autre). Il a ete demontre que Rule 110 est Turing complete, nous pourrions donc considérer que CSS + HTML est Turing complète, mais ça serait ignorer la dernière portion de la définition avec la regle d'arrêt, qui fait clairement débat. Si le sujet vous intéresse, je vous propose la lecture de cette page Stack-overflow, argumentée et avec quelques exemples : http://stackoverflow.com/questions/2497146/is-css-turing-complete.

Dans tous les cas, que le CSS soit ou ne soit pas un langage de programmation ne l'empêche pas d'être clairement impressionnant ! Pour appuyer mes dires, je vous propose de découvrir les exemples suivants, utilisant du CSS à la place du Javascript utilisé habituellement, ainsi que la liste suivante : You Dont Need Javascript

Évidemment, ces exemples restent des amusements et pour la plupart ne doivent pas entrer dans vos projets en production ! Le CSS à un moins bon support que le Javascript et est plus complexe a debugger et à tester.

Des interactions sans Javascript

Attention avec ce premier exemple, il possède du son et de la musique. Veillez donc à bien couper vos enceintes avant de le lancer !

Des illustrations sans images, que du CSS !