afficher >><< masquer ]
SAMPI - Editeur structuré
1. Le Problème et la Proposition
2. Le Langage Primitif de Représentation Textuelle
2.1. Présentation de la Syntaxe Concrète
2.2. Notations
2.3. Exemple de structuration des données
2.4. Exemple de structuration des traitements
2.5. Exemple de structurations connexes
3. Le Langage Complété pour la Structuration des Textes
3.1. Présentation de la Syntaxe Complétée
3.2. Etude quantitative de l'évolution des programmes
3.3. L'édition syntaxique
3.4. étude de cas : le langage LTR3 et l'atelier ENTREPRISE
3.4.1. le langage LTR3
3.4.2. l'atelier ENTREPRISE
3.4.3. Apport d'un éditeur structuré
3.4.4. La généricité
4. L'Enrichissement du Langage par de Nouveaux Concepts
4.1. Présentation de la Syntaxe Abstraite
4.2. Les difficultés
4.3. Compléter la Syntaxe
5. La Formalisation des Solutions Techniques
5.1. L'évaluation fonctionnelle
5.2. La structuration par les objets
5.3. Modèle sémantique comparé de l'évaluateur
5.4. Comparaison critique
5.5. Construction de la Syntaxe Abstraite
6. Les Comparaisons avec d'autres Approches
7. Les Perspectives
8. Les Editeurs
8.0. brisé sur la barrière de la complexité (une fois de plus)
8.1. L'éditeur ligne : Manuel de l'utilisateur
8.2. L'éditeur page : Guide de l'utilisateur
9. Les Aspects d'Implantation
9.1. Contexte d'évaluation
9.2. La Syntaxe Abstraite : Manuel du concepteur
9.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

La généricité

L'exemple classique de la pile comme illustration de la généricité a peut-être le tort de présenter cet aspect de la programmation comme un problème d'école, dont les applications "en vraie grandeur" sont très limitées. Pourtant la généricité des programmes est une propriété très fréquemment rencontrée. Un algorithme se présente souvent sous la forme :

sortie := accumulation(filtre(énumération(entrée)))

Par exemple :

S:=0;
for i:integer:=0 to 100 by 2 do
   S:=S+x[i];
end do;
max:=0;
repeat
   read reponse;
   if reponse>max then
      max:=reponse;
   end if;
until reponse=0;

La difficulté est que ce schéma d'algorithme peut rarement s'exprimer sous une forme fonctionnelle : l'entrée est de taille non bornée, certains traitements effectuent des effets de bord, les types retournés sont trop compliqués par rapport à ce que supporte le langage, ... C'est alors qu'on disperse la notion dans le texte du programme, parce que les outils d'expression limitent l'usage des concepts de trop haut niveau. L'éditeur structuré que l'on propose vise à pallier ces carences du langage utilisé : on utilisera les outils offerts par le langage tant que ceux-ci répondront raisonnablement aux besoins, on utilisera des "méta-outils" d'édition quand le langage ne pourra plus les satisfaire.

La généricité dans les langages souffre certainement de deux maux :

Concernant le langage LTR3, un tel éditeur introduit, en dehors du langage et donc en dehors des outils de compilation des programmes sources, le concept de généricité. De ceci découlent un certain nombre de conséquences : on introduit la notion de dérivation de type, absente du langage, et qui est une notion difficile à introduire dans un langage fortement typé ; on permet de définir des types opaques ou semi-opaques ou autres sans complications syntaxiques ; on autorise la paramétrisation par un traitement, qui est une procédure ou simplement une suite d'instructions "en ligne" ; on facilite la définition de « paramètres par défaut », qui est une notion également absente dans le langage.

Concernant l'atelier ENTREPRISE, c'est-à-dire la gestion des objets de LTR3 : on se place à un niveau plus fin de modularité ; les textes étant toujours générés en "LTR3 pur", on conserve tous les outils d'analyse syntaxique, compilation, interprétation, génération d'application, ... ; on peut construire une réelle hiérarchie de "modules" – ou plus précisément de portions de programmes écrites en LTR3 ; les liens d'utilisation sont plus précis, et donc plus souples d'emploi dans les phases de construction, mise au point et maintenance des programmes.

En conclusion, on peut remarquer que l'éditeur structuré proposé fournit, par un procédé de « macro-génération en temps réel », des textes LTR3 syntaxiquement corrects, et ne nécessite donc nullement le développement, en parallèle, d'outils qui existeraient déjà dans l'atelier ENTREPRISE.