URL: https://linuxfr.org/users/jul/journaux/poc-transformer-les-tableaux-associatifs-dict-map-en-vecteur-algebrique Title: PoC : Transformer les tableaux associatifs (dict/map) en vecteur algébrique Authors: Jul Date: 2026年04月13日T19:23:25+02:00 License: CC By-SA Tags: algèbre et programmation_orientee_objet Score: 4 La PoC (*Preuve de concept*) dont il est ici question est en python, mais elle est généralisable à tout langage objet. # Le projet Aujourd'hui à 99% de couverture de code on peut considérer la PoC complète. Le code source [sur github est ici](https://github.com/jul/archery). Le projet vise à transformer de manière portable les tableaux associatifs en vecteur algébrique. Pour ça on part d'un développement initialement [piloté par les propriétés algébriques](https://github.com/jul/archery/blob/master/consistent_algebrae.py#L35) pour obtenir du code *chez moi ça marche*©. Pourquoi ? Parce que c'est drôle, mais incidemment, et on va explorer plus tard comment : c'est utile. La [présentation FOSDEM 2017 est ici](http://jul.github.io/cv/pres.html#printable), la [version vidéo est ici](https://www.youtube.com/watch?v=Rd6rY5zNcGM). # Comment ? En utilisant des [traits](https://fr.wikipedia.org/wiki/Trait_(programmation)) ou [mixins](https://fr.wikipedia.org/wiki/Mixin) (votre éclairage sur le sujet est bienvenu) par surcharge des opérateurs (à droite et à gauche) on obtient des comportements qui sont compatibles avec n'importe quoi qui a l'interface d'une table associative. En composant les traits, on obtient deux familles de tableaux associatifs algébriques  Les tableaux associatifs algébriques qui supportent la logique de combinaison linéaire. Et les tableaux associatifs vectoriels qui supportent les opérations sur la norme, le produit scalaire et le cosinus. # Utilité ## Avoir des vecteurs de dimensions n et fractal Autant la fractalité des vecteurs me laisse de marbre et je ne vois pas l'utilité, autant avoir des vecteurs indéfinis est utile. Un cas simple est le fameux « word counter » (*compte mots*) utilisé dans les exemples d'indexation textuelle. Plus un cosinus est proche de 1 plus vos deux vecteurs pointent dans la même direction ce qui permet de mesurer la similarité. Ce qui est vrai avec des *comptes mots* est vrai avec d'autres vecteurs. ## Utiliser python comme démonstrateur de pseudo code qui « marche » pour de l'objet Foncièrement, les ficelles utilisées dans ce projet sont les mêmes que pour du C++/ruby/php?/C# : de la bonne vieille surcharge d'opérateur et des utilisations d'interfaces. Il est donc possible de porter le code en utilisant les algorithmes pas très sioux utilisés et les tests vers d'autres langages.