Salut, je fais quelques recherches en ce moment et je me demandais pour ma culture perso : existe-t-il un langage qui permette de manipuler les concepts de classe, type, interface, etc. comme des objets ?
Dans ma tête un tel langage permettrait notamment de créer des classes à la volée pendant l'exécution du code et de les manipuler comme des objets. Ou même de manipuler des classes préalablement définies pour leur ajouter des méthodes ou des propriétés.
Je ne suis pas certain des applications que pourrait avoir un tel langage, mais je me demandais si ça existait.
Et pour poursuivre dans ma recherche de concepts informatiques bizarres, je me demandais aussi si ça existait des "interfaces soustractives" ? En gros, une interface normale permet de définir les méthodes qu'implémente une classe, et une interface soustractive permettrait de définir les méthodes que n'implémente pas une classe. Encore une fois, pas certain de l'intérêt pratique, mais peut-être un intérêt sémantique quand même.
En fait, l'idée que j'ai derrière tout ça, c'est des agents capables de manipuler des classes : dans une simulation multi-agent, un agent pourrait se créer une base de connaissance en se construisant des classes, des types, des interfaces et pourrait manipuler ces éléments.
Par exemple, un agent "conducteur" se balade dans un monde virtuel, il tombe sur une voiture. Evidemment l'agent n'a pas accès aux propriétés/méthodes de la voiture (il n'a accès qu'aux méthodes permettant de manipuler son propre corps), il va donc se construire une classe "voiture" qu'il va garder en mémoire et il va y mettre tout ce qu'il peut supposer sur les propriétés et les méthodes de la voiture après avoir interagi avec la voiture. Toutes les interactions entre l'agent et la voiture qui donnent un résultat pourraient faire l'objet d'une méthode dans cette classe "voiture". Et si dans la classe construite par l'agent il y a la méthode "accélérer", alors l'agent pourra utiliser par la suite cette méthode "accélérer" pour faire avancer la voiture. Cette méthode "accélérer" aura été défini par l'agent pour décrire la voiture : dans le corps de cette méthode il serait spécifié "j'appuie sur la pédale à droite dans la voiture".
Maintenant, mettons que la voiture ne roule plus, alors l'agent pourra créer l'interface soustractive "en panne" qui spécifie qu'une voiture n'implémente pas la méthode "accélérer".
Quelqu'un connaîtrait un langage ou même une bibliothèque qui permettrait ça ?