Dans Wikipédia, la page consacrée aux paradigmes de programmation recense à ce jour une trentaine de paradigmes :
- programmation impérative
- programmation objet
- programmation logique (Prolog)
- programmation fonctionnelle
- programmation par contrainte
- ...
La mise au point d'un paradigme, et le développement des outils associés (langages, compilateurs, ...) est une oeuvre titanesque, et leurs créateurs sont d'immenses théoriciens et techniciens.
Cependant, parce qu'ils sont immergés dans leur monde et leurs problèmes, ces créateurs ne voient pas les problèmes globalement. C'est pourquoi ces paradigmes restent souvent dissociés (à l'exception de l'Objet qui s'est bien diffusé dans les autres paradigmes).
Prenons un exemple : un langage procédural ne permet jamais d'utiliser les bienfaits de la programmation logique (style Prolog).
Or, en termes de génie logiciel, ces deux paradigmes (procédural et logique) ne sont pas incompatibles 'en soi'. Ce serait même 'très' pratique de pouvoir écrire, en procédural, une chose comme :
SI est_grand_père(a,b)
ALORS liste d'actions procédurales
où la condition est_grand_père(a,b) serait évaluée par inférence.
Sans chercher loin, on voit qu'un rapprochement du procédural et de la logique (par exemple) serait fécond en nouvelles possibilités, par exemple avec des boucles comme :
POUR x TEL QUE est_grand_père("Paul", x)
FAIRE ...
Un autre exemple : le paradigme des tableurs comme Excel est 'très pratique', il suffit de changer la valeur d'une cellule pour que toutes les cellules qui en dépendent soient recalculées automatiquement.
Cependant on ne dispose de ce paradigme dans aucun des 'grands' langages procéduraux ! Ce serait pourtant bien que ces langages permettent de déclarer simplement, une fois pour toutes, que certaines variables sont recalculées automatiquement en fonction d'autres variables.
Les créateurs de langages ne voient pas bien ces besoins, ils en sont assez éloignés. Par contre les utilisateurs de langages les voient bien eux, parce qu'ils ont des contraintes de productivité, de qualité, etc.
En tant qu'utilisateurs, avez-vous d'autres idées où des paradigmes pourraient s'enrichir mutuellement de manière particulièrement pratique ?
Partager