* Developpeur Magento 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
Developpeur Magento Toulon
Article:
Dénommée par similitude entre les métadonnées et les métaclasses[réf. souhaitée], la métaprogrammation évoque l'écriture de programmes manipulant des données exposant elles-mêmes des programmes. Dans le cas particulier où le programme manipule ses instructions, on est en présence de programme auto-modifiant. La métaprogrammation peut être utilisée pour générer du code qui peut être transcrit par un compilateur et fournit une constance dans le résultat, pour éviter un calcul manuel. Il permet aussi de diminuer le temps qu'accapare le programme pour s'exécuter si le programme avait calculé le résultat constant comme ce qu'il fait pour les résultats constants. Cette méthode s'applique également ,en dehors des calculs,au remplissage de données constantes telles que des tableaux ou des structures plus rudes. Cependant cette technique ne fonctionne que pour des valeurs constantes. Certainement, si une donnée manipulée par le métaprogramme est une entrée du programme, par exemple une saisie de l'utilisateur, le programme doit être exécuté auparavant pour qu'il la valide.Il est donc impossible qu'un tel métaprogramme soit interprété par un compilateur. La capacité d'obtenir l'optimisation par métaprogrammation est alors totalement impossible. La métaprogrammation n'admet pas comme limite l'écriture de données comportant un programme affecté au compilateur. simplement elle peut être la manipulation d'un programme sujet d'entrées variables. Par exemple,la mutation du code d'un métaprogramme peut être fait par un programme en fonction de ses entrées. Ce métaprogramme peut alors être prédestiné à une exécution ultérieure ou une génération de code. Le processus peut se faire suivant différentes façons : l'emploi de générateurs de code; la programmation avec des templates, ou modèles (dans C++ ou Common Lisp); l'usage d'un protocole à méta-objets (en: MOP) tel que le MOP de CLOS ou Smalltalk; l'emploi de macros. Les deux premières techniques sont utilisables pour les langages à typage statique. La méta-programmation adopte dans ce cas là une forme puissante mais limitée. Dans la réalité,le principe du générateur de code revient à monter un compilateur comprenant , avec des ajouts,la sémantique d'un langage donné. Cette approche est donc difficilement manipulable. La programmation à base de templates conduit à la construction des opérateurs relatifs des types de données absolument discordantes , c'est utile en C++. Les templates de Common Lisp sont plus communs. Ces deux techniques conviennent seulement la phase de compilation. Certains langages académiques ,comme MetaOcaml par exemple, fournissent un typage qui valide que les programmes générés par le méta-programme sont correctement typés. Les langages réflexifs procurent des possibilités d'introspection et de modification en cours d'exécution en plus des valeurs et objets du domaine d'une application et du comportement du système ,comme le langage et ses bibliothèques standards. Les protocoles à méta-objets permettent la possibilité de spécifier 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.