{"id":3368,"date":"2023-02-06T16:49:24","date_gmt":"2023-02-06T16:49:24","guid":{"rendered":"https:\/\/baselunaire.fr\/?p=3368"},"modified":"2023-02-06T18:13:41","modified_gmt":"2023-02-06T18:13:41","slug":"concepts-008","status":"publish","type":"post","link":"https:\/\/baselunaire.fr\/?p=3368","title":{"rendered":"Concepts #008"},"content":{"rendered":"<p>Le concept du jour, c&rsquo;est le <strong>\u00ab\u00a0ramasse-miettes invisible\u00a0\u00bb<\/strong>, une notion informatique aux implications inqui\u00e9tantes.<\/p>\n<p>Anecdote amusante r\u00e9cemment d\u00e9nich\u00e9e sur <strong>Reddit<\/strong> : <a href=\"https:\/\/devblogs.microsoft.com\/oldnewthing\/20180228-00\/?p=98125\" rel=\"noopener\" target=\"_blank\">sur son blog<\/a>, <strong>Raymond Chen<\/strong> (ing\u00e9nieur chez <strong>Microsoft<\/strong>) r\u00e9fl\u00e9chit au concept de <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Fuite_de_m\u00e9moire\" rel=\"noopener\" target=\"_blank\">\u00ab\u00a0fuite m\u00e9moire\u00a0\u00bb<\/a>. Et notamment \u00e0 sa solution moderne : le ramasse-miettes (i.e. <em>garbage collector<\/em> en anglais, que l&rsquo;on pourrait traduire par \u00ab\u00a0\u00e9boueur\u00a0\u00bb ou \u00ab\u00a0ramasse-poubelles\u00a0\u00bb). Le ramasse-miettes, donc, est un programme r\u00e9sident qui r\u00e9cup\u00e8re les zones m\u00e9morielles inutilis\u00e9es, perdues ou carr\u00e9ment abandonn\u00e9es par des applications mal con\u00e7ues, et qui les restitue au syst\u00e8me. C&rsquo;est du recyclage. Chen affirme que dans certains cas de figure, le <strong>\u00ab\u00a0ramasse-miettes invisible\u00a0\u00bb<\/strong> (<em>the null garbage collector<\/em>, que l&rsquo;on pourrait traduire directement en \u00ab\u00a0ramasse-miettes inexistant\u00a0\u00bb) est le meilleur qui soit. Sous-entendant que parfois, on dispose de tant de m\u00e9moire qu&rsquo;on ne pourra jamais l&rsquo;\u00e9puiser avant d&rsquo;atteindre la derni\u00e8re instruction du programme.<\/p>\n<p>Et c&rsquo;est l\u00e0 que \u00e7a devient vraiment int\u00e9ressant, car il cite une vieille conversation sur un forum <em>usenet<\/em> datant de 1996 (rien que \u00e7a) ! Un court \u00e9change entre deux codeurs, <strong>Norman Cohen<\/strong> et <strong>Kent Mitchell<\/strong>, qui se d\u00e9roule comme suit (je traduis) :<br \/>\n<strong><br \/>\nNorman Cohen : <\/strong><em>Les seuls programmes que je connaisse avec des fuites de m\u00e9moire d\u00e9lib\u00e9r\u00e9es sont ceux dont l&rsquo;ex\u00e9cution est suffisamment courte, et dont les machines-cibles poss\u00e8dent tellement d&rsquo;espace m\u00e9moire, que manquer de place n&rsquo;est m\u00eame pas envisageable. Cette cat\u00e9gorie de programmes inclut de nombreux exercices pour \u00e9tudiants, ainsi que de petites applications et des utilitaires. Il n&rsquo;englobe que peu d&rsquo;applications embarqu\u00e9es ou d&rsquo;importance vitale -voire aucune.<\/em><\/p>\n<p><strong>Kent Mitchell : <\/strong><em>Cela m&rsquo;\u00e9voque un souvenir int\u00e9ressant. Il fut un temps je travaillais pour un client d\u00e9veloppant le logiciel embarqu\u00e9 d&rsquo;un missile. En analysant le code, j&rsquo;ai remarqu\u00e9 qu&rsquo;ils avaient un certain nombre de probl\u00e8mes en terme de fuites-m\u00e9moire. Imaginez ma surprise lorsque l&rsquo;ing\u00e9nieur en chef s&rsquo;est exclam\u00e9 : \u00ab\u00a0Bien s\u00fbr que \u00e7a fuit !\u00a0\u00bb Il pr\u00e9cisa qu&rsquo;ils avaient calcul\u00e9 la m\u00e9moire perdue durant le temps de vol maximal du missile, puis doubl\u00e9 cette valeur. Et qu&rsquo;ils avaient alors ajout\u00e9 cette quantit\u00e9 de m\u00e9moire mat\u00e9rielle au syst\u00e8me pour qu&rsquo;il tol\u00e8re les fuites. Le missile explosant quand il atteignait sa cible, ou qu&rsquo;il d\u00e9passait son temps de vol, le ramasse-miettes invisible faisait ainsi son boulot sans la moindre ligne de programmation.<\/em><\/p>\n<p>&#8230;<\/p>\n<p>Au-del\u00e0 de l&rsquo;\u00e9clat de rire (2.0), on est en droit de se poser des questions vraiment graves, du genre : \u00ab\u00a0Si ce niveau de bricolage suffisait pour les missiles am\u00e9ricains durant les ann\u00e9es 90, alors aujourd&rsquo;hui, en 2023, avec le naufrage de l&rsquo;\u00e9ducation sup\u00e9rieure et l&rsquo;ignoble pression du march\u00e9, quelle genre d&rsquo;aberrations logicielles pilotent nos armes ? Peut-on raisonnablement confier la d\u00e9fense de vies humaines \u00e0 des empilements instables de morceaux de code copi\u00e9s\/coll\u00e9s par un stagiaire depuis un vieux commentaire <strong>Stackoverflow<\/strong> ? Pire : comment se fier \u00e0 des r\u00e9seaux de neurones opaques dont (ind\u00e9pendamment du facteur apprentissage, qui pose de s\u00e9rieux soucis) l&rsquo;impl\u00e9mentation-m\u00eame est sujette \u00e0 caution ?\u00a0\u00bb<\/p>\n<p>Pour rappel, de simples calculs de nombres en virgule flottante (float) posent d\u00e9j\u00e0 des probl\u00e8mes de pr\u00e9cision dans tout un tas de situations concr\u00e8tes&#8230; (et si vous cherchez bien vous en trouverez des exemples sur Shadertoy !)<\/p>\n<p>Cette interrogation sur la qualit\u00e9 des logiciels militaires contemporains est aussi passionnante que sinistre. Doit-on privil\u00e9gier la simplicit\u00e9 (ramasse-miettes invisible) ou la complexit\u00e9 (ramasse-miettes r\u00e9el) ? Mais le ramasse-miettes lui-m\u00eame, n&rsquo;est-il pas clairement une forme de renoncement philosophique, une admission tacite que le codeur n&rsquo;a qu&rsquo;une ma\u00eetrise fort relative de ce qu&rsquo;il a cr\u00e9\u00e9, et que l&rsquo;on accepte cette fatalit\u00e9 ? Ou alors s&rsquo;agit-il d&rsquo;un garde-fou n\u00e9cessaire, vital m\u00eame, qui nous rappelle que quels que soient nos objectifs, l&rsquo;impr\u00e9vu reste la r\u00e8gle ?<\/p>\n<p>Non, je n&rsquo;ai pas de r\u00e9ponse.<br \/>\nEt oui, c&rsquo;est sur cette haute falaise battue par les vents, cher lecteur, que je vous abandonnerai \u00e0 la m\u00e9ditation&#8230; et aux philosophes !<br \/>\n*cris stridents mena\u00e7ants qui se rapprochent*<br \/>\n*se sauvant \u00e0 toutes jambes dans la direction oppos\u00e9e* \u00ab\u00a0Bonne prise de t\u00eate !\u00a0\u00bb<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le concept du jour, c&rsquo;est le \u00ab\u00a0ramasse-miettes invisible\u00a0\u00bb, une notion informatique aux implications inqui\u00e9tantes. Anecdote amusante r\u00e9cemment d\u00e9nich\u00e9e sur Reddit : sur son blog, Raymond Chen (ing\u00e9nieur chez Microsoft) r\u00e9fl\u00e9chit au concept de \u00ab\u00a0fuite m\u00e9moire\u00a0\u00bb. Et notamment \u00e0 sa solution &hellip; <a href=\"https:\/\/baselunaire.fr\/?p=3368\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-3368","post","type-post","status-publish","format-standard","hentry","category-concepts"],"_links":{"self":[{"href":"https:\/\/baselunaire.fr\/index.php?rest_route=\/wp\/v2\/posts\/3368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/baselunaire.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/baselunaire.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/baselunaire.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/baselunaire.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3368"}],"version-history":[{"count":5,"href":"https:\/\/baselunaire.fr\/index.php?rest_route=\/wp\/v2\/posts\/3368\/revisions"}],"predecessor-version":[{"id":3373,"href":"https:\/\/baselunaire.fr\/index.php?rest_route=\/wp\/v2\/posts\/3368\/revisions\/3373"}],"wp:attachment":[{"href":"https:\/\/baselunaire.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/baselunaire.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/baselunaire.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}