IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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 , par Patrick Ruiz

23PARTAGES

11  0 
Lesquels de ces paradigmes vous ont le plus influencé en tant que développeur ?
programmation orientée objet (POO)
69 %
programmation fonctionnelle
35 %
programmation événementielle
31 %
programmation procédurale
11 %
programmation par contraintes
6 %
programmation logique
0 %
programmation descriptive
0 %
Autres (à préciser)
0 %
Voter 105 votants
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

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de micka132
Expert confirmé https://www.developpez.com
Le 03/11/2022 à 13:44
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.
8  1 
Avatar de AoCannaille
Expert confirmé https://www.developpez.com
Le 03/11/2022 à 14:04
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.

Citation Envoyé par Jeff_67 Voir le message
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.

Citation Envoyé par micka132 Voir le message
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/
5  1 
Avatar de mith06
Membre expérimenté https://www.developpez.com
Le 03/11/2022 à 14:30
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!
3  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 03/11/2022 à 16:06
Citation Envoyé par AoCannaille Voir le message

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.
3  0 
Avatar de mith06
Membre expérimenté https://www.developpez.com
Le 03/11/2022 à 9:53
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.
2  0 
Avatar de floyer
Membre averti https://www.developpez.com
Le 04/11/2022 à 21:49
Citation Envoyé par Aurelien.Regat-Barrel Voir le message
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).
1  0 
Avatar de Madmac
Membre extrêmement actif https://www.developpez.com
Le 07/11/2022 à 5:50
Citation Envoyé par AoCannaille Voir le message

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.
1  0 
Avatar de Madmac
Membre extrêmement actif https://www.developpez.com
Le 07/11/2022 à 5:58
Citation Envoyé par floyer Voir le message
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.
1  0 
Avatar de Madmac
Membre extrêmement actif https://www.developpez.com
Le 08/11/2022 à 1:24
Citation Envoyé par Madmac Voir le message


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.
1  0 
Avatar de rattlehead
Membre expérimenté https://www.developpez.com
Le 03/11/2022 à 15:42
Citation Envoyé par micka132 Voir le message
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
0  0