Developpez.com - Programmation

Le Club des Développeurs et IT Pro

Quels sont les paradigmes de programmation qui mobilisent le plus d'impact sur vous en tant qu'ingénieur du génie logiciel ?

Pour quelles raisons ?

Le 2022-11-03 02:56:47, par Patrick Ruiz, Chroniqueur Actualités
Il existe une panoplie de manières d’aborder la programmation informatique. Dans le jargon du milieu, on parle de paradigme de programmation. Certaines de ces approches font quasiment office de norme dans l’actuelle industrie de la programmation informatique. C’est le cas du paradigme orienté objet. Et donc de nombreux développeurs en devenir passent par ce moule. Néanmoins, de récents développements font état d’un attrait croissant des acteurs de la filière pour le paradigme fonctionnel. Lequel de ces paradigmes a eu le plus d’impact sur vous en tant qu’ingénieur de la filière informatique ? Qu’en est-il de la programmation procédurale et de la programmation logique ?


Les possibles influences respectives des paradigmes orienté objet et fonctionnel sur les développeurs apparaissent dans une prise de position d’Ilya Suzdalnitski – ingénieur en informatique chez Replicon.

« L’état en lui-même est assez inoffensif. La grosse difficulté naît avec ceux dits mutables surtout s’ils sont partagés. Le cerveau humain est la machine la plus puissante de l'univers. Cependant, nos cerveaux sont vraiment piètres au jeu de la gestion des états. Il est beaucoup plus facile de raisonner au sujet d'un morceau de code si vous pensez seulement à ce que celui-ci fait et non aux variables qu'il modifie au sein de la base de code. Programmer avec des objets mutables s'apparente à de la jonglerie mentale. Je ne sais pas ce qu'il en est de vous autres, mais moi je pourrais jongler avec deux balles. Donnez-moi trois balles ou plus et je les lâcherai toutes. Pourquoi donc essayons-nous d'accomplir cet acte tous les jours au travail ? Malheureusement, la gestion des objets mutables est au cœur même de la programmation orientée objet. Le seul but de l'existence de méthodes sur un objet est de pouvoir modifier ses propriétés », indique-t-il à propos de la gestion des propriétés des objets (la notion d’état).

Ilya Suzdalnitski est d’avis que la gestion des états est plus complexe avec l’approche orientée objet surtout pour des bases de code importantes. D’après l’ingénieur de Replicon la racine des maux avec la POO telle que pratiquée via des langages comme Java ou C# est qu’elle n’est pas implémentée telle que conçue à l’origine : « On n’aurait jamais dû parler de concepts comme l’héritage, le polymorphisme ou avoir à traiter avec une myriade de patrons de conception »

C’est pour ces raisons que l’équipe d’Atomic Object spécialisée en développement web, mobile, desktop et dispositifs matériels ne fait pas un usage systématique des classes et s’appuie autant que possible sur une approche fonctionnelle. C’est en sus pour cet état de choses que le paradigme fonctionnel est susceptible de gagner en influence dans les années à venir. « C’est même une question de temps avant que la POO ne soit détrônée », d’après certains intervenants de la sphère.

En effet, des langages de programmation comme Kotlin prennent à la fois la programmation orientée objet et celle dite fonctionnelle en charge. C’est quelque chose que l’on n’aurait pas vu dans une foire aux questions du langage Java dans les années ‘90. En fait, de plus en plus de langages mettent en avant le support du style fonctionnel en avant comme argument de vente.


Il y a quelques mois, l’étude « Emploi développeur 2020 » est parue sur cette plateforme. En tête de liste des langages les plus demandés et les mieux payés, on retrouve Java. Sa première présentation officielle s’est faite le 23 mai 1995 au SunWorld comme langage de programmation structuré, impératif et orientée objet. C’est Java 8 (sorti en 2014) qui est venu mettre les développeurs qui font usage de ce langage de programmation sur les rails du style fonctionnel au travers des expressions lambdas. En fait, la remarque vaut pour bon nombre de langages de cette enquête dvp pour lesquels on note que de plus en plus de livres orientés programmation fonctionnelle paraissent. De quoi penser que le paradigme fonctionnel devrait avoir plus d’influence sur les développeurs en devenir.


Et vous ?

POO ou fonctionnel : lequel des paradigmes a eu le plus d’influence sur vous ? Pour quelles raisons ?
Qu’en est-il de la programmation procédurale et de la programmation logique entre autres ? Partagez vos expériences
Partagez-vous l’avis selon lequel la gestion des états est plus complexe avec la POO qu’avec l’approche fonctionnelle pour des bases de code importantes ?
Voyez-vous l'impact de l'approche fonctionnelle s'étendre au point qu'elle s'impose comme une norme ?

Voir aussi :

La programmation orientée-objet est-elle dépassée ? Une école en sciences informatiques l'élimine de son programme d'introduction

Faut-il éviter de distraire les débutants avec l'orientée objet ?

Comment pourriez-vous expliquer l'orienté objet ? Steve Jobs a essayé d'expliquer ce concept
  Discussion forum
20 commentaires
  • micka132
    Expert confirmé
    Le paradigme qui a eu le plus d’influence sur moi c'est le "quick & dirty", ou sa variante française "à la rache".
    D'expérience c'est la paradigme le plus utilisé en entreprise.
  • AoCannaille
    Expert confirmé
    Personnellement je fais principalement de la POO, avec des p'tit bout de issus du monde fonctionnel qui s'insère petit à petit dans les gros languages que je pratique, c'est à dire C++ et JAVA.

    Envoyé par Jeff_67
    La programmation orientée objet est inutile dans plus de 90% des cas actuels d'utilisation. Ça complexifie et dégrade la lisibilité du code pour un bénéfice faible voire nul.

    Autres oui, il y a des très beaux projets écrits en POO. Seulement, les impératifs de délais et de coûts font que les entreprises déploient rarement les efforts nécessaires pour atteindre une qualité de code acceptable.

    Il y a aussi quelques cas où la POO s'avère nécessaire, les interfaces graphiques par exemple. Mais là encore, il est rare de tomber sur une architecture MVC ou autre correcte.
    Je développe principalement en C++ et j'ai passé également des années à faire du java, et les projets que j'ai croisés avaient une POO Propre, à quelques verrues prés. Pas l'inverse. Y compris pour les interfaces graphiques. et ça pour des gros clients industriels différents (Safran, Thales, EDF, Hitachi...), dans des domaines différents (Avionique, défense, énergie, Transport Terrestre...)

    J'imagine que du coup ta remarque dépend des secteurs et que tu devrais en changer si travailler sur un code propre t'interresse ^^

    Quant au bénéfice "faible voire nul", rien que la simplification de la rédaction et la maintenance des tests unitaires suffit à rendre la POO intéressante.

    Je trouve que le procédural pur peut être bien organisé, mais sa maintenance par des débutant amène trés souvent à du code spaguetti difficilement maintenable, alors qu'en objet les impacts peuvent être bien localisés objets par objets...

    Pour les langages purement fonctionnels, je n'ai jamais eu l'occasion de faire autre chose que des tutoriels d'initiation, donc je sais pas ce que ça donne sur des gros projets.

    Envoyé par micka132
    Le paradigme qui a eu le plus d’influence sur moi c'est le "quick & dirty", ou sa variante française "à la rache".
    D'expérience c'est la paradigme le plus utilisé en entreprise.
    La fameuse Méthode R.A.C.H.E ( Rapid Application Conception and Heuristic Extreme-programming), théorisée très proprement ici : https://www.la-rache.com/
  • mith06
    Membre expérimenté
    La fameuse Méthode R.A.C.H.E ( Rapid Application Conception and Heuristic Extreme-programming), théorisée très proprement ici : https://www.la-rache.com/
    merci pour cette pépite!
  • grunk
    Modérateur
    Envoyé par AoCannaille

    Je développe principalement en C++ et j'ai passé également des années à faire du java, et les projets que j'ai croisés avaient une POO Propre, à quelques verrues prés. Pas l'inverse. Y compris pour les interfaces graphiques. et ça pour des gros clients industriels différents (Safran, Thales, EDF, Hitachi...), dans des domaines différents (Avionique, défense, énergie, Transport Terrestre...)
    Le C++ si t'es pas un minimum rigoureux ca te coute très vite très cher en bug infernaux à débugger , ca aide . Ensuite plus que le domaine c'est à mon avis les intervenants qui sont en cause. Entre un grosse boite ou un éditeur qui dév un logiciel pour les 10 prochaines années et une ESN qui te fait un oneshot en régie , tu vas defacto pas avoir la même qualité de travail.

    J'ai toujours bossé que chez des éditeurs et du coup t'as une vraie réflexion sur la maintenance du code que tu vas produire.
  • mith06
    Membre expérimenté
    Dans la mesure du possible j'essai de faire de la programmation par contrat et orienté objet.
    Pour le moment cela a bien fonctionné sur tout mes projets.
  • floyer
    Membre averti
    Envoyé par Aurelien.Regat-Barrel
    Ton étude porte sur combien de cas ?

    J'en profite pour glisser une subtilité : POO ne rime pas nécessairement avec héritage/hiérarchie de classes. On peut faire de la POO sans héritage, du moins dans certains langages. Typiquement avec des types copiables / ayant une sémantique de valeur (string, array, ...).
    Si on enlève l’héritage et polymorphisme (qui en dépend) à la POO, il ne reste plus que l’encapsulation, qui apparaît avec des langages avec modules et types abstraits (Haskell, Ocaml, même si on met de côté les extensions OO…). C’est assez réducteur pour de la programmation objet. (Ceci-dit, un langage propose diverses possibilités, il convient de les utiliser à bon escient : inutile d’utiliser celles qui n’apportent rien au problème).

    Ceci-dit, il est des domaines où la programmation orientée objet est utile, notamment pour les interfaces graphiques, où avec la notion de driver (JDBC ou autre… on a un «*objet*» polymorphe) et avoir un langage pratique pour utiliser ces notions est pratique. (A contrario, la bibliothèque Xt - X toolkit - est une bibliothèque orientée objet développée en C, ce qui rend l’usage moins commode qu’avec des langages orientés objets).
  • Madmac
    Membre extrêmement actif
    Envoyé par AoCannaille

    Pour les langages purement fonctionnels, je n'ai jamais eu l'occasion de faire autre chose que des tutoriels d'initiation, donc je sais pas ce que ça donne sur des gros projets.
    Relie ton commentaire sur la programmation procédurale. Si le langage n'offre pas la possibilité de créer des bloc de fonction comme la POO, tu te retrouve avec le même problème quand tu fais de la production en équipe.
  • Madmac
    Membre extrêmement actif
    Envoyé par floyer
    Si on enlève l’héritage et polymorphisme (qui en dépend) à la POO, il ne reste plus que l’encapsulation, qui apparaît avec des langages avec modules et types abstraits (Haskell, Ocaml, même si on met de côté les extensions OO…). C’est assez réducteur pour de la programmation objet. (Ceci-dit, un langage propose diverses possibilités, il convient de les utiliser à bon escient : inutile d’utiliser celles qui n’apportent rien au problème).
    Le grand avantage de la POO, ce n'est pas l'héritage, mais d'encourager le programmeur à découper le problème en section. Ce qui favorise le débogage et la construction de test. Et par conséquence, le travail en équipe.

    Et si on est au courant de la technique, il est possible de faire la même chose qu'avec des fonctions avec un langage POO qui n'offre pas de support pour les fonctions lambdas. Alors qu'avec un langage procédural, c'est rarement possible.
  • Madmac
    Membre extrêmement actif
    Envoyé par Madmac


    Depuis un mois j'ai fais des recherches sur la meilleur avenue pour exploiter les CPU multi-coeurs pour faire du parallélisme. Et c'est le modèle qui me semble le plus accessible pour le commun des mortels.
    J'aimerais beaucoup que la personne qui donner une évaluation négative. M'explique pourquoi j'ai tort selon lui.
  • rattlehead
    Membre expérimenté
    Envoyé par micka132
    Le paradigme qui a eu le plus d’influence sur moi c'est le "quick & dirty", ou sa variante française "à la rache".
    D'expérience c'est la paradigme le plus utilisé en entreprise.
    à l'arrache