qualitélangagevivantoptimisation

Trouver l'harmonie du code

Christopher Alexander publie à la fin des années 70 trois livres fondateurs d'architecture, qui résonnent à la perfection pour le développement logiciel.

Dans The Timeless Way of Building, il tente de décrire la qualité qui rend les systèmes vivants harmonieux : leur capacité à former un langage de motifs cohérent.

A Pattern Language est un recueil de problèmes/solutions génériques pour les villes et les bâtiments, mais que le Gang des 4 transforma pour des problématiques cette fois liées à l'informatique dans Design Patterns: Elements of Reusable Object-Oriented Software.

Avec cette vision abstraite, bâtir une application web fonctionnelle et efficiente c'est :

Solidement identifier les motifs qui la compose et les imbriquer de façon harmonieuse pour optimiser les flux de données.

répétitionprobleme récurrentsolution générique

Qu'est-ce qu'un motif ?

Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.

- A Pattern Language,Cristopher Alexander

Dans son sens courant, un motif est un ensemble de propriétés qui se répètent (occurences) dans un groupe d'individus.

Dans le dictionnaire, on lit également : ce qui pousse à agir, ce qui justifie, intention ...

Christopher Alexander les définit comme un problème récurrentet la solution générique pour y remédier.

Dans l'informatique, un motif est une structure de fichiers, instructions, données, propriétés qui répond effectivement à des besoins répétitifs.

Certains sont relatifs à des langages de programmation, d'autres à des frameworks mais la majorité des motifs sont transverses.

Attention à ne pas trop remonter loin dans l'abstraction car sinonvous pourriez tomber des nus en tentant de résoudre l'équation :

Le motif motif est une instance de lui-même.

implémentationcontextedescription

Comment utiliser un motif ?

Un motif est une idée et ne peut par conséquent être utilisé directement dans le code.

L'implémentation d'un motif dépend du langage, du paradigme et, en bonne partie, des humains impliqués dans le projet.

Dans A Pattern Language, la solution générique proposée pour répondre à un problème peut être facilement materialisée en suivant la description de celui-ci.

La plupart des motifs apparaissent tout seul et il convient simplement de les reconnaître pour, éventuellement les corriger, mais surtout les connecter.

La difficulté réside essentiellement là : assembler correctement toutes ces occurences de motifs pour former le plus fluide et élégant langage de motifs.

répertoirework in progress

Liste des motifs informatiques

Je présente ici mon propre langage de motifs, fait de ceux que je connais et que je sais mettre en relation.

Dans le temps, j'aimerais beaucoup pouvoir ajouter leur description, le problème qu'ils adressent et la façon dont ils proposent d'y répondre.

Cette liste est forcément non-exhaustive, et je vous incite fortement à y contribuer :)

intelligence collectivecontactamélioration continue

Contribuer

Pour étendre ce dictionnaire de motifs, vous pouvez me contacter directement ou bien même ouvrir une PR sur Github.

Le langage des motifs est sans (début ni) fin.

Il est aussi vaste que l'intersection de tous les contextes et problématiques métiers :

C'est proprement exponentiel et inconcevable !

Restez connecté !