090830 5 min

Le jour où le logiciel entra en contradiction

A part le reste c'est quand même une époque formidable.
Les gens les plus ridiculisés, les plus mal employés et les moins compris sont les informaticiens, une nouvelle génération de gens à l'esprit scientifique qui emploient leur compétence à rendre visibles les lois inéluctables du Cosmos, et donc de la Logique.

Le CMS que je construis est une source inépuisable de joies et de découvertes.
A chaque pas franchi dans la complexité le gain est comparable à un adage du genre « le beurre et l'argent du beurre ».

Ce qui est illégal en logique, est ce qui pourrait être dit « le non beurre et le non argent du beurre ».
Or les contradiction ne cessent de vouloir apparaître dès lors qu'on suit simplement les différents fils simultanés du développement de la compétence.

Et à un moment ces fils viennent à se croiser ce qui provoque des contradictions, mais à ce moment on ne les voit pas encore comme cela, tout ce qu'on voit c'est qu'il y a un problème quelque part, et qu'on ne peut ni le résoudre en s'attaquant à un fil, le le résoudre en s'attaquant à l'autre.

En l'occurrence cet exemple simple et bête peut servir d'illustration symbolique de ce qui arrive quand l'Evolution crie à l'illégalité !

Au départ j'avais dit que certains articles devraient rester « toujours » en ligne, tandis que tous les autres seraient temporaires.
Puis on a ajouté une fonction qui servait à creuser dans le temps applicable à toutes les sortes de tris d'articles.
Et pendant ce temps-là la fonction d'articles permanentes a continué de gonfler démesurément, au point qu'ils étaient permanent mais un eu temporaires quand même.
Puis à un moment au détour d'un nettoyage de printemps dans les fonctions on a supprimé les limitations temporaires afin de permettre de creuser dans le temps, sachant qu'elles ne servaient plus à rien puisque le système avait évolué de sorte à ne jamais s'encombrer de ce qui est inutile.

Et soudain la fonction des articles permanents a connu une inflation extraordinaire, et le système était ralenti.
C'est là que, s'apercevant que la page devait s'effacer entièrement avant de se réafficher, nous nous sommes dit, mon cerveau et moi, qu'il y avait un moyen pour empêcher ce clignotement, ce qui peut être qualifié de volonté de guérir les symptômes d'une cause bien plus profonde en réalité.

Ceci a motivé une économie plus drastique des appels aux ressources processeur, jusqu'au moment où...
Bin oui c'est vrai ! Puisque chaque tri d'articles peut être creusé dans le temps, la fonction des articles permanents ne sert plus à rien, c'est logique !

Et donc on a supprimé toutes les exceptions de confinement des articles exceptionnels, et soudain, le système s'est retrouvé parfaitement cohérent avec lui-même.
En conséquence de quoi, c'est extraordinaire, on peut constater l'émergence suivante :
- comme la précédente contradiction a forcé à l'économie, que la suivante résolution de contradiction a ouvert un espace vierge de liberté, on se retrouve avec une puissance disponible largement suffisante pour les autres évolutions qui étaient prévues.
- et donc le développement est énormément plus confortable et agréable !

Ce qui est à noter dans cette histoire est que la contradiction a été un prétexte pour une transformation du système qui s'et avérée finalement :
- 1 : sans aucun rapport avec le réel problème
- 2 : d'une importance transcendantale pour les évolutions futures

Une fois le réel problème résolu, et la réparation annexe effectuée, on peut véritablement observer qu'on vient de passer un cap dans la complexité du système, où non seulement il est plus puissant mais surtout, sachant que cette puissance est sensée s'appuyer surtout sur le processeur, il est aussi énormément plus rapide !

- Le même exemple s'est avéré exact face à cette théorie, avec une autre fonction.

Le texte est encodé de façon interne de façon à simuler les balises HTML avec un langage interne.
Tant qu'il n'était pas récursif, cela obligeait à simplifier et nettoyer de façon drastique les balises HTML entrantes.
De là sont nés des grandes sommes de correcteurs et d'intréprétateurs capables de décider quelle balise est la plus importante, sachant qu'elles arrivent dans toutes sortes de combinaisons d'imbrication.

Donc l'interprétation a forcé la création d'algorithmes récursifs d'une étonnante puissance, mais la lecture restait linéaire, en croyant que c'était plus économique.
Mais une fois le qu'on a pris le coup des algorithmes récursifs on ne peut plus s'emêcher de les appliquer aux fonctions de lecture du code. Et dès ceci fait, l'incroyable se produit, non seulement l'exécution de la portion de code est presque deux fois plus rapide qu'avec un algorithme non récursif (qui s'appelle lui-même, et en l'occurrence, se modifie lui-même en cours de route), mais soudain apparaît une nouvelle émergence :
- une fois cette capacité devenue fonctionnelle, tout le développement du site possède désormais le droit, la légalité, de se conformer à ces processus, de sorte que les templates et la fabrication du « squelette » abandonne ses anciennes structures primitives pour aller utiliser les nouvelles super sophistiquées qui viennent d'apparaître.

- A chaque fois on a ce schéma (à comparer avec l'évolution de la société humaine of course !)

1 : Les fils évolutifs viennent à entrer en collision les uns avec les autres
2 : les contradictions apparentes appellent à une remise en cause de nombreux processus, et cela même alors que ça n'a aucun rapport avec le vrai problème ;
3 : on s'aperçoit d'une chose toute bête qui était juste devant nos yeux depuis le début ;
4 : on crée en deux secondes la solution à ce nouveau problème, en étant très bien entraîné à faire ce travail à cause des précédentes résolutions ;
5 : tout d'un coup tout coule de source ;
6 : et, dans un moment de contemplation, on observe l'émergence, qui peut se définir comme le potentiel évolutif nouvellement libéré des chaînes de la stupidité.

8119