Programmation par intention
Projet:Traduction/Programmation par intention Dans la programmation informatique, la programmation par intention (PPI, en anglais intentional programming, IP) est un paradigme de programmation qui permet au code source du logiciel de refléter précisément l'information, ou intention de ce que le développeur voulait réaliser lors de la conception. En respectant le niveau d'abstraction de la pensée du programmeur, la revue et la maintenance des programmes informatiques devient plus facile.
Le concept a été introduit depuis longtemps par Charles Simonyi employé alors par Microsoft, alors qu'il dirigeait une équipe au sein de la Recherche Microsoft. Son groupe a développé un environnement de développement intégré nommé IP qui démontre ce concept. Pour des raisons encore obscures[1], Microsoft a interrompu le développement sur IP au début des années 2000.
Une présentation de la programmation par intention est disponible dans le chapitre 11 du livre [2]
Cycle de développement
Comme envisagé par Simonyi, développer une nouvelle application par l'intermédiaire du paradigme de programmation par intention procède comme suit. Un programmeur crée d'abord une boîte à outils spécifique au domaine du problème donné (par exemple l'assurance-vie). Les experts du domaine, aidés par le programmeur, décrivent alors le comportement prévu de l'application selon la manière « ce que vous voyez est ce que vous obtenez » (en anglais: WYSIWYG). En conclusion, un système automatisé utilise la description de programme et la boîte à outils pour générer le programme final. Des changements successifs sont faits seulement au niveau du « tel affichage, tel résultat » (WYSIWYG), utilisant un système appelé l'"atelier de domaine" (en anglais: domain workbench).[3]
Séparation stockage et présentation du code source
L'avantage principal de la PPI (et un obstacle probable à son acceptation par les communautés de programmeurs) est que le code source n'est pas stocké dans des fichiers textes, mais dans un fichier binaire propriétaire qui ressemble au XML.. Comme avec XML, il n'y a aucun besoin d'un analyseur syntaxique spécifique pour chaque morceau de code qui devrait travailler l'information qui forme le programme, abaissant ainsi la barrière à l'analyse d'écriture ou à la restructuration des outils. La vidéo démontre comment le système manipule les langages qui utilisent un préprocesseur basé sur le texte en examinant les utilisations spécifiques des macros dans un corps de code pour inventer une abstraction plus hygiénique.
L'intégration serrée de l'éditeur avec le format binaire apporte certaines des fonctionnalités plus jolies de normalisation de base de données au code source. La redondance est éliminée en donnant à chaque définition à une identité unique et en stockant le nom des variables et des opérateurs dans un emplacement précisément unique. Ceci signifie qu'il est également plus facile de distinguer intrinsèquement entre les déclarations et les références, alors l'environnement montre des déclarations de type en caractères gras. L'espace n'est pas également stocké en tant qu'élément du code source et chaque programmeur travaillant sur un projet peut choisir un affichage d'indentation du source comme ils préfèrent. Des visualisations plus radicales incluent l'affichage des listes de déclarations en tant que boîtes à sous-programmes imbriqués, en éditant les expressions conditionnelles comme des portes logiques ou le re-rendu des noms en Chinois.
Le projet semble normaliser un genre de schéma de XML pour des langages populaires comme C++ et Java, tout en laissant aux utilisateurs le mélange de l'environnement et trouver⇔match cela avec les idées d'Eiffel et d'autres langages. Souvent mentionné dans le même contexte que la programmation orientée langage par l'intermédiaire des langages dédiés et la programmation orientée aspect, la PPI prétend fournir quelques percées dans la programmation générative. Ces techniques permettent à des développeurs d'étendre l'environnement de langage pour capturer les constructions spécifiques au domaine sans investir dans l'écriture d'un compilateur complet et d'un éditeur pour n'importe quel nouveau langage.
Exemple
Un programme en Java lequel écris les nombres de 1 à 10, en utilisant une syntaxe à parenthèses de programmation, peut être comme celle-ci:
for (int i = 1; i <= 10; i++)
{
System.out.println("the number is " + i);
}
Le code ci-dessus contient une construction commune de la plupart des langages informatiques, la boucle de départ, dans ce cas représenté par la construction for
. Le code, lorsqu'il est compilé, lié et exécuté, en boucle 10 fois, augmentant la valeur de i chaque fois qu'il a été imprimé.
Cependant ce code ne pas saisir les intentions du programmeur, à savoir "imprimer les numéros de 1 à 10". Dans ce cas simple, un programmeur requis pour maintenir le code pourrait probablement savoir ce qu'il est destiné à faire, mais il n'est pas toujours si facile. Les boucles qui s'étendent sur de nombreuses lignes, ou des pages, peuvent devenir très difficile à comprendre, notamment si le programmeur n'utilise pas des étiquettes claires. Traditionnellement, la seule façon d'indiquer l'intention du code est d'ajouter des commentaires au code source, mais souvent les commentaires ne sont pas ajoutés, ou ne sont pas clairs, ou il y a un écart de synchronisation avec le code source qui décrit initialement.
en cours
Identité
traduction à faire
Niveau des détails
traduction à faire
Travaux similaires
traduction à faire
Voir aussi
traduction à faire
Références
- ↑ "Simonyi a eu envie de prendre son idée hors du laboratoire et pour la mettre devant les clients mais c'était maladroit dans ces circonstances. Il explique, 'il était peu réaliste, quand Microsoft faisait des pas énormes avec .Net à court terme, d'envoyer d'une façon ou d'autre quelqu'un depuis de la même organisation qui indique, ceci n'est pas comment vous devriez faire les choses -- ce qui si vous faisiez des choses dans cet autre manière plus pertubatrice?'"[1] (citation de "Partie II : Quelque chose que vous pouvez faire, je peux le faire Méta: touriste de l'espace et programmeur milliardaire Charles Simonyi a conçu Microsoft Office. Maintenant il veut reprogrammer le logiciel."], Mardi 9 janvier 2007, Scott Rosenberg, Revue de Technologie de l'institut de technologie du Massachusetts (MIT).)
- ↑ "Generative Programming: Methods, Tools, and Applications", de Krzysztof Czarnecki et Ulrich Eisenecker, Addison-Wesley, Reading, MA, USA, Juin 2000
- ↑ Scott Rosenberg: "Anything You Can Do, I Can Do Meta." Revue de Technologie de l'institut de technologie du Massachusetts (MIT), 8 janvier 2007
Liens externes
- Intentional Software - La société de Charles Simonyi.
traduction à faire