Meta Parseur Naturel
La problématique
Admettons que je veuille calculer la somme des entiers de 1 à 10... en faisant le calcul pas à pas...
- En Assembleur, ça serait un truc du genre
Debut: XOR AH
MV BC, 10
Loop: ADD BC
DEC BC JNZ Loop RET
Un peu dur à lire si l'on n'est pas tombé dans la marmite quand on était petit.
- En C, ce serait
- int somme = 0; for (int i=0; i<=10; i++) somme+=i; return somme;
- En Perl, un chouïa plus parlant
$somme = 0; foreach my $entier (1..10) {
$somme += $entier;
} print "Le résultat vaut $somme ...\n";
- Je vous épargne les autres langages... Ce qu'un programmeur aimerait bien, peut-être, (et surtout si ce n'est pas un programmeur professionnel), c'est un programme du genre de
- \additionne \les \nombres \de {1} \a {10} \et \affiche \le \résultat
Hé bien c'est possible
Ca existe. Enfin presque. Actuellement il y a quelque chose de très approchant qui s'appelle le langage TeSQue, et qui permet de traiter les pages du wiki Blue Moon. Cependant, ce langage ne me plaît pas tellement, et je pense que l'on peut faire bien mieux : un parseur de langage semi-naturel.
La nouveauté de ce genre de parseur, c'est que l'utilisateur peut définir une syntaxe très flexible, qui fait que le parseur se "raccroche aux branches" en cas d'ambiguïtés entre deux interprétations de la même phrase.
Cela permet, du coup, de se passer des accolades qui définissent des blocs ou d'autres horreurs du même genre, et de programmer en... presque... français (ou tout autre langue).
Le "presque" vient de ce que c'est à l'utilisateur lui-même de dire au programme comment il entend qu'on le comprenne... A lui d'éduquer le parseur, en quelque sorte. Mais pas de panique, on peut stocker cette "éducation" dans des modules chargés au début de chaque programme en langage naturel.
Ainsi, c'est un véritable langage de programmation que j'offre, et autorisant jusqu'au bootstrapping (auto-dépassement du langage par lui-même = niveau "méta")...
Contrairement au projet de Projet Escapien/Traducteur Lexical, je n'envisage pas de faire de l'argent avec ce langage de programmation, qui, lorsqu'il sera parfaitement au point, sera un cadeau à tout le monde.
Par contre :
Ce qu'il manque encore
- Une grosse machine pour faire le développement.
- Les procédés de réduction du temps de calcul requièrent des phases de test avec espace mémoire massivement utilisé, ce qui veut dire, une plus grosse machine que la mienne actuellement. Pas mal plus grosse, en fait.
On en reparle par
mail ? -- esc
Nicolas, as tu regardé du coté de Smalltalk pour une syntaxe proche de la langue naturelle ? -- Serge Stinckwich
Dernière modification le lundi 11 avril 2005 14:31:06



