{"id":246360,"date":"2022-07-08T15:05:22","date_gmt":"2022-07-08T17:05:22","guid":{"rendered":"https:\/\/teknomers.com\/fr\/pourquoi-les-developpeurs-detestent-changer-de-version-linguistique\/"},"modified":"2022-07-08T15:05:23","modified_gmt":"2022-07-08T17:05:23","slug":"pourquoi-les-developpeurs-detestent-changer-de-version-linguistique","status":"publish","type":"post","link":"https:\/\/teknomers.com\/fr\/pourquoi-les-developpeurs-detestent-changer-de-version-linguistique\/","title":{"rendered":"Pourquoi les d\u00e9veloppeurs d\u00e9testent changer de version linguistique"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"articlebody\">\n<div class=\"separator\" style=\"clear: both\"><\/div>\n<p>Le progr\u00e8s propulse la technologie vers l&#8217;avant.  Mais le progr\u00e8s a aussi un co\u00fbt : en ajoutant de nouvelles capacit\u00e9s et fonctionnalit\u00e9s, la communaut\u00e9 des d\u00e9veloppeurs ajuste constamment les \u00e9l\u00e9ments de base.  Cela inclut les langages fondamentaux utilis\u00e9s pour coder les solutions technologiques.<\/p>\n<p>Lorsque les \u00e9l\u00e9ments constitutifs changent, le code derri\u00e8re la solution technologique doit \u00e9galement changer.  C&#8217;est un exercice difficile et chronophage qui \u00e9puise les ressources.  Et s&#8217;il y avait une alternative ?<\/p>\n<h2 style=\"text-align: left\">Le probl\u00e8me\u00a0: lire le code que quelqu&#8217;un d&#8217;autre a \u00e9crit<\/h2>\n<p>Prenons du recul et examinons l&#8217;un des d\u00e9fis fondamentaux du d\u00e9veloppement : \u00e9diter le code de quelqu&#8217;un d&#8217;autre.  L&#8217;\u00e9dition du code que vous venez d&#8217;\u00e9crire, ou que vous avez \u00e9crit il y a quelques semaines, est tr\u00e8s bien.  Mais \u00e9diter votre propre code \u00e9crit il y a des ann\u00e9es &#8211; sans parler du code de quelqu&#8217;un d&#8217;autre &#8211; c&#8217;est une autre histoire.<\/p>\n<p>Les r\u00e8gles de style de code internes peuvent aider, mais il existe toujours des conventions de d\u00e9nomination \u00e9tranges pour les variables et les fonctions, ou des choix inhabituels pour les algorithmes.  On peut dire que la capacit\u00e9 d&#8217;un programmeur \u00e0 lire le code est une comp\u00e9tence cl\u00e9 &#8211; mais c&#8217;est difficile pour tout le monde.<\/p>\n<p>Les d\u00e9veloppeurs appellent le processus d&#8217;\u00e9dition de l&#8217;ancien code &#8220;refactoring&#8221; et c&#8217;est un processus qui introduit g\u00e9n\u00e9ralement de nouveaux bogues ou probl\u00e8mes de performances.  C&#8217;est pourquoi, revenir en arri\u00e8re et \u00e9diter l&#8217;ancien code, eh bien &#8211; c&#8217;est la derni\u00e8re chose que la plupart des \u00e9quipes de d\u00e9veloppement veulent faire, en particulier lorsque la base de code existante fonctionne de mani\u00e8re stable et fait son travail.<\/p>\n<h2 style=\"text-align: left\">C&#8217;est un vrai casse-t\u00eate, mais parfois il n&#8217;y a pas d&#8217;alternative<\/h2>\n<p>La refactorisation est quelque chose que chaque d\u00e9veloppeur veut \u00e9viter le plus longtemps possible car cela peut sembler une perte de temps.  N\u00e9anmoins, les d\u00e9veloppeurs doivent refactoriser de temps en temps pour diverses raisons, et l&#8217;une des raisons les plus courantes est due aux changements dans les blocs de construction des d\u00e9veloppeurs.<\/p>\n<p>Cela inclut les changements apport\u00e9s aux langages de programmation utilis\u00e9s pour cr\u00e9er des logiciels, qui \u00e9voluent in\u00e9vitablement avec le temps.  Les nouvelles versions d&#8217;un langage d\u00e9sapprouvent souvent les anciennes fa\u00e7ons de faire tout en introduisant de nouvelles fonctionnalit\u00e9s.  Si les d\u00e9veloppeurs n&#8217;adoptent pas la nouvelle version linguistique, ils sont exclus du nouvel ensemble de fonctionnalit\u00e9s. <\/p>\n<p>Cependant, le code existant doit g\u00e9n\u00e9ralement \u00eatre ajust\u00e9 pour fonctionner sur la nouvelle version du langage, ce qui implique un processus de refactorisation.  Et c&#8217;est l\u00e0 l&#8217;\u00e9nigme\u00a0: pour adopter la nouvelle version plus avanc\u00e9e d&#8217;un langage, les d\u00e9veloppeurs doivent refactoriser, et en cours de route, ils d\u00e9penseront \u00e9norm\u00e9ment d&#8217;efforts &#8211; et casseront toutes sortes de choses inattendues, introduisant de nouveaux bogues dans une application qui fonctionnait tr\u00e8s bien.<\/p>\n<p>Pire encore, la refactorisation seule ne vous donne pas les avantages de la nouvelle version linguistique, vous devez plut\u00f4t red\u00e9velopper votre base de code pour tirer parti des am\u00e9liorations.  Sinon, malgr\u00e9 l&#8217;ajustement du code pour s&#8217;adapter \u00e0 la nouvelle version linguistique, vous \u00eates exactement l\u00e0 o\u00f9 vous \u00e9tiez\u00a0: une base de code fonctionnant sur une nouvelle version linguistique, mais sans nouvelles fonctionnalit\u00e9s. <\/p>\n<h2 style=\"text-align: left\">Les fournisseurs laissent g\u00e9n\u00e9ralement les utilisateurs finaux s&#8217;en occuper<\/h2>\n<p>Cela peut sembler \u00eatre un exercice inutile, mais avec l&#8217;\u00e9volution constante de la technologie, il n&#8217;y a souvent que peu de choix en la mati\u00e8re, vos partenaires technologiques choisissant pour vous.<\/p>\n<p>Disons que nous venons de passer de Python 2.7 \u00e0 Python 3.0.  Si vous d\u00e9veloppez vos applications en interne, vous avez le contr\u00f4le total et pouvez faire le changement ou ne pas le faire.  Les d\u00e9veloppeurs, en revanche, pourraient bien d\u00e9cider de laisser les choses en l&#8217;\u00e9tat.  Si une application est d\u00e9velopp\u00e9e pour et s&#8217;ex\u00e9cute sur Python 2.7, le d\u00e9veloppeur s&#8217;en tiendra l\u00e0 et indiquera aux utilisateurs qu&#8217;une application a \u00e9t\u00e9 d\u00e9velopp\u00e9e pour Python 2.7, sans prise en charge des autres versions.<\/p>\n<p>Cela peut laisser les utilisateurs dans une situation difficile &#8211; restez sur l&#8217;ancienne version de Python 2.7 pour s&#8217;adapter \u00e0 l&#8217;application, en laissant derri\u00e8re vous des progr\u00e8s, ou passez \u00e0 Python 3.0, et risquez une gamme d&#8217;incompatibilit\u00e9s avec les applications.<\/p>\n<h2 style=\"text-align: left\">Le r\u00e9sultat net : un risque majeur pour la s\u00e9curit\u00e9<\/h2>\n<p>Les langages de programmation (et leurs biblioth\u00e8ques assorties) ne sont pas \u00e0 l&#8217;abri des failles de s\u00e9curit\u00e9.  Lorsque ces vuln\u00e9rabilit\u00e9s apparaissent, une mise \u00e0 niveau de la version linguistique peut vous \u00eatre impos\u00e9e par les d\u00e9veloppeurs. <\/p>\n<p>Mais ces mises \u00e0 niveau ne se limiteront pas \u00e0 de simples corrections de bogues &#8211; elles entra\u00eeneront la d\u00e9pr\u00e9ciation des constructions de langage avec de nouvelles constructions introduites, et cela obligera les d\u00e9veloppeurs \u00e0 modifier le code existant, encore une fois avec tous les probl\u00e8mes potentiels que apporte.<\/p>\n<p>La situation s&#8217;aggrave encore lorsque vous pensez \u00e0 l&#8217;effet cumulatif des biblioth\u00e8ques incluses.  Apr\u00e8s les changements de langue, ces biblioth\u00e8ques doivent \u00e9galement \u00eatre mises \u00e0 jour &#8211; mais si l&#8217;une des biblioth\u00e8ques utilis\u00e9es n&#8217;est pas mise \u00e0 jour par ses auteurs, le d\u00e9veloppeur ne pourra pas l&#8217;utiliser apr\u00e8s la mise \u00e0 niveau du reste du code vers une version plus r\u00e9cente, ce qui conduit \u00e0 nouveau \u00e0 plus d&#8217;\u00e9criture de code. <\/p>\n<p>Il est facile de voir o\u00f9 tout cela m\u00e8ne : plus d&#8217;efforts, des risques suppl\u00e9mentaires d&#8217;introduction de bugs\u2026 et une r\u00e9ticence \u00e0 poursuivre le refactoring pour s&#8217;adapter aux mises \u00e0 jour.  Prochain?  Les mises \u00e0 jour ne sont tout simplement pas effectu\u00e9es, ce qui signifie que les charges de travail reposent sur des blocs de construction non s\u00e9curis\u00e9s et obsol\u00e8tes.<\/p>\n<p>L&#8217;histoire est similaire \u00e0 ce que nous voyons se d\u00e9rouler partout dans le monde de la technologie, alors que des blocs de construction anciens et vuln\u00e9rables laissent la porte ouverte aux cyberattaques.  Il y a cependant de bonnes nouvelles qui \u00e9mergent. <\/p>\n<h2 style=\"text-align: left\">Existe-t-il une meilleure solution ?<\/h2>\n<p>Prenez les syst\u00e8mes d&#8217;exploitation non pris en charge, par exemple.  Dans le pass\u00e9, quand <a rel=\"nofollow noopener\" href=\"https:\/\/www.centos.org\/centos-linux-eol\/\" target=\"_blank\">un OS arriv\u00e9 en fin de vie<\/a>, le seul choix \u00e9tait de passer \u00e0 un syst\u00e8me d&#8217;exploitation plus r\u00e9cent &#8211; un investissement majeur et plein de risques.  Le r\u00e9sultat net est que de nombreuses organisations s&#8217;appuient sur des syst\u00e8mes d&#8217;exploitation non corrig\u00e9s et non pris en charge, m\u00eame pour les charges de travail critiques.  Si vous n&#8217;avez pas d&#8217;applications mises \u00e0 jour, car les d\u00e9veloppeurs ne refactoriseront pas les anciennes bases de code, vous ne pouvez pas d\u00e9placer vos applications vers des syst\u00e8mes d&#8217;exploitation plus r\u00e9cents qui ne prennent pas en charge les anciennes versions du langage &#8211; et donc casser l&#8217;application.<\/p>\n<p>Heureusement, ce sc\u00e9nario a chang\u00e9 car <a rel=\"nofollow noopener\" href=\"https:\/\/tuxcare.com\/extended-lifecycle-support\/\" target=\"_blank\">l&#8217;assistance en fin de vie est d\u00e9sormais une r\u00e9alit\u00e9 pour de nombreux syst\u00e8mes d&#8217;exploitation Linux<\/a>ce qui signifie que les organisations peuvent gagner du temps pour migrer d&#8217;un syst\u00e8me d&#8217;exploitation non pris en charge vers un syst\u00e8me d&#8217;exploitation avec prise en charge par un fournisseur officiel, sans prendre aucun risque de s\u00e9curit\u00e9.<\/p>\n<p>Peut-on faire quelque chose de similaire pour les versions linguistiques\u00a0?  Un moyen de &#8220;mettre \u00e0 niveau&#8221; efficacement un runtime de langage avec les derniers correctifs de s\u00e9curit\u00e9 tout en ne modifiant pas le fonctionnement de cette version de langage ou de ces biblioth\u00e8ques sp\u00e9cifiques, supprimant ainsi le besoin de refactoriser\u00a0?<\/p>\n<p>R\u00e9p\u00e9ter ce qui a \u00e9t\u00e9 r\u00e9alis\u00e9 pour les syst\u00e8mes d&#8217;exploitation et l&#8217;appliquer aux versions linguistiques donnera aux d\u00e9veloppeurs une \u00e9norme marge de man\u0153uvre, r\u00e9duisant ainsi le besoin de refactoriser en permanence.  \u00c0 leur tour, il y a une probabilit\u00e9 plus \u00e9lev\u00e9e que les charges de travail s&#8217;ex\u00e9cutent en toute s\u00e9curit\u00e9. <\/p>\n<p>Est-il possible?  Eh bien, ce qui a \u00e9t\u00e9 r\u00e9alis\u00e9 pour les syst\u00e8mes d&#8217;exploitation peut \u00eatre \u00e9tendu \u00e0 d&#8217;autres domaines.  Surveillez cet endroit.<\/p>\n<p><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/thehackernews.com\/2022\/07\/why-developers-hate-changing-language.html\" rel=\"nofollow noopener\" target=\"_blank\">ttn-fr-57<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le progr\u00e8s propulse la technologie vers l&#8217;avant. Mais le progr\u00e8s a aussi un co\u00fbt : en ajoutant de nouvelles capacit\u00e9s et fonctionnalit\u00e9s, la communaut\u00e9 des d\u00e9veloppeurs ajuste constamment les \u00e9l\u00e9ments de base. Cela inclut les langages fondamentaux utilis\u00e9s pour coder les solutions technologiques. Lorsque les \u00e9l\u00e9ments constitutifs changent, le code derri\u00e8re la solution technologique doit [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":246361,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[9505,4168,4158,4165,4161,27063,11530,4157,4159,4171,4170,65,27353,4167,4160,4163,4162,2147,4172,4169,971,4166,4164],"class_list":["post-246360","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie","tag-changer","tag-comment-pirater","tag-cyber-actualites","tag-cyber-attaques","tag-cyber-mises-a-jour","tag-detestent","tag-developpeurs","tag-lactualite-de-la-cybersecurite","tag-lactualite-de-la-cybersecurite-aujourdhui","tag-lactualite-des-hackers","tag-la-securite-des-informations","tag-les","tag-linguistique","tag-logiciel-malveillant-de-ransomware","tag-mises-a-jour-de-la-cybersecurite","tag-nouvelles-de-piratage","tag-nouvelles-de-pirates","tag-pourquoi","tag-securite-informatique","tag-securite-internet","tag-version","tag-violation-de-donnees","tag-vulnerabilite-logicielle"],"_links":{"self":[{"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/posts\/246360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/comments?post=246360"}],"version-history":[{"count":0,"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/posts\/246360\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/media\/246361"}],"wp:attachment":[{"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/media?parent=246360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/categories?post=246360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/teknomers.com\/fr\/wp-json\/wp\/v2\/tags?post=246360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}