philippe-dunski

philippe-dunski

C++, multi-paradigme? non, multi optiques, au mieux

Bjarne Stroutrup a bien raison de ne pas aimer entendre parler de "langage muti-paradigme" lorsqu'on parle de C++.  En effet, selon wikipedia, un paradigme est une représentation du monde, une manière de voir les choses, un modèle choérent de vision du monde <...> une forme de rail de la pensée dont les lois ne doivent pas être confondue avec celles d'un autre paradigme.

Autrement dit, si l'on en croit wikipedia, à partir du moment où l'on a décidé d'un paradigme pour le développement d'un projet, on devient véritablement l'esclave de cette décision, sans retour en arrière et sans compromis possible.

Cela se remarque entre autres pour des langages comme java ou comme C# qui obligent à créer une fonction membre, statique, nommée main pour au minimum une classe et ce, même si cette fonction devait être la seule fonction de cette classe. Ces langages appliquent à la lettre la définition d'un paradigme telle qu'elle est donnée par wikipedia et considèrent que "tout est objet".  Même leur generics (ou ce qui en tient lieu) sont, d'abord et avant tout apparentés des objets, bien que le développeur puisse ne pas forcément en avoir conscience.

Le gros malheur, c'est que cette approche "formate" le schéma de pensée de nombreux développeurs, y compris celui de développeurs qui ne sont pas soumis aux restrictions d'un paradigme unique : Combien de fois n'assistons nous pas à une discussion dans laquelle un intervenant vient nous asséner un "Mais pourquoi ne fais tu pas une classe?" ou un "Mais tu dois penser en termes d'objets" ?

En C++, de telles affirmations perdent beaucoup de leur sens.  N'allez pas me faire dire ce que je n'ai pas dit : il arrive très régulièrement qu'elles soient parfaitement sensées dans une situation particulière bien spéciale.  Mais il arrive aussi très régulièrement qu'un des "autres paradigmes" proposé par C++ fasse aussi bien l'affaire, sinon mieux.

Je pense bien sûr au paradigme générique, mais on peut aussi compter sur le paradigme purement procédural.

Je conseillerais donc au lecteur de ce ticket d'accepter l'éventualité que le paradigme orienté objet -- qui apporte il est vrai beaucoup de réponses -- puisse ne pas être adapté à toutes les situations, et d'accepter d'élargir ses horizons afin d'accepter d'envisager le paradigme procédural et le paradigme générique de la même manière que l'orienté objet.  Vous aurez tout à y gagner, car vous pourrez alors choisir "le meilleur" de chaque paradigme, et vos développements seront plus faciles à maintenir, à corriger et à faire évoluer.



14/01/2014
1 Poster un commentaire

A découvrir aussi


Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 8 autres membres