* Agence Drupal Toulon
***Web2007 est un bureau indépendant situé à Genève et a l'habitude de travailler pour des entreprises PARTOUT en France et en Europe
Agence Drupal Toulon
Article:
l'écriture de programmes manipulant des données, décrivant elles-mêmes des programmes, est dénommée la métaprogrammation, par analogie avec les métadonnées et les métaclasses[réf. souhaitée]. Dans le cas particulier où le programme traite ses instructions, on est en présence de programme auto-modifiant. La métaprogrammation peut être utilisée pour produire du code qui peut être traduit par un compilateur et amenant à une constance dans le résultat, afin de d'éviter un calcul manuel.Le compilateur permet également de réduire le temps que le programme accapare pour son exécution si le résultat constant avait été calculé d'une manière classique par le programme comme pour les résultats variables. La méthode décrite précédemment s'applique également,en dehors des calculs, entre autres autres dans le remplissage de données constantes, comme des tableaux ou des structures plus rudes. Toutefois, cette technique concerne ,uniquement, pour des valeurs constantes. En effet, si une donnée utilisée par le métaprogramme est une entrée du programme, une saisie de l'utilisateur, elle ne peut pas être connue avant l'exécution du programme. L'interprétation d'un tel métaprogramme est alors impossible pour un compilateur. L'alternative de réussir l'optimisation au moyen de la métaprogrammation sera, par conséquent, totalement échappée. l'écriture de données, comportant un programme destiné au compilateur, ne constitue pas la limite de la métaprogrammation. Elle peut simplement concerner la manipulation d'un programme sujet d'entrées variables. Par exemple,le déplacement du code d'un métaprogramme peut être effectué par un programme selon ses entrées. Ce métaprogramme peut alors être appliqué à une exécution ultérieure ou une génération de code. Différentes façons d'opérer existent: l'usage de générateurs de code; la programmation avec des templates, ou modèles (dans C++ ou Common Lisp); l'emploi d'un protocole à méta-objets (en: MOP) tel le MOP de CLOS ou Smalltalk; l'appel aux macros. Les langages à typage statique sont concernés par ces deux premières techniques. Ceci correspond à une forme puissante mais limitée de méta-programmation. Le principe du générateur de code consiste en effet à développer un compilateur incorporant, avec des ajouts, la sémantique d'un langage donné. Cette approche n'est donc pas d'une évidence manifeste. La programmation à base de templates offre la possibilité de bâtir des opérateurs relatifs à des types de données complètement distinctes qui est utile en C++. Les templates de Common Lisp sont plus fréquents. Ces deux techniques n'entrent que dans la phase de compilation. Comme MetaOcaml, plusieurs langages académiques affectent un typage qui soutient que les programmes générés par le méta-programme sont correctement typés. Les langages réflexifs amènent des moyens d'introspection et de transformation en cours de traitement, au-delà des valeurs et objets du domaine d'une application mais aussi du comportement du système, à prendre comme le langage et ses bibliothèques standards. Les protocoles à méta-objets fournit la latitude de caractériser le comportement au niveau des classes elles-mêmes, la spécification du comportement au niveau des classes elles-mêmes peut être obtenue par les protocoles à méta-objets, on y considère les classes, les méthodes, comme des objets d'un domaine particulier.