Expressions régulières ou expressions rationnelles ?

=> https://linuxfr.org/users/sobriquet/journaux/expressions-regulieres-ou-expressions-rationnelles

2025-01-08 21:27 UTC,

Sommaire

=> #toc-aux-pr%C3%A9misses-de-linformatique--la-th%C3%A9orie-des-langages

=> #toc-lint%C3%A9gration-de-la-th%C3%A9orie-des-langages-%C3%A0-la-langue-fran%C3%A7aise

=> #toc-de-la-th%C3%A9orie-%C3%A0-la-pratique--enrichissements-et-usages-modernes

=> #toc-conclusion

Je partage mon premier journal sur LinuxFr pour partager mes conclusions personnelles sur un débat ancien de plusieurs décennies : faut-il dire "expression rationnelle" ou "expression régulière" ? C'était encore un débat relativement fréquent dans ces colonnes il y a une quinzaine d'années. Il me semblait qu'il s'était éteint avec une victoire de fait du terme "expression régulière", mais je viens d'en voir passer [un écho]

=> //linuxfr.org/nodes/137893/comments/1979354

tout récemment : s'agit-il bien d'une victoire légitime ? Tentons une rétrospective.

Aux prémisses de l'informatique : la théorie des langages

Le mathématicien et logicien [Stephen Cole Kleene]

=> Définition Wikipédia

est l'un des ancêtres de l'informatique. Fondateur de la [théorie de la calculabilité]

=> Définition Wikipédia

, c'est lui qui invente les concepts d'expression régulière/rationnelle et de langage régulier, sans doute juste après la fin de la seconde guerre mondiale. Il définit un langage régulier comme un ensemble de mots pouvant être écrits à partir d'un alphabet et de 3 opérations : la concaténation (coller deux lettres ou mots ensembles), l'union ensembliste (avoir le choix entre deux lettres ou mots) et l'[étoile de Kleene]

=> Définition Wikipédia

(répéter une lettre ou un mot un nombre arbitraire de fois).

Un langage régulier permet de décrire tous les mots constructibles par un [automate fini]

=> Définition Wikipédia

, une autre invention toute récente. Il est décrit par une "regular expression". Kleene lu-même ne semble pas très à l'aise avec sa terminologie : Dans un [article de 1951]

=> https://www.rand.org/content/dam/rand/pubs/research_memoranda/2008/RM704.pdf

, il écrit lui-même, : "We would welcome any suggestions as to a more descriptive term" ("Nous sommes intéressé par toute proposition pour un terme plus descriptif" (section 7, page 49). La première pierre fondatrice de la discorde qui hante les moules de LinuxFr depuis des décennies est posée.

L’intégration de la théorie des langages à la langue française

L'outil [Book Ngram Viewer]

=> https://books.google.com/ngrams/

permet de visualiser l'entrée de ces concepts dans la langue française. L'intérêt de la recherche pour ces concepts semble se manifester à partir de 1960 : [dans la langue anglaise]

=> https://books.google.com/ngrams/graph?content=rational+expression%2Cregular+expression&year_start=1800&year_end=2022&corpus=en&smoothing=0

, l'usage de "rational expression" et "regular expression" se développe, avec quasiment immédiatement une préférence pour la seconde. [Dans la langue française]

=> https://books.google.com/ngrams/graph?content=expressions+rationnelles%2C+expressions+r%C3%A9guli%C3%A8res&year_start=1800&year_end=2022&corpus=fr&smoothing=0

, il est difficile de relever une inflexion significative des usages. Néanmoins, "expression régulière" dépasse pour la première fois "expression rationnelle" vers 1960 : ces concepts ont donc probablement bien franchi l'Atlantique à cette date.

Et effectivement, on en trouve trace dans les écrits du chercheur français [Marcel-Paul Schützenberger]

=> Définition Wikipédia

, l'un des pionniers de l'informatique théorique en France. Dans [un article de 1959]

=> http://www-igm.univ-mlv.fr/%7Eberstel/Mps/Oeuvres-Completes/tome04.pdf

(pp. 197-202), il présente une analogie entre les langages rationnels et les nombres rationnels : les opérations sont essentiellement les mêmes et, en enrichissant ces langages, on obtient l'analogue des nombres algébriques. Langages rationnels, nombres rationnels, … la boucle est bouclée, la terminologie correct que Kleene appelait de ses vœux est donc bien "expression rationnelle" ! Une expression rationnelle est une expression obtenue par des opérateurs rationnels. Ces opérateurs sont dits rationnels parce qu'ils permettent de générer tous les nombres rationnels et seulement eux. [Fin du débat]

=> http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8359703

, allez mouler ailleurs.

De la théorie à la pratique : enrichissements et usages modernes

Ce serait bien si c'était si simple. Mais non, le terme "expression rationnelle" ne se répand pas significativement. En 1966, même Schützenberger, le maître et pionnier, utilise "expression régulière" en français dans [ses cours]

=> http://www-igm.univ-mlv.fr/%7Eberstel/Mps/Cours/PolyRouge.pdf

(p. 62). Tout ça c'est de la faute des Américains et de leur langue pleine de mots ? En effet, on doit pouvoir admettre qu'à cette date "expression régulière" est un anglicisme, impropre, car "expression rationnelle" donne une représentation plus exacte du concept.

Pire, à partir de 1998, "expression régulière" commence à se répandre et s'impose face à sa concurrente. Pourquoi diantre les Français s'intéressent-ils tout d'un coup à l'informatique théorique et aux algèbres de Kleene ? Un indice : avec un temps d'avance, la tendance est identique en langue anglaise. Cela est bien sûr dû à l'entrée de l'informatique dans nos vies et à la [bulle internet]

=> Définition Wikipédia

. Encore un coup des Américains ? Oui, mais pas que.

En trouvant des applications pratiques, les expressions régulières ont évolué. Elles ont gagné en fonctionnalité, en richesse d'expression, et expriment des langages plus riches que les langages rationnels. Un enrichissement en particulier leur permet de décrire des langages non rationnels : les références arrières (backreference). Exemple : l'expression régulière

(a+)b\1

permet de reconnaître tous les mots de la forme an ban , où les "a" sont répétés n fois à droite et à gauche du "b". Ce langage ne peut pas être décrit à l'aide d'expressions rationnelles classiques. Aujourd’hui, tous les moteurs d'expression régulière intègrent cette fonctionnalité.

Conclusion

En français, dans le contexte qui nous intéresse, les termes "expression régulière" et "expression rationnelle" sont sans doute aussi anciens l'un que l'autre. Bien que "rationnel" et "régulier" soient en général employés de manière synonymes, le premier terme semble préféré en théorie des langages. Au contraire, en informatique appliquée, "régulier" est clairement favorisé. Cette différenciation va de pair avec une nuance sémantique : parfois, on cherche à désigner des langages représentables par des automates finis. D'autres fois, on cherche à désigner des motifs sans se soucier de la théorie sous-jacente.

Il me semble donc pertinent de réserver le terme "expression rationnelle" aux propriétés des langages rationnels, tandis que "expression régulière" s'applique mieux aux outils pratiques. Cette distinction, loin d'être un barbarisme, reflète une évolution des usages adaptée aux besoins des théoriciens et des développeurs.

Et vous, avez-vous des raisons particulières de préférer un terme à l'autre ?

[Télécharger ce contenu au format EPUB]

=> https://linuxfr.org/users/sobriquet/journaux/expressions-regulieres-ou-expressions-rationnelles.epub

Commentaires : [voir le flux Atom]

=> //linuxfr.org/nodes/137901/comments.atom

[ouvrir dans le navigateur]

=> https://linuxfr.org/users/sobriquet/journaux/expressions-regulieres-ou-expressions-rationnelles#comments

=> ..

Proxy Information
Original URL
gemini://jpfox.fr/rss/linuxfr-journaux/2025-01-08_21-27_expressions-regulieres-ou-expressions-rationnelles-.gmi
Status Code
Success (20)
Meta
text/gemini; lang=fr
Capsule Response Time
342.06916 milliseconds
Gemini-to-HTML Time
1.73665 milliseconds

This content has been proxied by September (ba2dc).