Question

Je suis frappé par l'ambition et la créativité des efforts de Charles Simonyi pour établir le champ de la programmation intentionnelle, d'abord chez Microsoft, puis avec sa propre entreprise.

en quoi consiste exactement la programmation intentionnelle

http://fr.wikipedia.org/wiki/programming_intention

  

Dans cette approche du logiciel, un   le programmeur construit d'abord une boîte à outils   spécifique à un domaine de problème donné   (comme une assurance-vie). Domaine   experts, aidés par le programmeur, puis   décrire le programme prévu   comportement dans ce que vous voyez est ce que vous   Obtenez une manière semblable à (WYSIWYG). Un   système automatisé utilise le programme   description et la boîte à outils pour   générer le programme final. Successif   les changements ne sont effectués qu'au WYSIWYG   niveau.

Cela semble être une approche tellement utile et pratique de la programmation, permettant de contourner bon nombre des problèmes rencontrés avec les approches actuelles du développement de logiciels.

Cela semble essentiellement faciliter la création de langages spécifiques à un domaine par des non-programmeurs (analystes métier / systèmes), mais à un stade beaucoup plus proche de la mise en œuvre réelle que ce que UML pourrait fournir. Il dit que cela sera fini, mais que ce n’est pas encore arrivé (presque 15 ans plus tard).

Les DSL couvrent toute la gamme allant des simples moteurs de règles à 5 lignes aux applications complexes telles que Ruby on Rails. J'imagine donc que le retard dans la publication de son produit est lié au fait qu'il s'agit de simplifier un niveau d'abstraction beaucoup plus élevé, car il doit essentiellement permettre l'encapsulation de toutes les langues du domaine.

Donc, ma question est

(a) si Antlr pourrait constituer une alternative à la programmation intentionnelle - bien que Peut-être une alternative moins conviviale nécessitant l'intervention de programmeurs plutôt que de permettre aux analystes commerciaux de générer le DSL? Pourriez-vous utiliser Antlr pour générer un DSL comme Ruby on Rails (en supposant qu'il prenne en charge Ruby en tant que sortie - ce que je pense que ce n'est pas)? Que peut-il ne pas faire? De plus, je ne comprends pas pourquoi on l'appelle un & Quot; analyseur de langage & Quot; plutôt qu'un " générateur de langue " - puisque ce dernier décrit son utilisation, tandis que le premier décrit comment atteindre son résultat final.

et

(b) si Antlr est différent de la programmation intentionnelle, y a-t-il quelque chose de similaire à la programmation intentionnelle?

Était-ce utile?

La solution

Je ne suis pas un expert en la matière, donc traiter avec une grosse pincée de sel. Cependant ...

ANTLR lui-même n'est pas un générateur de DSL, bien qu'il puisse être utilisé pour créer un code interprétant les DSL. C’est un générateur d’analyseur - mais le générateur DSL devra créer ce que ANTLR génère un analyseur.

Autres conseils

En réponse à la partie b), trois systèmes fonctionnant dans un espace similaire sont:

Chacun de ces produits présente des forces et des faiblesses différentes, mais ils tombent tous dans la catégorie des Etablissements linguistiques . Le logiciel Intentional Workbench d’Intentional Software est peut-être le produit le plus ambitieux de cette catégorie à ce jour, mais il n’est pas non plus généralement disponible.

MPS et xText sont des produits gratuits à code source ouvert. MetaCase est le produit le plus mature et commercial. Tous ont une courbe d'apprentissage abrupte.

ANTLR est juste un générateur d’analyseur. Dans tout DSL non trivial, l'écriture de l'analyseur représente moins de 50% des efforts consacrés à la mise en œuvre du DSL. L’évaluateur / le moteur de règles / le générateur de code / le programme ou tout ce que votre DSL fait, nécessite probablement plus de travail et ne peut pas être généré comme un analyseur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top