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
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 ?
Voir aussi :
-
micka132Expert 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.le 03/11/2022 à 13:44 -
AoCannailleExpert 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.
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.
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/le 03/11/2022 à 14:04 -
mith06Membre 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/le 03/11/2022 à 14:30
-
grunkModérateurLe 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.le 03/11/2022 à 16:06 -
mith06Membre 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.le 03/11/2022 à 9:53 -
floyerMembre avertiSi 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).le 04/11/2022 à 21:49 -
MadmacMembre extrêmement actifRelie 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.le 07/11/2022 à 5:50
-
MadmacMembre extrêmement actifLe 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.le 07/11/2022 à 5:58 -
MadmacMembre extrêmement actifJ'aimerais beaucoup que la personne qui donner une évaluation négative. M'explique pourquoi j'ai tort selon lui.le 08/11/2022 à 1:24
-
rattleheadMembre expérimentéle 03/11/2022 à 15:42