La symbolico-réduction
La symbolico-réduction est une propension (propriété) d'une syntaxe à permettre que les symboles qu'elle crée deviennent une partie intégrante de la syntaxe elle même, dans le but de réduire le poids du code global à écrire pour produire un comportement ou décrire une information.
Comme conséquence, il est notable que la syntaxe devient alors évolutive à partir de quelques constructions "de base".
Symbolico-réduction syntaxique du language et mécanismes de symbolico-réduction
Il faut distinguer la symbolico-réduction du language qui porte sur la capacité qu'a le language de se condenser, d'une symbolico-réduction que produit des constructions syntaxiques telle que la définition de fonctions. La première est une propriété propre à la syntaxe elle-même : le langage permet à son utilisateur de construire une stratégie pour condenser le sens de ses symboles en des unités syntaxiques plus fortes, appartenant toujours au langage. La deuxième utilise un mécanisme de la syntaxe pour condenser le sens, mais sous une forme différente. Ainsi, la définition d'une fonction condense une action complexe en un symbole compact (l'invocation de la fonction), mais ce symbole ne peut s'utiliser que dans un contexte bien précis (là où la syntaxe attend une valeur à affecter).
La symbolico-réduction dans les languages de programmation
Les langages de programmation obtiennent difficilement cette propriété, car la construction syntaxique fait appel à un jeu limité de mots-clefs interprétables. Dans certains languages cependant, la définition de macros utilise le principe de symbolico-réduction, mais les règles syntaxiques très strictes de ces langages obligent le programmeur à une très grande attention lors de l'usage de ces symboles supplémentaires, car leur insertion à un mauvais endroit pourrait casser la logique syntaxique du code et celui-ci pourrait ne plus compiler. Le C offre cette possibilité. Le Java non. Elle dépend surtout du pré-compilateur de source, qui autorise et reconnait la syntaxe particulière qui permet la création de tels symboles.
La symbolico-réduction dans les languages de description
Dans le cas de langages dits "descriptifs", la symbolico-réduction est plus facile à produire. Dans la mesure où le langage lui-même est une séquence de définitions, tout symbole qui remplace un certain nombre de ces définitions devient insérable dans la séquence, au même titre de la portion de code qu'elle remplace. C'est le cas en HTML ou toute séquence découpée dans le HTML peut être réinsérée sous forme d'un symbole, pour peu qu'un pré-processeur s'en occupe.
Dans le cas de la programmation des sorties Web, le flux à construire à l'arrivée est le flux d'un document HTML (nous pouvons sans peine y ajouter du scripting client, si nous considérons ce langage de script comme du flux textuel n'ayant pas de signification dans le serveur). Définir des symboles comme des portions de cette séquence ne change pas la sémantique (au sens de la syntaxe) du symbole créé. Symbole et contrepartie se confondent. Par exemple, si l'on remplace la table HTML suivante :
<TABLE>
<TBODY>
<TR>
<TD>languages symbolico-réducteurs
</TD>
<TD>languages non symbolico-réducteurs
</TD>
</TR>
<TR>
<TD>DIML,iHTML,XML
</TD>
<TD>PHP, PERL, Javascript
</TD>
</TR>
</TBODY>
</TABLE>
Par le symbole :
<%%TABLE_SR%%>
L'objet représenté par le symbole est un élément de la page Web au même titre que serait la table elle-même. Ainsi l'écriture de la page complète peut être :
<HTML>
<HEAD>
<TITLE>Langages et symbolico-réduction</TITLE>
</HEAD>
<BODY>
<%%TABLE_SR%%>
</HTML>
Dans le cas du PHP, la création de symboles peut se faire principalement par la définition de variables. Nous aurions pu écrire :
$table_sr = "<TABLE>
<TBODY>
<TR>
<TD>languages symbolico-réducteurs
</TD>
<TD>languages non symbolico-réducteurs
</TD>
</TR>
<TR>
<TD>DIML,iHTML,XML
</TD>
<TD>PHP, PERL, Javascript
</TD>
</TR>
</TBODY>
</TABLE>";
Ce qui définirait alors une réduction symbolique de la table dans la variable $table_sr et un écriture du fichier complet dans une fonction d'impression :
echo "<HTML>
<HEAD>
<TITLE>Langages et symbolico-réduction</TITLE>
</HEAD>
<BODY>
${table_sr}
</HTML>";
A ce point de notre démonstration nous pouvons dire des différents langages actuels :
- Le C : Symbolico-réducteur par l'usage des macros
- Le Java : Pas de symbolico-réduction
All material is copyleft V.G. FREMAUX (EISTI France) 1999 to 2003 except explicitly mentioned
|