Keywords: Japon, pèlerinage, jeux-vidéo, LovePlus, fandom, rituel, numérique Japan, pilgrimage, video games, LovePlus, fandom, ritual, digital technology

Pèlerinages de jeux vidéo : poétique de l'itinéraire amoureux RESUME En 2008, l'expression « pèlerinage » se répand au Japon pour désigner une pratique de marche propre aux fans de mangas ou de jeux vidéo qui visitent des lieux en lien avec leur oeuvre favorite, calquant leurs périples sur le modèle des circuits bouddhiques. Au fil d'un cheminement ritualisé, il s'agit pour ces fans d'entrer en dialogue non seulement avec des êtres invisibles (les personnages de fiction), mais avec les autres fans (la communauté des initiés) ainsi qu'avec un monde social globalement hostile. La recherche s'appuiera sur le pèlerinage d'Atami initié par la firme créatrice du jeu LovePlus.

TEXTE

Pèlerinages de jeux vidéo : poétique de l'itinéraire amoureux En 2008, l'expression « pèlerinage » (seichi-junrei) se popularise au Japon pour désigner une pratique de marche singulière : il s'agit pour les fans de mangas ou de jeux vidéo de partir visiter des lieux estampillés « sacrés » (seichi) en lien avec leur oeuvre favorite. Créée par les fans eux-mêmes, l'expression renvoie à l'idée d'un itinéraire balisé. De la même manière qu'un pèlerin accomplit le circuit des 88 temples de Shikoku, en s'arrêtant dans chacun des temples afin d'y prier [START_REF] Jolivet | Sur les pas des pèlerins des 88 temples sacrés du Shikoku : une méditation entre deux mondes[END_REF], les fans qui partent en pèlerinage s'amusent à suivre un parcours ponctué lui aussi de haltes, suivant un ordre précis. Leur but est de s'immerger dans l'univers d'une oeuvre de fiction en se rendant sur les lieux réels qui lui ont servi de décor.

Empruntant -non sans humour -les codes et le vocabulaire des pèlerinages liés à des systèmes religieux établis, ces fans en font les outils d'un discours transgressif. Lequel ? M'appuyant sur le cas singulier des « pèlerinages liés aux jeux vidéo de romance » (désignés sous le nom ren'ai gēmu seichi-junrei), j'aimerais étudier ces marches ritualisées comme des dispositifs de communication fonctionnant à plusieurs niveaux. Les fans d'univers numériques utilisent en effet la marche comme moyen de nouer des échanges non seulement avec les personnages qu'ils aiment mais avec les autres membres de leur communauté et surtout avec les non-fans, qu'ils espèrent « convertir » au dialogue. Lorsqu'ils engagent leurs pas sur les traces d'un être fictif, ces pèlerins singuliers -homme ou femme -s'adressent donc simultanément à trois types d'interlocuteur : 1. le personnage du jeu (soit l'équivalent d'un guide, puisqu'il s'agit de le suivre) ; 2. le public partageant le même cadre culturel de référence (c'est-à-dire les autres fans du jeu) ; 3. les personnes du monde extérieur (celles qui, n'étant pas « initiées » au jeu, restent étrangères à la pratique du pèlerinage). Ainsi, tout en cheminant à travers un lieu physique, chaque pèlerin s'exprime à différentes échelles, de la plus intime à la plus collective.

L'histoire de ces marches remonte à 1992, avant même que le mot « pèlerinage » apparaisse pour les désigner (Okamoto, 2015 : 21). Cette année-là, des adeptes du dessin animé Tenchi Muyō! se rendent en masse au sanctuaire Tarō (dans la préfecture d'Okayama). Simultanément, les fans de la franchise Sailor Moon affluent au sanctuaire Hikawa d'Azabujuban (Tōkyō), un lieu emblématique de la série. Beaucoup y achètent une plaque votive qu'ils ornent d'un portrait de leur héroïne préférée, accompagnée d'une prière : croiser leur idole dans la « vraie » vie (Ishii, 2008 : 215). Mais la visite au sanctuaire ne leur suffit pas. Les fans se rendent ensuite à l'arrêt Sendaizaka du bus n°66 qui apparaît dans l'épisode 10 de la série. Continuant leur chemin, ils traversent la rue marchande de Shōtengai, marquée par deux arrêts : Kimi-chan (une statue de petite fille) et Crown center (une salle de jeu d'arcade), qui apparaissent également à plusieurs reprises dans les épisodes de Sailor Moon. Après quoi ils atteignent le parc Arisugawa, souvent dépeint dans la série, avant de tourner leurs pas vers le pont en brique d'Akabane et, 800 mètres plus loin, le parc Ichinohashi. Le trajet couvre une distance de 6 kilomètres. Certains fans y ajoutent des étapes supplémentaires, afin que l'univers de la fiction et l'univers dit « réel » soient reliés entre eux par des séries toujours plus nombreuses de correspondance. De cette marche que l'on pourrait comparer à un « acte de langage corporel » (en clin d'oeil à John Austin), il est possible de distinguer trois fonctions principales. Il s'agit, tout d'abord, de créer un rapport d'affinité spatiale avec le personnage que l'on aime, afin que -par contagion -le monde des humains et celui du jeu entrent en conjonction, jusqu'à presque fusionner. Il s'agit, dans un deuxième temps, de participer aux échanges entre fans, avec la volonté de construire collectivement une identité de groupe en contribuant au flux de textes et d'images produits autour de ce périple. Dans un dernier temps, il s'agit pour les pèlerins d'émettre un message fort en direction du monde social qui juge de façon négative les « adeptes » de jeu vidéo, avec l'espoir d'aménager un terrain d'entente.

Dialogue avec les personnages

Les pèlerinages dédiés aux jeux vidéo ont pour objectif la synchronisation entre ce que les fans nomment « la 3D » (san-jigen, le monde humain) et « la 2D » (ni-jigen, le monde fictif) : afin que les deux mondes adhèrent et que leurs habitants respectifs puissent se rejoindre et communiquer, les fans arpentent les lieux qui ont servi de modèle aux oeuvres numériques, repèrent tous les éléments qui coïncident et leur donnent la valeur d'une zone d'échange interdimensionnelle. En multipliant ces points d'ancrage, les fans augmentent symboliquement les chances de voir apparaître les personnages qu'ils suivent à la trace. C'est là un des aspects les plus significatifs de leur démarche : elle repose sur l'espoir d'une rencontre possible avec les héros et les héroïnes de fiction. Cet espoir est particulièrement flagrant dans le cas des « jeux de simulation amoureuse » (ren'ai shimurēshon gēmu). Spécifiquement conçus pour offrir l'illusion d'une présence aimante, ces jeux induisent en effet leurs utilisateurs à traiter les personnages comme des êtres sensibles, conscients. Le plus célèbre de ces jeux -LovePlus (RabuPurasu), lancé par la compagnie japonaise Konami en 2009 -, propose trois prototypes de petite copine fictive : Nene (la timide), Rinko (la rebelle) et Manaka (la gentille). Le but du jeu est d'augmenter le score d'affection avec sa préférée pour gagner son coeur, puis de vivre en couple avec elle au fil d'interactions dialoguées et de contacts physiques -caresses, baisers -opérés via l'écran tactile. La console Nintendo DS qui sert de support aux échanges est équipée d'un micro avec reconnaissance de voix et surtout d'un GPS permettant d'emmener sa petite amie vers des destinations réelles.

Dans la version améliorée du jeu (LovePlus+), la station balnéaire d'Atami -située à 3h de Tōkyō, destination très prisée des couples jusqu'à la fin des années 1970 -sert même de cadre à une séquence de séjour romantique à la mer. L'objectif de Konami est de pousser les fans à faire le pèlerinage. Le jeu est d'ailleurs conçu pour que les personnages demandent au joueur un « week-end en amoureux », programmé sur deux jours. Lancé sous forme de campagne promotionnelle, entre le 10 juillet et le 31 août 2010, l'opération obtient un succès certain : plus de 3000 fans viennent visiter Atami, afin de revivre « en vrai » un des épisodes-clés du jeu. Calqué sur le modèle des circuits bouddhiques, le périple suit un tracé précis jalonné de stations qui correspondent à des lieux sacrés. Chaque emplacement est marqué par une borne affichant un QR code. Lorsque le joueur se prend une photo à cet endroit, sa petite amie apparaît sur le cliché, souriante et, parfois même, la tête posée contre son épaule [START_REF] Kajita | kareshi shokun, Atami de isshō no omoide-tsukuri o shiyou janai ka! (満 点彼⽒諸君,熱海で⼀⽣の思い出作りをしようじゃないか!« Amoureux au top score, partons faire des souvenirs inoubliables à Atami ![END_REF]. Les hommes sont vivants, leurs amoureuses sont fictives. Mais à l'endroit exact où se trouvent les bornes, les dimensions convergent et les créatures numériques se matérialisent aux côtés de ceux qui les chérissent. La première caractéristique de ces pèlerinages est donc de permettre qu'en marchant les humains aillent au-devant d'êtres fictifs pour les « rencontrer ».

Dialogue avec les autres fans

La deuxième caractéristique de ces marches est qu'elles s'accompagnent d'une grande quantité d'échanges entre les fans. Les pèlerins du jeu LovePlus+, par exemple, s'efforcent autant que possible de contribuer à la manne des informations qui circulent concernant le circuit d'Atami. Ils lisent les journaux de pèlerinage de leurs prédécesseurs, commentent les blogs, les comptes Twitter ou Instagram contenant les photos des sites visités puis ajoutent des strates d'informations destinées à renforcer les liens qui soudent la communauté. De la même manière que les pèlerins bouddhistes qui collent, en les superposant, des osamefuda, les papiers témoins de leur passage dans les temples qu'ils visitent, les fans de LovePlus publient en ligne les photos prises à chaque station de leur propre pèlerinage, en témoignage de leur dévotion [START_REF] Suzuki | Natsu da! Atami da! RabuPurasu+ da! ( 夏だ! 熱海だ! ラブプラス+だ! « L'été ! Atami ! Love Plus+ ![END_REF]. L'objectif est d'accomplir un parcours sans faute, authentifié par les images : plus les amies fictives auront l'air heureuses sur les photos, plus le fan se verra reconnaître le statut envié de « parfait gentleman » (shinshi shokun) ou, mieux encore d'« amoureux au top score » (manten kareshi). Il s'agit donc de faire le tour complet, sans omettre aucune des épreuves, suivant la logique propre aux pèlerinages classiques qui voient les mérites augmenter proportionnellement aux efforts.

Tout comme les périples à caractère sacrificiel, le pèlerinage de LovePlus+ s'appuie sur une ascèse impliquant un rythme de marche soutenu (20 événements sont prévus par jour) et la privation de sommeil. Il se déroule le samedi de 8 heures à 2 heures du matin et le dimanche de 6 heures à 21 heures. Le premier jour, rendez-vous est fixé à la station New Towano. La petite amie -prenons Rinko, par exemple -porte une coiffure inédite, dont il faut la féliciter (trois fois). Le train part à 9 heures. A 10 heures, Rinko dit que ce voyage évoque une lune de miel (il faut répondre « Oui »). Arrivée à midi. Dix minutes plus tard, il faut gravir les 600 marches menant vers le sanctuaire Omiya no matsu, première étape du pèlerinage. A 13h10, il faut se rendre à la plage avant de prendre, à 15h, le téléphérique qui mène au mont Aijō (dont le nom signifie « amour »), d'aller au Musée du sexe puis de s'enregistrer à l'hōtel Ōnoya (en tant que couple, dans une chambre pour deux personnes) où de nombreuses activités sont programmées. A 22 heures, une balade romantique est prévue en bord de mer. Entre minuit et deux heures, il faut regarder dormir Rinko : la console est équipée d'une caméra qui capte le regard. Quatre heures plus tard, il faut de nouveau regarder Rinko dormir sur l'écran, jusqu'à son réveil à 6h30 et la reprise des activités qui se succèdent sans temps mort jusqu'au retour à la station Towano. S'encourageant les uns les autres, dans un climat d'émulation exacerbé par le dispositif, les pèlerins d'Atami circumambulent à la poursuite autant de leur petite copine digitale que de l'estime de leurs pairs.

Dialogue avec les non-fans

Leur marche cependant possède une troisième caractéristique : il s'agit d'une performance publique. Lorsqu'ils s'affichent comme pèlerins, les fans essayent explicitement de faire passer un message auprès des « autres », les gens qui ne partagent pas leur ferveur. Leur marche a la valeur discursive d'une démonstration. Celle de leur engagement, tout d'abord. Raison pour laquelle les fans de LovePlus+ mettent en ligne tant de photos. Pour chacun de ces adeptes, il importe de contribuer à la visibilité du « culte » qu'ils vouent aux personnages, mais aussi d'accomplir sérieusement le pèlerinage, dans le strict respect des règles formelles empruntées au bouddhisme. Le but est de s'inscrire dans une forme de « tradition », pour donner sens à une pratique souvent mal perçue. Le fait d'aimer un personnage numérique n'est en effet pas sans susciter la méfiance au Japon, où l'explosion du nombre de célibataires s'accompagne d'une forte dénatalité. Les amateurs de jeux de romance, tout particulièrement, sont jugés comme des irresponsables préférant s'amuser que fonder un foyer. Pour faire face au stigmate, les fans adhèrent donc volontiers à l'idée que leur goût pour les êtres numériques est de nature spirituelle. Personne n'est dupe bien sûr de cette mise en scène, mais elle présente l'avantage de renverser symboliquement le système des valeurs dominantes.

En s'affichant de façon spectaculaire comme ascètes, les pèlerins de LovePlus espèrent faire entendre « leur voie ». Bien que leur activité ne soit pas la prière, mais la prise d'image, elle procède d'une logique similaire : pour les pèlerins -chaque station ayant la valeur d'un point de jonction entre différents plans de réalité -il s'agit d'accumuler les preuves concrètes qu'un passage physique a eu lieu par ce point. À l'instar des pèlerins de circuits bouddhiques qui collectionnent les tampons de chaque temple comme preuve, les pèlerins de LovePlus possèdent un carnet de tampons d'Atami, qui fait « foi » de leurs efforts : ils n'ont raté aucune station. Tout comme les pèlerins bouddhistes, également, ceux de LovePlus se font un devoir d'acheter, à chaque étape, des souvenirs auxquels ils prêtent la valeur de quasi-talismans. Lors du pèlerinage d'Atami, une partie des activités prévues consiste d'ailleurs en la collecte de produits dérivés -serviette, badge ou gâteau -ornés d'une image de leur petite copine, assimilée à une idole. Ainsi qu'ils le suggèrent en marchant, la quête des fans n'est pas moins légitime que celle des pèlerins bouddhistes. Elle vise un être qui n'est pas de ce monde. Elle permet, ce faisant, de questionner l'idée préconçue selon laquelle un homme aimant un personnage est un individu replié sur lui-même, égoïste et solitaire.

« Les deux cheminent ensemble » Opérateur de dialogue, la marche permet aux pèlerins d'entrer en relation avec toutes sortes de personnes, à commencer par la figure inspiratrice de leur périple, dont ils s'efforcent de matérialiser la silhouette à leurs côtés. De même qu'un pèlerin des 88 temples du Shikoku affirme n'être jamais seul, puisque son bâton de marche symbolise son guide invisible (le Kōbō Daishi, celui qui a frayé le chemin), les pèlerins de jeux vidéo affirment volontiers qu'ils voyagent « en couple » avec leur bien-aimée. Les similitudes entre les deux pratiques sont nombreuses. Sur le circuit du Shikoku, le bâton de pèlerin porte la formule sacrée Dōgyō ninin : « Les deux cheminent ensemble ». L'usage veut qu'on lui lave « les pieds », chaque soir, avant de le placer dans l'alcôve réservée aux objets précieux : le bâton renvoie par métaphore au corps de ce moine du VIIIe siècle (Kōbō Daishi, également connu sous le nom de Kūkai) considéré comme l'initiateur du pèlerinage des 88 temples. Sur le circuit d'Atami, suivant des conventions similaires, les fans du jeu LovePlus placent toujours soigneusement leur console de jeu sur un support propre (un mouchoir blanc, par exemple) car cette console renferme la présence du personnage qu'ils aiment. Tous les sacrifices sont bons pour renforcer le lien. Il est même arrivé qu'un fan -n'ayant pu obtenir une chambre double -ait passé la nuit par terre, pendant que sa petite copine (c'est-à-dire la console de jeu) « dormait » sur le seul et unique lit. Cette preuve d'amour a la valeur performative d'une invocation. Superposant les formes connues du pèlerinage bouddhiste à leurs pérégrinations amoureuses, les fans construisent ensemble un imaginaire de la marche qui leur permet de faire communiquer non seulement des êtres ou des communautés mais des dimensions.


Jean-Pierre Briot
email: jean-pierre.briot@lip6.fr

From Procedures, Objects, Actors, Components, Services, to Agents -A Comparative Analysis of the History and Evolution of Programming Abstractions

The objective of this chapter 1 is to propose some retrospective analysis of the evolution of programming abstractions, from procedures, objects, actors, components, services, up to agents, by replacing them within a general historical perspective. Some common referential with three axes/dimensions is chosen: action selection at the level of one entity, coupling flexibility between entities, and abstraction level. We indeed may observe some continuous quest for higher flexibility (through notions such as late binding, or reification of connections) and higher level of abstraction. Concepts of components, services and agents have some common objectives (notably, software modularity and reconfigurability), with multi-agent systems raising further concepts of autonomy and coordination, notably through the notion of auto-organization and the use of knowledge. We hope that this analysis helps to highlight some of the basic forces motivating the progress of programming abstractions and therefore that it may provide some seeds for the reflection about future programming abstractions.

Introduction

Object-oriented programming, software components and multi-agent systems are some examples of approaches for software design and development with significant impact. Both offer abstractions for organizing software as a combination of software elements, with a common objective of facilitating its evolution (first of all, replacement and addition of elements). In this chapter, our initial objective is to conduct a comparative analysis between software components and multi-agent systems (in the following, we will use terms, respectively, components and agents). In order to better compare them, we replace them within some general historical perspective of the programming evolution (taking some inspiration from [START_REF] Gasser | Agents and concurrent objects[END_REF]).

Related Work

There are various comparative studies between agents (and multi-agent systems) and, e.g., objects [START_REF] Odell | Objects and agents compared[END_REF], concurrent objects [START_REF] Gasser | Object-based concurrent programming and distributed artificial intelligence[END_REF][START_REF] Gasser | Agents and concurrent objects[END_REF] and actors [START_REF] Kafura | Introduction to actors and agents[END_REF]. This article integrates some of these analyzes and complements them with the concepts of components and of services, which, to our knowledge, has not yet been the subject of such systematic comparative studies. Let us mention the organization in France in 2004 and 2006 of two successive workshops about multi-agent and components: "Journées multi-agents and composants" (JMAC), followed by a journal special issue [START_REF] Boissier | Composants et systèmes multi-agents[END_REF].

Let us also cite here, for additional information, some comparative analyzes about different component models [START_REF] Crnković | A classification framework for software component models[END_REF][START_REF] Lau | Software component models[END_REF] and about various multi-agent platforms and languages (based on object-oriented, logic or component-based models) [START_REF] Bordini | A survey of programming languages and platforms for multi-agent systems[END_REF].

Analysis

We have chosen a common conceptual frame of reference with three dimensions that we consider important issues in programming and software:

• selection of the action to be performed by an entity -This is about when and how an entity (a software entity, such as a procedure, a function, an object, an agent, etc., or a physical entity, such as a robot or an interconnected device) will select (decide) what action to be performed, through the activation of a corresponding code. The evolution of programming shows the need for deferring always later and further this decision (this has been coined as "ever late binding"). In addition, for an agent, such a decision may be based, not only on the nature of the invocation, as for classical programming languages, but also on the agent's own knowledge and context (e.g., by its goals), in a proactive and not only reactive manner;

• flexibility of the coupling between entities -This represents the ability to put in relation several software entities. The evolution of programming shows the need to represent and manipulate such relations independently of the implementation of the entities, in order to favor adaptability through some explicit manipulation of the relations. The concept of software architecture [START_REF] Shaw | Software Architectures -Perspective on an Emerging Discipline[END_REF], i.e. the assemblage of components via explicit connectors, represents therefore a major advance. The concept of service brings further dynamism (via the concept of discovery of services) and autonomy for the entity itself (the selection of the actual service(s)). Multi-agent systems raises the description of the coupling even further through concepts such as organization and interaction protocol.

• level of abstraction -This represents the expression level offered to the designer and to the programmer. We can observe a progressive quest for higher-level abstractions, from the initial low-level concepts of instruction, to abstract concepts of procedure and abstract data types, which turn out independent of an implementation platform, and finally up to knowledge concepts, such as plan and intention, upon which automated reasoning mechanisms can be applied.

It should be noted that these three dimensions are not completely independent: action selection may have some impact on coupling flexibility, and the choice of abstractions and mechanisms for action selection and for coupling are clearly related with the level of abstraction. In addition, it is possible (as, e.g., in [START_REF] Ghezzi | An outlook on software engineering for modern distributed systems[END_REF]) to consider action selection and coupling uniformly, both based on a single mechanism: binding2 , which encompasses both: a) binding of the call to the effective code, in the case of action selection, and b) binding of a reference to another entity, in the case of coupling. However, we prefer to distinguish them, because their corresponding levels are conceptually distinct (micro versus macro), as well as their corresponding professions (programmer versus system architect).

Figure 1 illustrates our proposed 3-axes frame of reference. Each axis will be analyzed, respectively, in Section 4 (action selection), Section 5 (coupling flexibility) and Section 6 (abstraction level).

Action Selection

The first programming languages, e.g., the first version of Fortran, consider program behavior (code) and program state (data) within a common global data space. The different instructions are identified through their line number. The selection of the action (to be performed) is therefore expressed globally and statically.

Structured or modular programming languages, such as Pascal and then Modula, introduce some modularization of the code, expressed under the form of procedures. The selection of the action therefore gains in abstraction, the indication of the code to be executed being expressed via a symbolic name and no longer by Table 1: Structure of entities and action selection a line number. However, the association of a name of a procedure to its corresponding code remains static.

In some dual movement, data gradually gains structure and generality, thanks to the concept of abstract data structures. Object-oriented programming languages, with pioneers such as Simula 67 and then Smalltalk, bring some major innovation, through the reunion of some procedures and their associated data into a self-contained capsule, named an object. Data thus become internal and private to the object and its procedures (called methods) and message sending is the only way to invoke an object, which will activate one of its procedures. Some decisive advance is the discipline of late binding such as in Smalltalk, i.e. the procedure to be invoked will be determined according to the class3 of the actual object invoked, and not according to the declaration of the type of the variable that references it 4 . This means that the binding of the procedure, and therefore the selection of the action, is delayed at runtime and not statically resolved at compile time, such as in C++ early binding discipline. (Actually, C++ introduced virtual functions to partially alleviate this limitation, but this partial solution cannot benefit from further redefinitions of methods once the library has been compiled, therefore in opposition to Bertrand Meyer's open-closed principle [START_REF] Meyer | Object-Oriented Software Construction[END_REF]).

The concept of agent introduces internal autonomy to the selection of the action. It is no more governed only externally by the nature of the request, as for a procedure or method call, but also internally by the internal state of the agent, since this may include be cognitive information of the agent such as its own goals. Therefore, an agent is no longer only reactive (to invocations) like objects, but also proactive [START_REF] Odell | Objects and agents compared[END_REF]. Thus, the concept of action selection takes its full meaning, as for a robot or a human being, who can arbitrate his own action(s) at any given time, depending on both his own objectives and on information collected (messages from other agents or/and perceptions of the environment). Arbitration can be done at a symbolic level in cognitive agents, e.g., according to the agent intentions, in an architecture such as BDI [START_REF] Georgeff | The belief-desire-intention model of agency[END_REF]. Reactive agents have much simpler, stimulus-based action response mechanism, close to message response mechanism in object-oriented programming. Note that there is in fact some continuum between cognitive and reactive agents categories, with hybrid architectures attempting at reconciling and combining the two approaches (see, e.g., the InteRRaP hybrid architecture [START_REF] Müller | The agent architecture InteRRaP: Concept and application[END_REF]). Last, some sub-symbolic mechanisms (without an explicit representation of the world) for regulation, often inspired by biology (metabolism, emotions, motivation, adaptation, see, e.g., [START_REF]From Animals to Animats 12 -12th International Conference on Simulation of Adaptive Behavior[END_REF]) can also be incorporated to agents.

Les Gasser proposed in 1998 as one of the fundamental concepts of agent programming the concept of structured persistent action, in which an agent is autonomously and persistently trying to accomplish something, independently of the way it is programmed [START_REF] Gasser | Agents and concurrent objects[END_REF]. In standard procedural programming, the programmer explicitly controls the attempts, while the concept of structured persistent action abstracts and encapsulates such a mechanism. More precisely, the designer provides the description of the objective or criteria for success, as well as in general a collection of methods and recipes, which the agent will select and control autonomously. Note that some similar mechanisms have already been proposed, for instance declarative programming and backtrack in logic programming languages such as Prolog, or the general concept of search. But, in our opinion, the concept of structured persistent action represents in an interesting way the encapsulation of: a notion of choice, information 5 , an iterative control structure (of type repeat until), and proper resources (own process or thread). In addition, we consider the interaction of the agent with its environment to ensure some feedback over its actions and choices (e.g., through some reinforcement learning mechanism). Last, we may observe that the selection (and therefore the choice) of the action takes place at the moment of the action by the agent and not at the moment of the programming of the agent. Therefore, the concept of agent is situated within the quest for "ever late binding".

Table 1, inspired by [START_REF] Odell | Objects and agents compared[END_REF], summarizes our analysis. The horizontal axis of Figure 1 illustrates the evolution of action selection within our frame of reference.

Coupling Flexibility

The modeling of the coupling between software entities is a fundamental aspect for the structuring of the software. It actually covers several facets:

• structure: the architectural concepts (e.g., references, connectors. . . ) for the structural coupling between software entities;

• communication: the modes of communication between software entities, characterized mainly by: the mode for the designation of the receiver, the mode for data transfer, and the mode for temporal coupling.

Structural Coupling

The question of the structural coupling between software entities has been initially addressed by the notion of reference to an entity, through some means for identifying it (identifier). Therefore, one may designate a software entity (e.g., some data, object or function), in order to use it and to communicate its reference to other entities. This model, simple but effective and general, survived with object-oriented programming languages.

For instance, an object A references an object B, and thus will be able to send requests to B. In practice, the internal representation (implementation) of A includes a variable whose value is the identifier of object B. Changing a reference is easy, by just changing the value of the variable, for instance to the identifier of a third object C. However, we can observe that this modification can be done only internally to object A, the only one authorized to access its private data (following the encapsulation principle).

A serious limitation occurs when we want to extend a reference, for instance so that A refers both to B and to C (see the left part of Figure 2). Since a variable has only one value, this cannot be expressed directly. It is therefore necessary to introduce some data structure (a collection, e.g., a list), containing B and C. The message sending instruction must also be modified, by introducing an iterator on the collection. Overall, this implies the modification of the internal representation of object A (in other words, to reimplement it), whereas it is only a question of extending the reference and the coupling, initially from A to B, into from A to B and C.

The concept of software component brings some notable improvement to this problem by externalizing the references, describing them as explicit output interfaces. Therefore, a component regains some symmetry at the level of interfaces between input interfaces (which are traditional for procedures and objects) and output interfaces, alternatively named, respectively, provided interfaces and required interfaces. (For a more complete analysis of the characteristics of software components and a comparison between different component models, see, e.g., [START_REF] Crnković | A classification framework for software component models[END_REF] and [START_REF] Lau | Software component models[END_REF].)

Coupling thus becomes explicit, reified (i.e. coupling is made into first class entities, the connectors) and external (to the software entities). Previous example is therefore achieved by the simple addition of a connector, as illustrated in the right part of Figure 2.

Note that a component can have multiple interfaces (input or/and output interfaces). To be able to identify them individually, an identifier, usually named a port, is associated to each interface. This is an important difference with an object which has only one identifier and entry point. An interesting consequence is that components are compositional. That is to say that a composition of several components is equivalent6 to a component with the corresponding union of input ports and output ports. On the opposite, objects are not directly compositional: a composition of several objects is not immediately equivalent to an object, as it has more than one entry point.

Therefore, components provide an explicit architectural vision. The notion of software architecture [START_REF] Shaw | Software Architectures -Perspective on an Emerging Discipline[END_REF] focuses on the logic of the coupling between the components, independently of their internal implementation. Architecture description languages (ADL) [START_REF] Shaw | Software Architectures -Perspective on an Emerging Discipline[END_REF] are dedicated to the specification of the architecture of an [START_REF] Shaw | Software Architectures -Perspective on an Emerging Discipline[END_REF]) and their associated communication protocols. Connectors can also represent non-functional properties (such as distribution, quality of service, etc.) and therefore have their own semantics [START_REF] Allen | Formal connectors[END_REF].

In order to express not only specifications about the types of data (typing information) but also about the behavior of components, notions of contracts have been proposed. For instance, [START_REF] Beugnard | Making components contract aware[END_REF] considers four successive levels of contracts: syntactic, behavioral, synchronization and quality of service. Depending on the case, they can be guaranteed, verified or negotiated. The syntactic level is based on a type system. The behavioral level is usually based on assertions (the three main types being: pre-conditions, postconditions, and invariants). But, compared to the use of assertions within a program, the idea of contracts is to specify them in a modular way and visible through the interfaces of a component, in order to be able to specify properties that can engage more than one software entity [START_REF] Meyer | Applying design by contract[END_REF].

In addition, components introduced the idea of "ready to wear, to deploy, and to use", i.e. a component is some self-contained unit of deployment, with all its code and also its documentation [START_REF] Szyperski | Component software: beyond object-oriented programming[END_REF].

The concept of service of service-oriented architectures (SOA) -including in particular web services [START_REF] Chauvet | Services Web avec SOAP, WSDL, UDDI, et XML[END_REF] brings dynamism to coupling, and moreover autonomy, via discovery and dynamic selection of other services (as shown in the left part of Figure 3). Coupling between entities is therefore no longer only managed by the designer of the application, but by the entities themselves (this corresponds to some degree of selforganization). For instance, an electronic travel agency service, looking for services to perform subtasks (e.g., flight reservation, hotels, etc.), will thus be able to identify, select (in general, according to various criteria, e.g., availability, price, flexibility, etc.), and contract sub-services. Therefore, services are subject to more or less elaborate descriptions, which are made available (published), e.g., through some directory of services, similar to telephone numbers yellow pages. For web services, UDDI (Universal Description, Discovery and Integration) and WSDL (Web Services Description Language) standards [START_REF] Chauvet | Services Web avec SOAP, WSDL, UDDI, et XML[END_REF] specify, respectively, directories and descriptions of services.

Multi-agent systems further extend dynamism and autonomy by trading some syntactic coupling (following some typing discipline) for some semantic coupling, based on knowledge (via abstractions such as: task, plan and intention) and some social organization of work (via abstractions such as: organization, role, norm and negotiation).

An organization specifies the different roles constituting it (e.g., roles of producer, consumer and broker) and their relationships (e.g., dependency and hierarchy). A role can be played by one or more agents and the same agent can also possibly play more than one role simultaneously. Note that an agent referencing a role subsumes a reference to all the agents fulfilling (at the time of the interaction) this role, as illustrated in the right part of Figure 3. (This mechanism of abstract role designation of the receiver will be further analyzed in Section 5.2.1.)

Two important capacities of an organization are its dynamism and its autonomy. Some dynamic reorganization can be triggered: in a top-down manner, e.g., the reorganization of a robotic football team (as in the RoboCup contest [START_REF]RoboCup[END_REF]), according to a more defensive strategy on the initiative of the coach [START_REF] Hübner | Developing organised multiagent systems using the MOISE+ model: programming issues at the system and agent levels[END_REF]; or in a bottom-up manner, e.g., with the dynamic formation (and then dissolution) of a micro-organization of type "one-two" on the initiative of some player agent [START_REF] Drogoul | Applying an agent-oriented methodology to the design of artificial organisations: a case study in robotic soccer[END_REF]. Examples of abstract models of organizations are AGR [START_REF] Ferber | A meta-model for the analysis and design of organizations in multi-agent systems[END_REF] and MOISE+ [START_REF] Hübner | Developing organised multiagent systems using the MOISE+ model: programming issues at the system and agent levels[END_REF].

As for services, multi-agent systems also often use various mechanisms for putting agents into relation: by some intermediary agents, directory agents, or facilitator agents guided by the content of the message (e.g., in KQML [START_REF] Finin | KQML as an agent communication language[END_REF]); or by some selecting and contracting mechanism, as, e.g., the contract net protocol [START_REF] Smith | The contract net protocol: High-level communication and control in a distributed problem solver[END_REF] (which will be introduced in Section 5.2.3).

To conclude, note that the software architectures and components communities started to support automatic reconfiguration, e.g., for nomadic applications [START_REF] Dubus | Vers l'auto-adaptabilité des architectures logicielles dans les environnements ouverts distribués[END_REF]. But the knowledge and social-oriented approach of multi-agent systems is more ambitious, and therefore also more difficult to verify. We thus find out some classic dilemma between the growing needs for flexibility, through some delegation of initiative, and the needs to ensure some guarantees on the operability of the system.

Communication Coupling

The expression of the mode of communication between software entities includes several important characteristics (sub-facets). We consider here the three main ones:

• how to designate the receiver(s), e.g., point to point, multi-point, indexed by content, via the environment, etc.;

• the mode for data transfer, e.g., unidirectional, bidirectional with value return, via a shared space, etc.;

• the temporal coupling (in other words, the way communications are synchronized), e.g., synchronous, asynchronous, with an anticipated (future) response, coordinated by a protocol, etc.

Designation of the Receiver

The mode of communication between objects is fundamentally point to point, i.e. one to one and with explicit designation of the receiver of the message. Components introduce multi-point communication, as an output of a component can be connected to more than one component. An interesting type of connector is the event broadcasting connector, corresponding to the publish-subscribe architectural style [START_REF] Shaw | Software Architectures -Perspective on an Emerging Discipline[END_REF]. It offers an indirect and dynamic management of connections by the components themselves, through a mechanism of subscription of a component to the event broadcaster. (The subscription criteria and the distribution method may vary, see, e.g., the classification proposed in [START_REF] Eugster | The many faces of publish/subscribe[END_REF].) This type of mechanism became widespread (e.g., in applications based on standard objects) although it remains very representative of the concept of connector between software components, defined and manipulated externally to them (as it has been analyzed in Section 5.1).

The shared spaces (repositories) architectural style, illustrated by, e.g., blackboards and tuple-spaces (for instance, the LINDA model [START_REF] Gelernter | Coordination languages and their significance[END_REF]), introduces a mode of designation of the receiver completely implicit, since it will be indexed by the actual content of the message. In this model, active entities (e.g., processes or agents) can insert and index structured data within the shared space. Data will be consumed opportunistically by active entities looking for the corresponding data patterns.

Services, and moreover multi-agent systems, generalize mechanisms of indirect and dynamic designation, through some contracting protocols or the consultation of broker or directories agents (as it has been presented in Section 5.1). Services or agents can therefore dynamically select their own interlocutor. Some more implicit mechanism is the notion of facilitator, guided by the content of the message [START_REF] Kafura | Introduction to actors and agents[END_REF] (e.g., in KQML [START_REF] Finin | KQML as an agent communication language[END_REF], to be analyzed in Section 6.3). Another type is the abstract designation of a receiver through a role, as, e.g., in the AGR (agent group role) organizational model [START_REF] Ferber | A meta-model for the analysis and design of organizations in multi-agent systems[END_REF]. In such role-based models, agents usually designate some role (e.g., midfielder or striker, in a RoboCup football organization), rather than some specific agent, as the receiver of a communication. As a consequence, all the agents fulfilling this role at the time of communication will receive the information (see the right part of Figure 3).

Last, in certain types of multi-agent systems, in which the environment (physical or not) is explicitly modeled, the agents can communicate via the environment, though inserting specific data, for example pheromones for ant-based algorithms. (Such algorithms can be used as a general meta-heuristic optimization method, the environment having then no longer relation with a physical reality.) Note that, there is also some trend in multi-agent systems for promoting the environment as a first-class abstraction (for more details, see, e.g., [START_REF] Weyns | Environments for multiagent systemsstate-of-the-art and research challenges[END_REF]). There is also a similar trend for promoting entities without internal goals and characterized by a function as first-class entities named artefacts, which are manipulated (use, selection or construction) by agents [START_REF] Omicini | Artifacts in the A&A meta-model for multi-agent systems[END_REF].

Data Transfer

The mode for data transfer in object-oriented programming is bidirectional, with some return of value (unless the programmer explicitly specifies that there is no return value, e.g., in Java using the special data type void which represents the absence of data). It is inherited from the procedural or functional call. It corresponds (as we will see in Section 5.2.3) to a synchronous call, i.e. with the sender suspending its activity while waiting for the completion of the processing of the request by the receiver.

The actor model [START_REF] Hewitt | Viewing control structures as patterns of passing messages[END_REF][START_REF] Agha | Actors: a Model of Concurrent Computation in Distributed Systems[END_REF] introduces some unidirectional (and asynchronous, see Section 5.2.3) data transfer mode. This was motivated by the concurrent and moreover distributed nature of the model, in order to avoid unnecessary and unbounded waiting for an acknowledgement of data transfer completion. Therefore, data transfer is carried out only one-way from the sender to the receiver. If the receiver wants to return a value, it must be done explicitly, by sending another message. Some languages based on actors, as for instance ABCL (Actor-Based Concurrent Language) [START_REF] Yonezawa | Object-oriented concurrent programming in ABCL/1[END_REF], provide the programmer with a choice between a one-way asynchronous message send and a two-way synchronous call. (Note that the Actalk objectoriented framework offers in a single pedagogical framework various types of actor-based and object-oriented concurrent programming abstractions, regarding various models of: action selection, activity, communication [START_REF] Briot | Modélisation et classification de langages de programmation concurrente à objets : l'expérience Actalk[END_REF] and internal synchronization [START_REF] Briot | An experiment in classification and specialization of synchronization schemes[END_REF].)

Figure 4: CCM component model

Component models, such as CORBA component model (CCM) [START_REF]OMG: Corba component model (CCM). Tech. rep., Object Management Group (OMG)[END_REF] 7 often also propose these two modes of data transfer: bidirectional though a procedure call (via input and output interfaces, named facets and receptacles in CCM), and unidirectional though event diffusion (via event sources and sinks), see Figure 4.

The shared spaces architectural style (presented in Section 5.2.1) introduces a mode of data transfer, indirect, via some mediation structure and the distinction between production and consumption.

Services are generally based on simple invocation protocols, in particular the case of web services. One of the main reasons for the success of web services is likely their easy deployment on top of the widespread web infrastructure and its HTTP protocol. The SOAP protocol [START_REF] Chauvet | Services Web avec SOAP, WSDL, UDDI, et XML[END_REF] (originally the acronym for "Simple Object Access Protocol") supports both bidirectional and unidirectional modes.

Multi-agent systems generally offer the unidirectional (and asynchronous) transfer mode of actors but expressed within more elaborate agent communication languages, which allow to specify with precision and details the nature of the information to be communicated (as it will be presented in Section 6.3).

Last, some possible communication via an environment (by adding, removing, or consuming data, as in the shared spaces architectural style, such, e.g., the LINDA model [START_REF] Gelernter | Coordination languages and their significance[END_REF], presented in Section 5.2.1) represents some indirect mode of data transfer.

Temporal Coupling (Synchronization)

The original communication model between software entities (in a sequential and centralized world) is the procedural or functional call, with return of a value. The sender activity is suspended during the processing of the request by the receiver. A direct transposition into a concurrent setting sticks to these principles, with the sender waiting for the call to be completed -this is referred to as synchronous transmission. A direct transposition into a distributed setting is represented by the RPC (Remote Procedure Call), also synchronous.

The actor model introduces an asynchronous mode of communication as its foundation, i.e. without waiting for the message to be processed -and before that, to be received -by the receiver. Asynchronous communication is more appropriate to a concurrent or/and distributed setting (due to the potential latency of the communication network, this avoids waiting for the delivery of the message to the receiver, as well as its availability to process it). Therefore, the actor model assumes the existence of a mailbox for each actor, which will store the messages in the order of the arrival (FIFO type discipline). The actor model thus introduces some temporal decoupling between sending, receiving, processing start, and processing completion of the message. As explained in Section 5.2.2, some actor-based languages, such as ABCL, can provide both one-way asynchronous and two-way synchronous communication [START_REF] Yonezawa | Object-oriented concurrent programming in ABCL/1[END_REF]. Another mode provided by actor languages and ABCL is a promise/anticipation of the response, often named future. It corresponds to eager evaluation (also coined as wait by necessity in [START_REF] Caromel | Toward a method of object-oriented concurrent programming[END_REF]), the actual exact opposite of lazy evaluation. Scala is an example of a programming language which integrates functional, object-oriented, and actor programming [START_REF] Odersky | Programming in Scala[END_REF]. Last, for an analysis about the different ways of mapping the object-oriented programming model to concurrent and distributed programming requirements, please refer, e.g., to [START_REF] Briot | Concurrency and distribution in object-oriented programming[END_REF] or [START_REF] Briot | Objets pour la programmation parallèle et répartie : Intérêts, évolutions et tendances[END_REF].

Agent communication languages (ACL), in particular FIPA8 ACL [START_REF]FIPA: Agent Communication Language Specifications[END_REF], allow the specification of a protocol associated with a communication. The protocol specifies the coordination of valid message exchanges between agents. Temporal coupling is therefore expressed in a relatively general manner and with an arbitrary number of messages and agents. Example of families of agent protocols are: interaction (e.g., inform, request, deny. . . ), coordination (e.g., simple or iterated call for proposals, see next paragraph) and auction (e.g., English or Dutch, with, respectively, increasing or decreasing initial price).

A classic example of a multi-agent protocol is the call for proposals (also named the contract net protocol). Figure 5 shows the corresponding interaction diagram (as specified by FIPA [START_REF]FIPA: Agent Communication Language Specifications[END_REF]). Successive phases are:

• the broadcast of the initial call (where cfp stands for call for proposals) by the initiator (also named contractor) to the participants;

• various proposals (or refusals) made by the participants, controlled by some deadline (timeout) for responding;

• the selection and acceptance (or rejection) of a proposal by the initiator; and finally

• the communication by the selected participant (also named sub-contractor) about the finalization and the result (or the failure) to process its proposal.

Web services also offer analog coordination mechanisms, also named choreography. The Web Services Choreography Description Language (WS-CDL) has been initially defined with this intent by the W3C (World Wide Web Consortium standard [START_REF]W3C: World Wide Web Consortium[END_REF]). It has since been replaced by the BPEL (Business Process Execution Language) and BPMN (Business Process Model and Notation) standards [START_REF]OASIS: Web services business process execution language (BPEL)[END_REF]. (We will not detail here the characteristics of services and Web services, which are the subject of standards and numerous technical specifications, because that would be the subject of another article. See, e.g. [START_REF] Chauvet | Services Web avec SOAP, WSDL, UDDI, et XML[END_REF] and [START_REF] Papazoglou | Web Services & SOA, Principles and Technology[END_REF], as well as [START_REF] Payne | Web services from an agent perspective[END_REF] for an agent perspective on web services.) Table 2 summarizes the evolution of coupling according to the 2 main facets: structure and communication, the latter one with its 3 sub-facets: designation of the receiver(s), data transfer mode, and temporal coupling (synchronization).

The diagonal axis of Figure 1 illustrates the evolution of coupling flexibility within our frame of reference. Note that the evolution of coupling flexibility is not completely linear: actors have been proposed before components but their respective main focuses are different (respectively, concurrency and architecture); web services have been proposed after multi-agent systems.

Abstraction Level

The history of programming begins with concepts very close to the machine (instructions, integers, etc.), then progressively identifies some higher level abstractions (procedure, function, data structure, semaphore, process, object, message, component, model, etc.). The concepts of agent and organization continue this evolution towards more abstraction as well as towards more explicit knowledge. The transition from primitive data types to abstract data types allows the modeling and naming of arbitrary classes of objects. Object-based programming introduces some major evolution step, with objects modeling and representing (reifying) conceptual or physical objects of the application domain considered [START_REF] Perrot | Objets, classes et héritage : Définitions[END_REF]. In other words, we moved from data to concepts. Agents will extend this evolution with an explicitation of the domain (including human) knowledge. Cognitive agents introduce the notion of mental state, inherited from symbolic artificial intelligence (see, e.g., [START_REF] Shoham | Agent oriented programming[END_REF]), with some symbolic representation of cognitive concepts, such as: belief, goal, desire, intention, etc. Furthermore, such internal knowledge of an agent can be communicated to other (external) agents, e.g., communication of beliefs, plans or/and intentions, in order for agents to learn about each others or/and coordinate their actions. Agents can also reason about the context (as coined in [START_REF] Coutaz | Context is key[END_REF], "context is key") for context-aware applications such as ambient intelligence. ( [START_REF] Chen | A survey of context-aware mobile computing research[END_REF] identifies four basic types of context: computational context (i.e. state of resources of the device and of the network), user context (i.e. persons, places, or/and objects), physical context (e.g., luminosity, noise, or/and temperature) and temporal context (e.g., hour, day, or/and period of the year).)

The object-oriented discipline of message sending also provides some self-documentation, as the subject and the request type are specified explicitly. Agent communication languages raise further the explicitness of information and knowledge. Indeed, information that had remained implicit (and hidden) in object-oriented and component-based applications -such as intention of communication, coordination logic, plans, etc.and remained in the mind of the programmer, become explicit and thus better document the program. Moreover, this information could also be used by the agents themselves (for example to coordinate, reason about communication failures, replan, reorganize, etc.).

Reification

An additional approach, transversal to the type of abstractions proposed (objects, components. . . , agents), is reification. It is the process by which an abstract concept about a computer program is turned into an explicit entity created in the programming language. In other words, something that was previously implicit and unexpressed is explicitly formulated at the level of the language (thus often coined as "making something a first-class citizen"), and therefore made available to inspection and manipulation. The Lisp programming language has been a true pioneer, with its uniform vision of considering programs as data. This has been developed further in the Smalltalk programming language, which reifies various types of program and implementation entities, such as messages, contexts, classes, as actual Smalltalk objects. Static concepts, e.g., classes, are reified as permanent objects. (A class is thus an instance of a class, usually named a metaclass.) Computational concepts, like stack contexts and messages, are only reified on demand (e.g., in case of errors), for obvious efficiency reasons. The inverse operation, making a reified information (back) into an actual implementation, is named reversion, or reflection. An example in Smalltalk occurs in case of an error: the interactive debugger opens up and allows inspection of a reified context of the currently stopped computation. Once correcting the error, the debugger reinstalls the corrected computational context and resumes computation.

In addition, in some languages, an entity already explicit at the programming level, e.g., an object, may gain some explicit representation of some of its implementation characteristics, usually coined as its (or one of its) meta-object. Such types of self-described and introspective languages or architectures are usually named either reflective architectures or meta-level architectures. Indeed, this way of opening up implementations (into manipulable abstractions) in order to make them adaptable at some high level of abstraction turned out being very useful. See, e.g., [START_REF]Meta-Level Architectures and Reflection -Second International Conference[END_REF] for some survey of reflective, meta-level and/or meta-object architectures, [START_REF] Briot | A uniform model for object-oriented languages using the class abstraction[END_REF] and [START_REF] Cointe | Metaclasses are first class: The ObjVlisp model[END_REF] for an example of minimal reflective object-oriented architecture, and [START_REF] Kiczales | The Art of the Metaobject Protocol[END_REF] for a very developed one.

Interoperability Languages

Let us now examine interoperability middleware, which specifies and standardizes the exchange of information. CORBA object-oriented middleware designed by OMG [START_REF]OMG: Common object request broker architecture (CORBA). Tech. rep., Object Management Group (OMG)[END_REF] standardizes, through an interface description language (IDL), the types of data exchanged. The analogue for agents further refines the way information is exchanged. The IDL of CORBA is substituted (see details in next paragraph) by a more general agent communication language (ACL). In addition to the specific content of the message, an ACL communication can specify:

• performative: some symbolic designation of the intention of the communication (e.g., inform, deny, recruit, etc.);

• content description language: the language used to describe the content. It can be some programming language (e.g., Java) or some knowledge representation language (e.g., KIF, or SL [START_REF]FIPA: Agent Communication Language Specifications[END_REF]);

• ontology: the ontology(s) (i.e. some representation of a set of concepts, their properties and their relations) of the concepts referred to by the message (e.g., some standard ontology about transport and tourist services, for some electronic travel agency application);

• protocol: the protocol used for the communication (e.g., a call for proposals, named FIPA-Contract-Net, see Figure 5).

It should be noted that CORBA and ACL do not actually play exactly the same roles [START_REF] Van Splunter | Automated component-based configuration: Promises and fallacies[END_REF]. CORBA, through its IDL, provides some standard for specifying the interfaces (signatures) of objects and components. It also provides mappings (named projections) of this IDL in different programming languages (e.g., Java, Smalltalk, C++, etc.). Therefore, CORBA can automatically generate implementation skeletons for the calling party code and for the called party code, and thus ensure the translation and transfer of data. An ACL does not offer some standard for specifying interfaces of agents, but offers instead some general standard for specifying various properties of communication between agents, which is different. As listed above, ACL standardizes various properties such as intention, ontology and protocols. The first historically is KQML [START_REF] Finin | KQML as an agent communication language[END_REF], followed by FIPA ACL [START_REF]FIPA: Agent Communication Language Specifications[END_REF].

Organizational Design

It is also important to highlight the preponderant role of the design of multi-agent systems. It is guided by the organization of work (through concepts such as organization, role, dependence, and norms) and by knowledge (mind states, such as belief and intentions), rather than by the operational means for achieving this work, which corresponds to the traditional procedural approach of programming (through data and procedures). Multi-agent methodologies (e.g., such as the pioneering Cassiopée [START_REF] Drogoul | Applying an agent-oriented methodology to the design of artificial organisations: a case study in robotic soccer[END_REF]) often start with some analysis of organizations, roles and their dependencies, while considering separately (and later) implementation questions (such as: which agents will fulfill the roles, depending on what decomposition of tasks). Some agent-oriented design can then be carried out (implemented) in some multi-agent architecture, or through objects, actors, or/and components, the agent level not always appearing completely at the implementation level. However, keeping abstractions, such as agents and organizations, as entities explicitly represented at the execution level, offers of course possibilities of dynamic manipulation by the programmer, but above all by the entities (agents and organizations) themselves, thus offering possibilities of self-adaptation and self-organization (see, e.g., the organizational model MOISE [START_REF] Hübner | Developing organised multiagent systems using the MOISE+ model: programming issues at the system and agent levels[END_REF]).

Finally, in the evolution and the elevation of programming abstractions, we also need to mention about model driven engineering, such as the model driven architecture (MDA) proposed by the OMG [START_REF]OMG: Model driven architecture (MDA). Tech. rep., Object Management Group (OMG)[END_REF]), as a modeling level for the partial automation of the construction of applications. (For more details, see, e.g., the companion chapter by Jean-Marc Jézéquel on modeling.) Note that this line of research is somehow orthogonal to a specific programming model (object-oriented, component-based, agent-oriented, etc.). There are efforts to couple multi-agent programming and model engineering, see, e.g., [START_REF] Silva | Using UML 2.0 activity diagram to model agent plans and actions[END_REF].

The vertical axis of Figure 1 illustrates the evolution of abstraction level within our frame of reference.

Conclusion

Due to the increasing needs for auto-adaptation of future distributed applications (such as, e.g., Internet of Objects), models of software components and software architectures are gradually gaining in terms of abstraction as well as in (self) adaptation and reconfiguration capacities (see, e.g., [START_REF] Van Splunter | Automated component-based configuration: Promises and fallacies[END_REF], and also IBM proposal for autonomic systems [START_REF] Bigus | Able: A toolkit for building multiagent autonomic systems[END_REF]). They get inspiration from multi-agent systems abstractions, while often relying on light-weight infrastructures such as, or inspired by, web services. The technology of web services is indeed simpler and lighter to implement and to deploy than some distributed component models (such as, e.g., CORBA), as current web infrastructure is sufficient. Web services provide the specification of the coordination between services (named choreography) although it does not yet reach the level of sophistication of multi-agent systems (on this topic, see, e.g., a comparative analysis of web services and agents [START_REF] Payne | Web services from an agent perspective[END_REF]). Additional abstractions from distributed programming (such as, e.g., replication, groups and consensus, to manage fault-tolerance) and/or ambient programming (e.g., ambient references [START_REF] Cutsem | Ambient references: Addressing objects in mobile networks[END_REF], to manage volatile connexions), are also needed to deal with distribution, fault-tolerance, volatility and uncertainty. (Note that distribution was not the focus of this study, for more details, see, e.g., the companion chapter by Michel Raynal on distributed programming.) An important stake is therefore to be able to integrate and reuse, as much as possible, respective abstractions and experience from various programming models and communities. However, cultural specificities sometimes lead to some ignorance about respective works. One of the objectives of this analysis was therefore to (humbly) contribute to highlight some of the basic forces motivating the progress of programming abstractions, in order to favor mutual awareness, as well as possible cross-fertilization 9 , and to provide some inspirational seeds about future programming abstractions.

Figure 1 :

 1 Figure 1: Programming evolution

Figure 2 :

 2 Figure 2: Objects coupling versus components coupling

Figure 3 :

 3 Figure 3: Services coupling and agents coupling

Figure 5 :

 5 Figure 5: Contract net protocol. Figure reproduced from FIPA Contract Net Interaction Protocol Specification, Foundation for Intelligent Physical Agents, 2002.

Table 2 :

 2 Nature of the coupling 6.1 From Data to Concepts

	Coupling	Objects	Actors	Components	Services	Agents
	Structure	Implicit	Implicit	Explicit	Implicit	Implicit
		internal	internal	external	volatile	external
		(references)	(references)	(connectors)	(invocations)	(roles)
	Commu-
	nication
	Receiver(s)	Point to point	Point to point	Multi-point	Multi-point	Multipoint
	designation	explicit	explicit	explicit	dynamic	explicit
				or implicit	(discovery	or implicit
				(publish-	and selection)	(role
				subscribe)		designation)
	Data	Bi-	Uni-	Bi-or uni-	Bi-or uni-	Uni-
	Transfer	directional	directional	directional	directional	directional
		(value return)		(events)		direct or indirect
						(via environment)
	Synchro-	Synchronous	Asynchronous	Synchronous	Synchronous	Asynchronous
	nization			or	or	or
				asynchronous	asynchronous	protocol

This preprint has been published as a chapter of a book about the French school of programming, coordinated by Bertrand Meyer[START_REF] Briot | From procedures, objects, actors, components, services, to agents -a comparative analysis of the history and evolution of programming abstractions[END_REF].

Note that dynamic linking[START_REF] Janson | Dynamic linking and environment initialization in a multi-domain process[END_REF] was probably introduced as early as in 1959 by the Multics multiuser operating system, in order to allow resolving external references at runtime.

A class is the definition of a family of similar objects. It is the class which defines the methods (procedures) and the variables (data model) common to the objects which will be its instances, i.e. created by/from it.

We deliberately do not discuss here the relations between binding and typing (and sub-typing), due to the fact that they are subtle and non consensual. For one analysis (among others), see, e.g.,[START_REF] Castagna | Covariance and contravariance: Conflict without a cause[END_REF] and also the companion chapter by Giuseppe Castagna on types.

Some information about the possible choices of actions related to the domain in which the agent acts. Such information can be symbolic (beliefs, models, plans. . . ) or not, depending on the choice of agent architecture and of the representation of the world.

Actually, we should distinguish between functional composition, which is a simple assembly of components, and structural composition, which encapsulates a functional composition and identifies it as a new component, often referred to as a composite component.[START_REF] Crnković | A classification framework for software component models[END_REF] analyzes their respective binding techniques, named horizontal binding and vertical binding. We believe that the concept of structural composition is important, as it provides encapsulation and hierarchy, which both proved to be useful to control complexity. However, only a minority of component models support composite components (e.g., Fractal[START_REF] Bruneton | An open component model and its support in Java[END_REF] and MALEVA[START_REF] Briot | Architectural design of component-based agents: A behaviorbased approach[END_REF], but not JavaBeans[START_REF]Sun: Javabeans specification[END_REF] nor CORBA Component Model (CCM)[START_REF]OMG: Corba component model (CCM). Tech. rep., Object Management Group (OMG)[END_REF]).

Note that an example of a more recent component model (also an industry standard), also integrated into a service-oriented architecture, is CSA (Composite Services Architecture)[START_REF]OASIS: Open composite services architecture (CSA). Tech. rep., OASIS (Organization for the Advancement of Structured Information Standards)[END_REF]. However, we have chosen here to illustrate our analysis through the CCM model, for its historical and pedagogical value.

FIPA is the acronym for the Foundation for Intelligent Physical Agents, an IEEE Computer Society standards organization which promotes agent-based technology and the interoperability of its standards with other technologies[START_REF]FIPA: Foundation for Intelligent Physical Agents[END_REF].

In that respect, the last section of an article in french[START_REF] Briot | Composants et agents : évolution de la programmation et analyse comparative[END_REF] which was the basis for this chapter identifies various potential mutual cross contributions between software components and multi-agent systems: from agents to components, e.g., by using mapping and negotiation techniques to assist the assemblage of components; and from components to agent(s), e.g., to structure and modularize its architecture.

Acknowledgements

The premises of this study go back to an interview that we conducted with Les Gasser on the relationship between objects and agents, published in a special series on actors and agents [33]. We thank him for his pioneering and fundamental contribution to this reflection and we dedicate this article to his memory. We also would like to thank Pierre Cointe and Jean-François Perrot for having formed us to the magic of programming.


M Lefevre

E Marcq

F Lefevre

Turbulent vertical mixing in the Venus cloud layer

Introduction:

Venus is hosting a global sulfuric acid cloud layer between 45 and 70 km which has been investigated by the Venus Express and Akatsuki mission as well as its coupling with the surface. One of the main questions that remains unclear about the dynamics of the Venusian atmosphere is how this convective cloud layer mixes momentum, heat, and chemical species and generates gravity waves. Several models have been developed to study these phenomena. We proposed to use these models to study the impact of this turbulence on the chemical species, focusing on water and sulfuric acid.

Model: To study the convective layer, a Large Eddy Simulations (LES) model [1] has been developed using the Weather-Research Forecast (WRF) nonhydrostatic dynamical core [2] coupled with the IPSL Venus GCM physics package [3]. The model is able to resolve a realistic convective layer between 47 and 55 km as well as one convective layer at cloud top altitudes (70 km) at the subsolar point (Fig 1). [4], the star is the SO2 groundbased observations at 65 km [5] and the circle is the cloud top H2O Venus Express value [6,7].

Results: This simple model is able to quantify the vertical mixing of SO2 and H2O in the cloud layer [START_REF] Lefèvre | Meeting of VEXAG 2022 (LPI Contrib[END_REF]. The chemical timescale plays an important role, when it is lower than the convective timescale, around 10 2 s, the vertical mixing is small. The vertical eddy diffusion was estimated, and exhibits values between 10 2 to 10 4 m 2 /s, several orders of magnitude higher than the values commonly used in chemical modelling. The resolution of 500 m allows an estimate of the horizontal turbulent spatial features, induced by the convection and gravity waves, for SO2 and H2O.

Figure 1 :

 1 Figure 1: Vertical cross-section of the vertical wind (m/s) at the Equator at noon. Between 47 and 55 km is the main convective layer, between 55 and 67 km are the gravity waves induced by convection and between 67 and 73 km is the cloud top convective layer presents only at the subsolar point. Tracers have been included in the model representing SO2 and H2O, the chemistry and photodissociation sources and sinks are modeled by a linear relaxation of the tracer abundance toward a prescribed vertical profile with a relaxation timescale. The

Figure 2 :

 2 Figure 2: Vertical profile of the tracer abundance relaxation profile. The black represents the value for the deep atmosphere[4], the star is the SO2 groundbased observations at 65 km[5] and the circle is the cloud top H2O Venus Express value[6,7].

Figure 3 :

 3 Figure 3: Snapshots of horizontal cross-section of SO2 at 3 altitudes, 52 km (left), 62 km (middle) and 70 km (right) for a relaxation timescale of 10 3 (top) and 10 4 s (bottom).

8013.pdf 20th Meeting of VEXAG 2022 (LPI Contrib. No. 2688)


Mahanandaiah Kurva

Mansour Dolé Kerim

Rocio Gàmez-Montaño
email: rociogm@ugto.mx

Laurent El Kaim
email: laurent.elkaim@ensta-paristech.fr.mansour-dole.kerim@ensta-paris.fr

Straightforward access to complex isoindolinones from the Ugi reaction of o-nitrobenzoic acid derivatives

The Ugi reaction of 2-nitrobenzoic acid derivatives has been used for a Diversity Oriented Synthesis of complex isoindolinones via a S N Ar reaction involving the peptidyl position. When the cyclization is triggered by strong bases such as potassium tert-butylate, the S N Ar reaction is followed by a deamidification/oxydation sequence leading to 2-hydroxyisoindolinones. The latter may be further transformed into polycyclic fused isoindolinones via Pictet-Spengler type cyclization or O-alkylation/metathesis sequences.

The development of multicomponent reactions over the last twenty years has been strongly stimulated by the use of the Ugi reactions in cascades towards highly diverse polycyclic derivatives with important potential in medicinal chemistry. Together with the ability to afford complex structures within a couple of steps, these syntheses are also valued for the high diversity brought by the 4-component nature of the Ugi coupling. If the number of commercially available isocyanides have grown significantly in the last twenty years, their availability still remains very low and their price quite high with respect to the other components of the coupling. Thus, the amide moiety derived from the isocyanide is often considered as an unwanted travelling companion in many syntheses using the cheapest isocyanides. To gain further diversity, several families of so-called convertible isocyanides 2 have been proposed in order to raise the reactivity of the final amide towards various nucleophiles. Most of these methods allow the conversion of the amide into related carboxylic acid derivatives. We started this project with the idea of modifying the amide function using more complex functional group transformations without loss of diversity. We were particularly attracted by the ability to cleave the amide as an isocyanate under basic conditions as observed in our previous synthesis of isoindolinones from 3-nitrobenzoic acids (Scheme 1).

3 In this case, following the intramolecular vicarious nucleophilic substitution on the nitrophenyl moiety, the amide is easily cleaved under basic condition thanks to the strong stabilisation of the resulting benzylic anion. Isoindolinones or hydroxyisoindolinones could be formed alternatively according to the presence of oxygen in the basic medium.

3 We envisioned that the potential of such approach could be raised using 2-nitro benzoic acids as starting material while loss of diversity due to removal of isocyanate could be balanced thanks to the new hydroxyl handle brought after oxidation (Scheme 1).

Scheme 1. Nitrobenzoic acid based Ugi strategies towards polycyclic isoindolinones.

To progress on this project, Ugi starting adduct 1a was prepared in 77% isolated yield using standard Ugi conditions with t-butyl isocyanide, allylamine, 4-chloro-2-nitrobenzoic This journal is © The Royal Society of Chemistry 20xx

Please do not adjust margins

Please do not adjust margins acid and 4-chlorobenzaldehyde. 1a was then treated under various basic conditions in order to observe the expected S N Ar/amide elimination sequence (Scheme 2).

Scheme 2. Synthesis of Isoindolinones 2a and 3a from 1a under various basic conditions

Compared with our previous study using vicarious nucleophilic addition on 3-nitrobenzoic derivatives, we observed a similar behaviour with the formation of cyclization products without loss of amide using moderately basic conditions (Cs 2 CO 3 in toluene) whereas stronger bases (NaH, t-BuOK) lead to cyclization and elimination of the amide moiety at room temperature. [START_REF] Trifilenkov | For some Ugi reaction leading to isoindolinones via S N Ar processes without loss of amide moiety see: (a)[END_REF] In sharp contrast with 3-nitro derivatives for which we could isolate both isoindolinones and hydroxyisoindolinones according to the use of aerobic conditions or not, it was not possible for us to observe non oxidized product working with non degassed solvent under Argon. [START_REF] Shen | For a related S N Ar oxydative cyclization of non Ugi adducts towards isoindolinones[END_REF] Trying to exclude oxygen from the mixture (degassed solvent, under Arg) led to longer reaction times and sluggish yields without isolation of the CH isoindolinone 3a. tert-butyl isocyanide was chosen as starting material for this sequence as an higher steric hindrance was expected to afford an easier deamidification. To confirm this point, the cyclohexyl analogue 1a' was prepared leading to a slightly lower yield of 4a (Scheme 2). The formation of 4a may involve the intermediate formation of amide dianion A which after cyclization and elimination of nitrite forms anion C. Elimination of tbutylisocyanate from the latter is assisted by the formation of a stabilized dibenzyl anion which leads after oxidation to alkoxide E. The ability to form isoindolinone 2a under treatment with one equivalent of base suggests that monoanionic intermediates may also account for the observed transformations.

Scheme 3. Possible intermediates for the conversion of 1a into 4a

The use of excess t-BuOK in DMSO at rt was then selected to evaluate the scope of the transformation and a set of Ugi adducts 1a-1j were prepared from various 2-nitrobenzoic acids under standard Ugi reaction conditions (rt, 2M in methanol) and purified by column chromatography on silica gel. Under our optimized conditions, all Ugi adducts 1a-1e afforded the expected 2-hydroxy isolindolinones 3a-3e in good to moderate yields after 4 to 8 hours reaction at room temperature. The cyclization proceeded well for both electronrich (Table 1, entry 4) and electron-poor (Table 1, entry 3) aromatic aldehydes. For all products, the S N Ar initial step was fast at rt (completed in less than one hour) whereas the following deamidification and oxidation processes required several hours. Performing the whole sequence under air, led to faster reactions but lower yields probably due to a competing oxidation before intramolecular S N Ar. When using 2-nitrobenzoic acid instead of 4-chloro-2nitrobenzoic acid (Table 1, entry 5), we were surprised to observe an important drop in yields difficult to explain at first sight with the electronic nature of the aryl substituents.

Figuring that this could be associated with a lower stability of Please do not adjust margins

Please do not adjust margins the hydroxy derivatives 3e on the silica (via the formation of an intermediate iminium followed by trapping on silica), we decided to allylate the intermediate alkoxide in order to form a more stable hemiaminal ether. After completion of the S N Ar/oxidation sequence (as determined by tlc), additional t-BuOK was introduced together with two equivalents of allyl bromide. 6 Letting the reaction for five hours at rt followed by hydrolysis and purification on silica gel afforded the allyloxy isoindolinone 4e (Table 1, entry 5) in 52% isolated yield. Gratifyingly, with this new protocol affords an important raise in yields for both 2-nitrobenzoic and 4-chloro-2-nitrobenzoic acid Ugi adducts (Table 1, entries 1, 2 and5). Thus further Oallyl isoindolinones were prepared using this modified procedure (Table 1, entries 6-10).

Together with the interest of an increased stability and raises of the diversity, the disclosure of this O-allylation protocol offers further interesting perspectives for the synthesis of complex isoindolinones. Besides some potential ring-closure metathesis (RCM) through the selection of allylamine as starting Ugi amine followed by O-allylation, 7 the protocol should be easily extended to more complex alkylating agents leading to specific cyclizations. Hoveyda-Grubbs II catalyst for selected for the RCM pathway using 1a, 1f, 1g and 1j as starting Ugi adducts. The new fused isoindolyl-oxazepines 5a-5d were all obtained in good yields after heating the O-allyloxy 4a-4j for few hours in toluene at 70°C (Scheme 4).

Hoveyda-Grubbs II (5 mol%)

Toluene, 70°C, 5h R 1 N O R 3 O 4 R 1 N O R 3 O 5 R 1 =Cl; R 3 =4-ClC 6 H 5 :
R 1 =H; R 3 =4-ClC 6 H 5 : R 1 =NO 2 ; R 3 =4-ClC 6 H 5 : R 1 =H; R 3 =3-pyridyl : 5a (78%) 5b(75%) 5c (70%) 5d(45%) 4a 4f 4g 4j

Scheme 4. RCM of N-allyl-O-allyl isoindolinone 4a-4j

To demonstrate the potential of this approach in further transition metal catalysed formation of complex oxazepines, we performed the S N Ar/oxidation/O-alkylation sequence using 2-iodobenzyl bromide as alkylating agent instead of allyl bromide (Scheme 5). Starting from Ugi adduct 1d, a 65% yield of 6a was obtained after the O-alkylation step. The following palladium triggered CH activation step was performed using a Pd(OAc) 2 /DPPE couple together with Cs 2 CO 3 as a base to afford the new fused oxazepine 7a in 54 % isolated yield. The same sequence was applied to the new Ugi adduct 1k (obtained in 79% isolated yield from 3,4-dimethoxybenzaldehyde) leading to oxazepine 7b in a slightly better 58% yield. For both starting Ugi adducts, the CH activation was observed on the electronpoorer aryl ring which is in agreement with the selectivity often observed in CH activations involving a concerted metalation deprotonation mechanism. 8 Scheme 5. Synthesis of complex isoindolinones 7d and 7k via the SN Pd triggered C-H activation.

There have been relatively few reports on the synthesis and properties of such fused oxazepinoisoindolinones. Analogues of 5 have been prepared mostly by an intramolecular cationic trapping of an isoindoline iminium using an oxygen atom as internal nucleophile 9 and have been used as inhibitors of apoptosis protein antagonist in HIV therapy. 10 Analogues of 7

have been only reported in a single patent on the use of fused isoindolinones as modulators of nuclear hormone receptor function.

11

Considering the ability to reach iminium intermediates from hydroxyisoindolinones 3, a further synthetic application of this Ugi/S N Ar oxidative sequence may be easily envisioned using a final Pictet-Spengler cyclization. A simple way to achieve this is the selection of a starting amine possessing a properly positioned nucleophilic aryl moiety. When homoveratryl amine was used in the Ugi step together with 4-chloro-2-nitrobenzoic acid or 2-nitrobenzoic acid, Ugi adducts 1i-1o were all obtained in good yields (Scheme 6). After completion of the following S N Ar/deamidification/oxidation sequence (as determined by tlc), [START_REF] The | /deamidification sequence was performed under more diluted conditions due to the lower solubility of the Ugi adducts formed using tryptamine and homoveratryl amines[END_REF] extraction of the crude mixture was directly followed by the Pictet-Spengler step (in a 20/1 CH 2 Cl 2 /CF 3 CO 2 H mixture at rt) without purification of the intermediates hydroxy 3. The good yields observed in the formation of 8a-8e using both nitrobenzoic acids as starting materials confirm the hypotheses previously made on the stability of 3 over silica gel. For Ugi adducts prepared from pyridine or quinoline aldehydes (Scheme 6, 1n, 1o, 1p), the Pictet-Spengler step required a higher temperature (using a 20/1 mixture of toluene/CF 3 CO 2 H at 70°C) for completion probably due to the protonation of the latter heterocycles making the required iminium intermediate more difficult to reach. Finally replacing homoveratrylamine by tryptamine in the Ugi step led similarly to isoindolinones 9a and 9b in slightly lower yields (Scheme 6). This journal is © The Royal Society of Chemistry 20xx

Please do not adjust margins

Please do not adjust margins Scheme 6. Synthesis of polyheterocycles 8 and 9 via the S N Ar/deamidification/oxidation/Pictet-Spengler sequence.

Analogues of 9 have found interesting biological activities against malaria. [START_REF] Pereira | [END_REF] Analogues of 8 or 9 are classically obtained via the addition of an aryl Grignard onto a phthalimide followed a Pictet-Spengler step. [START_REF] Ahmed | For Pictet-Spengler routes using homoveratryl phtalimides[END_REF] Our straightforward Ugi access to such complex fused isoindolinones 8 and 9 offers the advantage of an easy access from aromatic aldehydes without the need for the preparation of a reactive Grignard intermediate.

Conclusions

We have developed an IMCR based approach toward the synthesis of complex heterocycles containing the isoindolinone scaffold. The ability to perform these reactions in a one-pot manner further raises the potential of this diversity oriented synthesis.

While supplementing our previous nitroisoindolinone synthesis from 3-nitrobenzoic, the present study demonstrates that the diversity lost during the deamidification process may be recovered via alkylation with valuable molecular fragments. This deamidification/alkylation approach represents a new direction in the use of Ugi adducts for diversity oriented syntheses. In our case, the fast oxidation observed after deamification may be advantageously exploited in following Pictet-Spengler cyclizations. Further attempts to disclose oxidation-free S N Ar/deamidification/alkylation sequence as well as extensions of these deamidifications to other families of Ugi adducts are under study in the group.

1

 1

Table 1 .

 1 Ugi/S N Ar strategy toward isoindolinones analogues

	Entry R 1	R 2	R 3	1 (%)
	1	Cl	allyl	4-ClC6H4	1a (77)	3a (60)	4a (79)
	2	Cl	(CH2)2OMe	4-ClC6H4	1b (78)	3b (56)	4b (72)
	3	Cl	(CH2)2OMe	2-pyridyl	1c (90)	3c (70)
	4	Cl	CH2CH(OMe)2 4-MeOC6H4 1d (89)	3d (66)
	5	H	CH2CH(OMe)2	4-ClC6H4	1e (99)	3e (31)	4e (52)
	6	H	allyl	4-ClC6H4	1f (70)		4f (68)
	7	NO2	allyl	4-ClC6H4	1g (74)		4g (67)
	8	Cl	(CH2)2OMe	4-MeOC6H4 1h (84)		4h (76)
	9	Cl	cyclopropyl	4-ClC6H4	1i (65)		4i (60)
	10	H	allyl	3-pyridyl	1j (83)		4j (60)

a 3 (%) a 4 (%) a a isolated Yield.

This journal is © The Royal Society of Chemistry 20xx J. Name., 2013, 00 , 1 -3 | 3

Acknowledgements

R.G.M is grateful for financial support from CONACYT projects 285622 CB-2016-28562. M.K. thank CONACYT for scholarships 632715/338546. We further thank the Laboratorio Nacional de Caracterización de Propiedades Fisicoquímícas y Estructura Molecular (CONACYT-México, Project: 123732). We thank ENSTA Paris for financial support.

Conflicts of interest

There are no conflicts of interest to declare

Conflicts of interest

There are no conflicts to declare.

Notes and references ‡ Footnotes relating to the main text should appear here. These might include comments relevant to but not central to the matter under discussion, limited experimental and spectral data, and crystallographic data.