<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Society on kenji.blog</title><link>http://kenji.blog/fr/categories/society/</link><description>Recent content in Society on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 12 Sep 2026 12:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/fr/categories/society/index.xml" rel="self" type="application/rss+xml"/><item><title>Deepfakes et littératie de l'information : Comment détecter techniquement les fake news</title><link>http://kenji.blog/fr/p/deepfake-info-literacy/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/fr/p/deepfake-info-literacy/</guid><description>&lt;img src="http://kenji.blog/p/deepfake-info-literacy/img/eyecatch.jpg" alt="Featured image of post Deepfakes et littératie de l'information : Comment détecter techniquement les fake news" />&lt;h1 id="introduction--lère-où-la-frontière-entre-réalité-et-fiction-sestompe">Introduction : L&amp;rsquo;ère où la frontière entre réalité et fiction s&amp;rsquo;estompe
&lt;/h1>&lt;p>Dans les années 2020, l&amp;rsquo;évolution de l&amp;rsquo;IA générative (Generative AI) progresse à un rythme sans précédent. Qu&amp;rsquo;il s&amp;rsquo;agisse de textes, de voix, d&amp;rsquo;images ou même de vidéos, il est désormais possible de générer en quelques secondes du contenu indiscernable de celui créé par des humains. Si cette avancée technologique apporte d&amp;rsquo;immenses bénéfices dans les domaines créatifs, elle engendre également une menace sociale majeure : l&amp;rsquo;inondation de contenus falsifiés sophistiqués appelés &amp;ldquo;deepfakes&amp;rdquo; (Deepfake).&lt;/p>
&lt;p>Les deepfakes menacent la société sous diverses formes, telles que de faux discours d&amp;rsquo;hommes politiques, des escroqueries se faisant passer pour des PDG d&amp;rsquo;entreprises (une évolution des arnaques au président BEC), ou de la pornographie diffamatoire envers des célébrités. En particulier lors des périodes électorales, la diffusion de fake news par le biais de deepfakes a évolué au point d&amp;rsquo;ébranler les fondements mêmes de la démocratie.&lt;/p>
&lt;p>À notre époque, ce qui nous est demandé, c&amp;rsquo;est une mise à jour de notre &amp;ldquo;littératie de l&amp;rsquo;information&amp;rdquo;. L&amp;rsquo;idée reçue selon laquelle &amp;ldquo;il faut croire ce que l&amp;rsquo;on voit de ses propres yeux&amp;rdquo; n&amp;rsquo;est plus valable. Dans cet article, en commençant par le contexte technique de la façon dont les deepfakes sont générés, nous expliquerons à un niveau extrêmement approfondi, en utilisant des formules mathématiques et du code, les méthodes de criminalistique numérique (digital forensics) de pointe pour les détecter &amp;ldquo;techniquement&amp;rdquo;, ainsi que les cadres (comme la C2PA) pour lutter contre la désinformation à l&amp;rsquo;échelle de la société.&lt;/p>
&lt;hr>
&lt;h1 id="1-les-mécanismes-de-lia-générative-derrière-les-deepfakes">1. Les mécanismes de l&amp;rsquo;IA générative derrière les deepfakes
&lt;/h1>&lt;p>Pour comprendre les deepfakes, il faut d&amp;rsquo;abord connaître le fonctionnement de l&amp;rsquo;IA générative qui en est la base. Actuellement, les deux architectures représentatives utilisées pour la génération d&amp;rsquo;images et de vidéos en haute définition sont les &amp;ldquo;GAN&amp;rdquo; (Generative Adversarial Networks : Réseaux antagonistes génératifs) et les &amp;ldquo;Diffusion Models&amp;rdquo; (Modèles de diffusion).&lt;/p>
&lt;h2 id="11-réseaux-antagonistes-génératifs-gan">1.1 Réseaux antagonistes génératifs (GAN)
&lt;/h2>&lt;p>Proposés par Ian Goodfellow et ses collègues en 2014, les GAN ont été les éléments déclencheurs de la technologie deepfake. Un GAN est constitué de deux réseaux de neurones jouant les rôles de &amp;ldquo;faussaire&amp;rdquo; et de &amp;ldquo;policier&amp;rdquo;, qui s&amp;rsquo;affrontent (apprentissage antagoniste) pour générer des données extrêmement réalistes.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Générateur (Generator, $G$)&lt;/strong> : Prend en entrée un bruit aléatoire (variable latente $z$) et génère des données ressemblant à de vraies (comme des images).&lt;/li>
&lt;li>&lt;strong>Discriminateur (Discriminator, $D$)&lt;/strong> : Détermine si les données en entrée sont &amp;ldquo;réelles&amp;rdquo; (Real), provenant d&amp;rsquo;un jeu de données réel, ou &amp;ldquo;fausses&amp;rdquo; (Fake), créées par le générateur.&lt;/li>
&lt;/ul>
&lt;p>Ces deux réseaux s&amp;rsquo;entraînent en optimisant une fonction de perte (loss function) formulée comme le jeu minimax (Minimax) suivant.&lt;/p>
$$
\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_{z}(z)}[\log(1 - D(G(z)))]
$$&lt;p>Ici, $x$ correspond aux données réelles et $z$ à la variable latente (bruit). Le discriminateur $D$ cherche à maximiser cette équation (distinguer avec précision le vrai du faux), tandis que le générateur $G$ cherche à la minimiser (tromper le discriminateur). Lorsque cet apprentissage atteint un état d&amp;rsquo;équilibre (équilibre de Nash), le générateur est capable de produire des données indiscernables des vraies.&lt;/p>
&lt;pre class="mermaid">
flowchart LR
Z[&amp;#34;Vecteur latent (Latent Vector Z)&amp;#34;] --&amp;gt; G[&amp;#34;Générateur (Generator)&amp;#34;]
G --&amp;gt; F[&amp;#34;Image générée (Fake Image)&amp;#34;]
R[&amp;#34;Image réelle (Real Image)&amp;#34;] --&amp;gt; D[&amp;#34;Discriminateur (Discriminator)&amp;#34;]
F --&amp;gt; D
D --&amp;gt; O[&amp;#34;Jugement vrai/faux (Real/Fake)&amp;#34;]
O -.-&amp;gt;|&amp;#34;Loss Feedback&amp;#34;| G
O -.-&amp;gt;|&amp;#34;Loss Feedback&amp;#34;| D
&lt;/pre>
&lt;h2 id="12-modèles-de-diffusion-diffusion-models">1.2 Modèles de diffusion (Diffusion Models)
&lt;/h2>&lt;p>Ces dernières années, surpassant les GAN en termes de qualité d&amp;rsquo;image et de stabilité, les &amp;ldquo;modèles de diffusion&amp;rdquo; sont devenus la technologie de base de Midjourney et Stable Diffusion. Les modèles de diffusion se composent d&amp;rsquo;un &amp;ldquo;processus de diffusion vers l&amp;rsquo;avant&amp;rdquo; ajoutant progressivement du bruit aux données, et d&amp;rsquo;un &amp;ldquo;processus de diffusion inverse&amp;rdquo; restaurant les données à partir du bruit.&lt;/p>
&lt;p>Dans le &lt;strong>processus de diffusion vers l&amp;rsquo;avant (Forward Process)&lt;/strong>, un bruit gaussien est ajouté à une image nette $x_0$ à chaque pas de temps $t$. Ce processus est représenté sous la forme d&amp;rsquo;une chaîne de Markov par l&amp;rsquo;équation suivante.&lt;/p>
$$
q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t \mathbf{I})
$$&lt;p>Ici, $\beta_t$ est un paramètre de planification contrôlant la variance du bruit. Après un nombre suffisant d&amp;rsquo;étapes $T$, $x_T$ devient un bruit aléatoire complet.&lt;/p>
&lt;p>Dans le &lt;strong>processus de diffusion inverse (Reverse Process)&lt;/strong>, un réseau de neurones (généralement une architecture U-Net) apprend à prédire le bruit à partir de l&amp;rsquo;image bruitée $x_t$ et à restaurer l&amp;rsquo;étape précédente $x_{t-1}$. En combinant ce processus avec un conditionnement (comme une invite textuelle), il devient possible de générer n&amp;rsquo;importe quelle image à partir de zéro (du bruit).&lt;/p>
&lt;hr>
&lt;h1 id="2-criminalistique-numérique--techniques-pour-trouver-les-traces-des-productions">2. Criminalistique numérique : Techniques pour trouver les traces des productions
&lt;/h1>&lt;p>Quelle que soit la sophistication des modèles génératifs, les données générées par l&amp;rsquo;IA conservent toujours des &amp;ldquo;traces mathématiques et statistiques (artefacts)&amp;rdquo; invisibles pour l&amp;rsquo;homme. Les technologies de détection (détecteurs de deepfakes) capturent ces traces infimes par diverses approches.&lt;/p>
&lt;h2 id="21-analyse-du-domaine-fréquentiel-et-dct-transformée-en-cosinus-discrète">2.1 Analyse du domaine fréquentiel et DCT (Transformée en cosinus discrète)
&lt;/h2>&lt;p>L&amp;rsquo;œil humain est sensible aux changements spatiaux de couleur et de luminosité d&amp;rsquo;une image (domaine spatial), mais insensible aux changements de fréquences (domaine fréquentiel). Bien que les images générées par des GAN ou des modèles de diffusion puissent sembler parfaites au premier coup d&amp;rsquo;œil, le processus de suréchantillonnage (agrandissement de la basse à la haute résolution) produit des motifs fréquentiels spécifiques (comme l&amp;rsquo;artefact en damier).&lt;/p>
&lt;p>Pour détecter cela, on utilise couramment la &lt;strong>Transformée en cosinus discrète (Discrete Cosine Transform, DCT)&lt;/strong>. La DCT représente une image comme la somme d&amp;rsquo;ondes cosinusoïdales de différentes fréquences. L&amp;rsquo;équation de la DCT bidimensionnelle est la suivante.&lt;/p>
$$
X_{k_1, k_2} = \sum_{n_1=0}^{N_1-1} \sum_{n_2=0}^{N_2-1} x_{n_1, n_2} \cos\left[\frac{\pi}{N_1}\left(n_1 + \frac{1}{2}\right)k_1\right] \cos\left[\frac{\pi}{N_2}\left(n_2 + \frac{1}{2}\right)k_2\right]
$$&lt;p>Comparées aux images naturelles, les images générées ont tendance à présenter une distribution d&amp;rsquo;énergie anormale dans les &lt;strong>composantes à haute fréquence (bruit fin et changements brusques des contours)&lt;/strong>. Le code Python suivant est un exemple simple utilisant la DCT pour extraire l&amp;rsquo;énergie des composantes à haute fréquence d&amp;rsquo;une image.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">cv2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">scipy.fftpack&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">extract_high_frequency_features&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">image_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Chargement de l&amp;#39;image et conversion en niveaux de gris&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">img&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">imread&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">image_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">IMREAD_GRAYSCALE&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">img&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="kc">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">raise&lt;/span> &lt;span class="ne">ValueError&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Image non trouvée&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Application de la transformée en cosinus discrète 2D (DCT)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># On applique d&amp;#39;abord une DCT 1D sur les lignes, puis sur les colonnes&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dct_result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">scipy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fftpack&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dct&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">scipy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fftpack&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dct&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">img&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">T&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">norm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ortho&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">T&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">norm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ortho&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Extraction des composantes à haute fréquence (masquage à zéro des basses fréquences en haut à gauche)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">rows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cols&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dct_result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mask&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ones&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">rows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cols&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Masquage de la région basse fréquence (10% de l&amp;#39;ensemble)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mask&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">rows&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cols&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">)]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">high_freq_features&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dct_result&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">mask&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Calcul de la quantité d&amp;#39;énergie de la région haute fréquence&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">energy&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sum&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">abs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">high_freq_features&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">energy&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># En comparant des images naturelles et générées, une différence statistiquement significative de la valeur d&amp;#39;energy apparaît souvent&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ce manque de naturel dans le domaine fréquentiel survient car, bien que l&amp;rsquo;IA puisse apprendre la &amp;ldquo;cohérence locale au niveau des pixels&amp;rdquo;, il lui est difficile de reproduire parfaitement les &amp;ldquo;caractéristiques fréquentielles globales de l&amp;rsquo;image entière&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h1 id="3-détection-des-signaux-biométriques--vérification-du-battement-de-la-vie-par-rppg">3. Détection des signaux biométriques : Vérification du &amp;ldquo;battement de la vie&amp;rdquo; par rPPG
&lt;/h1>&lt;p>En plus des technologies de détection d&amp;rsquo;images (fixes), l&amp;rsquo;&lt;strong>extraction des signaux biométriques (Biological Signals)&lt;/strong> constitue une approche révolutionnaire pour la détection de deepfakes dans les vidéos.&lt;/p>
&lt;p>Tant qu&amp;rsquo;un être humain est en vie, son sang circule dans son corps au rythme des battements de son cœur. L&amp;rsquo;hémoglobine présente dans le sang absorbant bien certaines longueurs d&amp;rsquo;onde (notamment la lumière verte, environ 530 nm), la couleur de la peau du visage subit des changements minimes (invisibles à l&amp;rsquo;œil nu) synchronisés avec le rythme cardiaque. La technologie permettant d&amp;rsquo;estimer de manière non tactile la fréquence cardiaque à partir de la vidéo d&amp;rsquo;une caméra RGB ordinaire en utilisant ce principe est appelée &lt;strong>rPPG (Photopléthysmographie à distance, remote Photoplethysmography)&lt;/strong>.&lt;/p>
&lt;p>Le modèle de base de la rPPG, fondé sur l&amp;rsquo;absorption et la réflexion de la lumière, s&amp;rsquo;exprime selon la loi de Beer-Lambert de la manière suivante.&lt;/p>
$$
I(t) = I_0(t) e^{-\left( \mu_{dc} + \mu_{ac}(t) \right) d}
$$&lt;p>Ici, $I(t)$ est l&amp;rsquo;intensité lumineuse observée par la caméra, $I_0(t)$ l&amp;rsquo;intensité de la source lumineuse, $\mu_{dc}$ le coefficient d&amp;rsquo;absorption lumineuse des tissus statiques, $\mu_{ac}(t)$ le coefficient d&amp;rsquo;absorption dynamique dû aux variations du flux sanguin (battement cardiaque), et $d$ la longueur du trajet optique.&lt;/p>
&lt;p>Les vidéos deepfake (comme le FaceSwap qui remplace les visages, ou le Lip-sync qui synchronise le mouvement des lèvres avec l&amp;rsquo;audio) recherchent le réalisme visuel image par image, mais &lt;strong>ne peuvent reproduire les infimes variations du flux sanguin (signaux cardiaques) le long de l&amp;rsquo;axe temporel&lt;/strong>. Par conséquent, si l&amp;rsquo;on tente d&amp;rsquo;extraire un signal rPPG d&amp;rsquo;une vidéo deepfake, on obtient un signal non naturel et bruité, différent d&amp;rsquo;une fréquence cardiaque humaine normale (habituellement un cycle régulier dans la plage de 60 à 100 bpm).&lt;/p>
&lt;pre class="mermaid">
flowchart LR
V[&amp;#34;Flux vidéo d&amp;#39;entrée (Video Stream)&amp;#34;] --&amp;gt; F[&amp;#34;Détection et suivi de visage (Face Tracking)&amp;#34;]
F --&amp;gt; R[&amp;#34;Extraction de la région d&amp;#39;intérêt (ROI Extraction)&amp;#34;]
R --&amp;gt; S[&amp;#34;Regroupement spatial (Spatial Pooling)&amp;#34;]
S --&amp;gt; B[&amp;#34;Filtre passe-bande (Bandpass Filter)&amp;#34;]
B --&amp;gt; H[&amp;#34;Signal de battement cardiaque (Heartbeat Signal)&amp;#34;]
H --&amp;gt; A[&amp;#34;Jugement vrai/faux et détection d&amp;#39;anomalies (Fake/Real Classification)&amp;#34;]
&lt;/pre>
&lt;p>Voici un exemple conceptuel d&amp;rsquo;implémentation d&amp;rsquo;un pipeline d&amp;rsquo;extraction de signaux rPPG à partir d&amp;rsquo;une vidéo en utilisant Python.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">cv2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">scipy&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">signal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">extract_rppg_signal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">video_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cap&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">VideoCapture&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">video_path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">green_signals&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isOpened&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ret&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">frame&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">ret&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 1. Détection de visage et extraction de la ROI (Région d&amp;#39;intérêt : par exemple le front ou les joues)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># roi = detect_face_and_extract_roi(frame)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Ici, pour simplifier, la partie centrale de toute l&amp;#39;image est utilisée comme ROI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">h&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">w&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frame&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">roi&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frame&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.3&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.6&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.4&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.6&lt;/span>&lt;span class="p">)]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 2. Extraction du canal Vert (Green) de l&amp;#39;espace RGB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Car l&amp;#39;hémoglobine dans le sang absorbe le plus la lumière verte&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g_channel&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">roi&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="p">:,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 3. Regroupement spatial (calcul de la valeur moyenne)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mean_g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mean&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">g_channel&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">green_signals&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">mean_g&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">release&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">green_signals&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">None&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 4. Suppression du bruit avec un filtre passe-bande&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Extraction de la bande de fréquence cardiaque humaine (ex: 0.7Hz à 2.5Hz = 42 à 150 bpm)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">30.0&lt;/span> &lt;span class="c1"># Fréquence d&amp;#39;images hypothétique&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">nyquist&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.5&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">fps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.7&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">nyquist&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">2.5&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">nyquist&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">b&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">butter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">low&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">high&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">btype&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;bandpass&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filtered_signal&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">filtfilt&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">green_signals&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">filtered_signal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Le spectre fréquentiel du filtered_signal extrait est analysé,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># en l&amp;#39;absence de pic clair (battement cardiaque), la probabilité de deepfake est jugée élevée.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h1 id="4-le-jeu-du-chat-et-de-la-souris-sans-fin--apprentissage-antagoniste-et-techniques-dévasion">4. Le jeu du chat et de la souris sans fin : Apprentissage antagoniste et techniques d&amp;rsquo;évasion
&lt;/h1>&lt;p>Comme présenté jusqu&amp;rsquo;ici, il existe des technologies de criminalistique avancées telles que l&amp;rsquo;analyse fréquentielle et les signaux biométriques (rPPG). Cependant, dans le monde de l&amp;rsquo;IA, il n&amp;rsquo;existe pas de &amp;ldquo;barrière absolue&amp;rdquo;. Dès qu&amp;rsquo;une technologie de détection est publiée dans un article de recherche, les attaquants (créateurs de deepfakes) améliorent immédiatement leurs modèles génératifs pour contourner ce détecteur.&lt;/p>
&lt;p>Par exemple, supposons qu&amp;rsquo;un détecteur identifie un deepfake en repérant une &amp;ldquo;anomalie dans le domaine fréquentiel&amp;rdquo;. L&amp;rsquo;attaquant va alors &lt;strong>intégrer ce détecteur même comme nouveau &amp;ldquo;Discriminateur (Discriminator)&amp;rdquo; d&amp;rsquo;un GAN&lt;/strong>, et réentraîner le Générateur (Generator). Le générateur va ainsi évoluer pour produire &amp;ldquo;des images indiscernables des images naturelles, même dans le domaine fréquentiel&amp;rdquo;.&lt;/p>
&lt;p>De plus, des études ont déjà rapporté des tentatives de tromper les systèmes de détection basés sur la rPPG (Anti-Forensics) en ajoutant intentionnellement de &amp;ldquo;minuscules fluctuations de couleur (faux signaux cardiaques)&amp;rdquo; en post-traitement à la vidéo.&lt;/p>
&lt;p>La détection et la génération se livrent un jeu du chat et de la souris (Cat-and-Mouse Game) sans fin, tel &amp;ldquo;le bouclier et la lance&amp;rdquo;. C&amp;rsquo;est pourquoi on souligne que l&amp;rsquo;approche consistant à juger de l&amp;rsquo;authenticité a posteriori en analysant uniquement les données produites (images ou vidéos) (détection passive) atteindra tôt ou tard ses limites.&lt;/p>
&lt;hr>
&lt;h1 id="5-la-solution-fondamentale--preuve-de-provenance-et-le-cadre-de-la-c2pa">5. La solution fondamentale : Preuve de provenance et le cadre de la C2PA
&lt;/h1>&lt;p>Face aux limites de la détection a posteriori, une approche de défense active garantissant cryptographiquement la &amp;ldquo;provenance (Provenance)&amp;rdquo; des données est actuellement promue rapidement à travers le monde. Le cadre de normalisation mondiale à cet effet est la &lt;strong>C2PA (Coalition for Content Provenance and Authenticity)&lt;/strong>.&lt;/p>
&lt;p>La C2PA est un consortium fondé avec la participation d&amp;rsquo;entreprises majeures telles qu&amp;rsquo;Adobe, Microsoft, Intel, la BBC et Sony. Elle élabore des spécifications techniques pour intégrer l&amp;rsquo;historique du contenu numérique (qui a filmé, quand, avec quelle caméra, et quelles modifications ont été apportées) directement dans le contenu, d&amp;rsquo;une manière impossible à falsifier.&lt;/p>
&lt;h2 id="51-le-fonctionnement-de-la-c2pa">5.1 Le fonctionnement de la C2PA
&lt;/h2>&lt;p>La technologie centrale de la C2PA repose sur des signatures numériques utilisant une infrastructure à clé publique (PKI) et sur la liaison (binding) de hachages de contenu.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Génération de métadonnées (Manifest)&lt;/strong> : Au moment où une photo est prise par un appareil, ou lorsqu&amp;rsquo;elle est modifiée par un logiciel, des métadonnées appelées &amp;ldquo;Manifeste (Manifest)&amp;rdquo; sont générées, contenant l&amp;rsquo;historique des opérations, les informations sur l&amp;rsquo;appareil et l&amp;rsquo;auteur.&lt;/li>
&lt;li>&lt;strong>Signature cryptographique (Digital Signature)&lt;/strong> : Le manifeste, ainsi que la valeur de hachage de l&amp;rsquo;image elle-même (résumé des données de pixels), se voient appliquer une signature numérique à l&amp;rsquo;aide des clés privées du matériel ou du logiciel.&lt;/li>
&lt;li>&lt;strong>Intégration à l&amp;rsquo;actif (Asset)&lt;/strong> : Le manifeste signé (C2PA Credential) est intégré dans les informations d&amp;rsquo;en-tête de formats de fichiers tels que JPEG ou MP4.&lt;/li>
&lt;/ol>
&lt;p>Si un attaquant tente de falsifier une partie de l&amp;rsquo;image ou d&amp;rsquo;ajouter de fausses métadonnées à une image générée par l&amp;rsquo;IA, la valeur de hachage de l&amp;rsquo;image elle-même change, la vérification de la signature numérique échoue, et la falsification est immédiatement découverte.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
C[&amp;#34;Créateur / Caméra (Creator/Camera)&amp;#34;] --&amp;gt; M[&amp;#34;Génération du manifeste (Manifest Generation)&amp;#34;]
M --&amp;gt; S[&amp;#34;Signature et liaison (Cryptographic Signature)&amp;#34;]
S --&amp;gt; A[&amp;#34;Actif avec manifeste C2PA (Asset with C2PA Manifest)&amp;#34;]
A --&amp;gt; P[&amp;#34;Plateforme de réseau social (Social Media Platform)&amp;#34;]
P --&amp;gt; V[&amp;#34;Processus de validation (Validation Process)&amp;#34;]
V --&amp;gt; U[&amp;#34;Affichage sur l&amp;#39;interface utilisateur (Content Credentials UI)&amp;#34;]
&lt;/pre>
&lt;h2 id="52-visualisation-avec-licône-content-credentials">5.2 Visualisation avec l&amp;rsquo;icône &amp;ldquo;Content Credentials&amp;rdquo;
&lt;/h2>&lt;p>Dans les systèmes conformes à la norme C2PA, lorsqu&amp;rsquo;un utilisateur voit une image sur les réseaux sociaux ou des sites d&amp;rsquo;information, une icône &amp;ldquo;CR (Content Credentials)&amp;rdquo; s&amp;rsquo;affiche dans le coin de l&amp;rsquo;image. En cliquant dessus, chacun peut vérifier en toute transparence l&amp;rsquo;historique de l&amp;rsquo;image : si elle a été &amp;ldquo;générée par l&amp;rsquo;IA&amp;rdquo;, &amp;ldquo;prise avec un véritable appareil photo&amp;rdquo;, ou encore si ses &amp;ldquo;couleurs ont été corrigées avec Photoshop&amp;rdquo;.&lt;/p>
&lt;p>Actuellement, les principaux fournisseurs d&amp;rsquo;IA tels qu&amp;rsquo;OpenAI (DALL-E 3) et Google ont également commencé à ajouter les métadonnées C2PA aux images générées, et les fabricants d&amp;rsquo;appareils photo comme Leica et Sony procèdent à l&amp;rsquo;intégration de fonctions de signature C2PA au niveau matériel. Le paradigme sociétal est en train de passer de &amp;ldquo;détecter les faux&amp;rdquo; à &amp;ldquo;prouver l&amp;rsquo;authenticité (Approche Zero-Trust)&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h1 id="6-la-littératie-de-linformation-de-nouvelle-génération--ce-que-nous-pouvons-faire">6. La littératie de l&amp;rsquo;information de nouvelle génération : Ce que nous pouvons faire
&lt;/h1>&lt;p>Les mesures techniques (détecteurs de deepfakes et preuves de provenance comme la C2PA) ne sont finalement que des infrastructures destinées à protéger la société. En fin de compte, c&amp;rsquo;est notre cerveau humain qui décide de consommer et de diffuser, ou non, l&amp;rsquo;information.&lt;/p>
&lt;p>La &amp;ldquo;littératie de l&amp;rsquo;information&amp;rdquo; de nouvelle génération à l&amp;rsquo;ère de l&amp;rsquo;IA consiste à adopter les attitudes suivantes :&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Éviter la diffusion par réflexe (Stop and Think)&lt;/strong>
Face à des images choquantes ou à des contenus incitant à la colère (informations jouant sur les émotions), il faut s&amp;rsquo;arrêter un instant et retenir son envie de reposter ou de partager. L&amp;rsquo;objectif principal des créateurs de deepfakes est de pirater les émotions humaines pour faire propager l&amp;rsquo;information.&lt;/li>
&lt;li>&lt;strong>Vérifier la &amp;ldquo;source&amp;rdquo; de l&amp;rsquo;information (Verify the Source)&lt;/strong>
L&amp;rsquo;information provient-elle d&amp;rsquo;un média d&amp;rsquo;information fiable ? Dispose-t-elle d&amp;rsquo;une preuve de provenance comme la C2PA (Content Credentials) ? Il est essentiel de prendre l&amp;rsquo;habitude de croiser les sources d&amp;rsquo;information.&lt;/li>
&lt;li>&lt;strong>Un scepticisme sain partant du principe que &amp;ldquo;tout pourrait être faux&amp;rdquo; (Healthy Skepticism)&lt;/strong>
Sans tomber dans le pessimisme, il faut abandonner la vieille certitude que &amp;ldquo;vidéo = fait&amp;rdquo;. Nous devons consommer l&amp;rsquo;information en gardant à l&amp;rsquo;esprit que nous vivons à une époque où le son, la vidéo et le texte peuvent tous être facilement falsifiés.&lt;/li>
&lt;/ol>
&lt;h1 id="conclusion">Conclusion
&lt;/h1>&lt;p>L&amp;rsquo;évolution de la technologie de l&amp;rsquo;IA a ouvert la boîte de Pandore. Il est désormais impossible d&amp;rsquo;effacer la technologie même qui permet de créer des deepfakes.&lt;/p>
&lt;p>Cependant, comme expliqué dans cet article, les ingénieurs affrontent la menace des fake news avec diverses approches telles que l&amp;rsquo;analyse fréquentielle, la détection des signaux biométriques et la preuve de provenance utilisant la cryptographie (C2PA). En combinant ces boucliers techniques (mesures défensives) avec le bouclier social qu&amp;rsquo;est la &amp;ldquo;littératie de l&amp;rsquo;information&amp;rdquo; de chacun d&amp;rsquo;entre nous, nous devrions être capables de naviguer sur la vague de fiction apportée par l&amp;rsquo;IA et de préserver la valeur de la vérité.&lt;/p>
&lt;p>C&amp;rsquo;est précisément parce que nous vivons à une époque où la frontière entre réalité et fiction s&amp;rsquo;estompe que la &amp;ldquo;volonté&amp;rdquo; humaine de discerner la vérité est plus importante que jamais.&lt;/p></description></item><item><title>État actuel et défis de l'enseignement de l'informatique au Japon : Les conséquences de la programmation obligatoire</title><link>http://kenji.blog/fr/p/japan-it-education-aftermath/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/fr/p/japan-it-education-aftermath/</guid><description>&lt;img src="http://kenji.blog/p/japan-it-education-aftermath/img/eyecatch.jpg" alt="Featured image of post État actuel et défis de l'enseignement de l'informatique au Japon : Les conséquences de la programmation obligatoire" />&lt;h2 id="1-introduction--la-lumière-et-lombre-de-la-programmation-obligatoire">1. Introduction : La lumière et l&amp;rsquo;ombre de la programmation obligatoire
&lt;/h2>&lt;p>L&amp;rsquo;enseignement de l&amp;rsquo;informatique au Japon a connu un changement de paradigme sans précédent ces dernières années, avec la programmation devenue obligatoire dans les écoles primaires en 2020, étendue dans les cours de technologie des collèges en 2021, et la nouvelle matière obligatoire « Information I » dans les lycées en 2022. À la base de cette série de politiques se trouve une demande nationale et pressante : cultiver la pensée logique (pensée algorithmique) pour survivre à l&amp;rsquo;ère de la Society 5.0 (société super-intelligente) et résoudre la pénurie chronique de ressources humaines informatiques hautement qualifiées dans l&amp;rsquo;industrie.&lt;/p>
&lt;p>Cependant, en regardant la ligne de front de l&amp;rsquo;enseignement, un fossé énorme apparaît entre l&amp;rsquo;idéal imaginé par le gouvernement et la réalité. Le problème le plus grave est la confusion totale entre « apprendre la programmation comme moyen » et « maîtriser l&amp;rsquo;informatique (Computer Science) comme discipline universitaire ». De plus, des problèmes structurels s&amp;rsquo;accumulent et doivent être résolus, tels que les limites techniques dues aux contraintes matérielles de l&amp;rsquo;infrastructure informatique déployée simultanément à l&amp;rsquo;échelle nationale, et le manque de compétences professionnelles des enseignants.&lt;/p>
&lt;p>Cet article résume les conséquences de la programmation obligatoire au Japon et détaille de manière approfondie et technique les problèmes structurels et fondamentaux actuels de l&amp;rsquo;enseignement de l&amp;rsquo;informatique, du point de vue de la théorie de l&amp;rsquo;informatique, des contraintes d&amp;rsquo;architecture matérielle et de la compétitivité industrielle mondiale. Ce n&amp;rsquo;est pas seulement une théorie éducative, mais une réflexion de 10 000 mots sur l&amp;rsquo;avenir du Japon du point de vue du génie logiciel.&lt;/p>
&lt;h2 id="2-le-piège-de-la-programmation-visuelle--le-fossé-profond-entre-scratch-et-le-codage-textuel">2. Le piège de la programmation visuelle : Le fossé profond entre Scratch et le codage textuel
&lt;/h2>&lt;p>Le standard de facto de l&amp;rsquo;enseignement de la programmation à l&amp;rsquo;école primaire est le langage de programmation visuelle (programmation par blocs), représenté par « Scratch » développé par le MIT Media Lab. L&amp;rsquo;utilisation d&amp;rsquo;une interface graphique intuitive pour assembler des blocs comme un puzzle permet d&amp;rsquo;apprendre de manière visuelle et intuitive les trois structures de contrôle algorithmiques de base : « séquence », « sélection » et « itération ». C&amp;rsquo;est une grande invention qui mérite d&amp;rsquo;être saluée comme une introduction à la programmation.&lt;/p>
&lt;p>Cependant, il y a un piège majeur ici, que l&amp;rsquo;on pourrait appeler le « piège de l&amp;rsquo;abstraction ». Il s&amp;rsquo;agit du fait cruel qu&amp;rsquo;« il est extrêmement difficile de passer de la programmation visuelle à de vrais langages de programmation textuels (Python, JavaScript, C++, Rust, etc.), et que de nombreux apprenants abandonnent à ce stade ».&lt;/p>
&lt;h3 id="le-mur-de-labstraction-et-la-boîte-noire-de-linformatique">Le mur de l&amp;rsquo;abstraction et la boîte noire de l&amp;rsquo;informatique
&lt;/h3>&lt;p>Les environnements de programmation visuelle comme Scratch abstraient et cachent (encapsulent) intentionnellement des éléments importants qui constituent le fondement de l&amp;rsquo;informatique, tels que la syntaxe complexe de la programmation, les systèmes de typage stricts et la gestion du cycle de vie de la mémoire. C&amp;rsquo;est excellent pour réduire la charge cognitive des débutants, mais cela devient un énorme obstacle pour passer à la véritable ingénierie à l&amp;rsquo;étape suivante. Dans le développement de logiciels réel, la compréhension de la portée des variables (variables locales et globales), des structures de données complexes (tableaux, listes chaînées, tables de hachage, arbres binaires de recherche, graphes), des pointeurs et des zones mémoire de tas et de pile est absolument indispensable.&lt;/p>
&lt;p>Le diagramme Mermaid ci-dessous visualise les obstacles d&amp;rsquo;apprentissage et les points d&amp;rsquo;abandon (décrochage) auxquels les débutants sont confrontés lors de la transition de la programmation visuelle vers l&amp;rsquo;informatique fondamentale.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;École primaire : Scratch (Visuel / par blocs)&amp;#34;] --&amp;gt; B{&amp;#34;Collège : Le mur du passage aux langages textuels&amp;#34;}
B --&amp;gt;|&amp;#34;Abandon dû à des erreurs de syntaxe strictes&amp;#34;| C[&amp;#34;Décrochage (Allergie à la syntaxe)&amp;#34;]
B --&amp;gt;|&amp;#34;Manque de compréhension des variables et du typage statique&amp;#34;| D[&amp;#34;Décrochage (Le mur des types)&amp;#34;]
B --&amp;gt;|&amp;#34;Transition réussie&amp;#34;| E[&amp;#34;Lycée : Information I (Bases de Python/JavaScript, etc.)&amp;#34;]
E --&amp;gt; F{&amp;#34;Le mur de la conception d&amp;#39;algorithmes et des structures de données&amp;#34;}
F --&amp;gt;|&amp;#34;Ignorance de la complexité temporelle et spatiale&amp;#34;| G[&amp;#34;Code inefficace (Dégradation des performances par création massive de O(N^2))&amp;#34;]
F --&amp;gt;|&amp;#34;Boîte noire de la gestion de la mémoire et des références&amp;#34;| H[&amp;#34;Devenir un simple codeur se limitant aux appels d&amp;#39;API superficiels&amp;#34;]
F --&amp;gt;|&amp;#34;Percée conceptuelle&amp;#34;| I[&amp;#34;Apprentissage approfondi de la CS (C/C++, Java, architecture bas niveau)&amp;#34;]
I --&amp;gt; J[&amp;#34;Professionnel de l&amp;#39;informatique de haut niveau ardemment désiré par l&amp;#39;industrie&amp;#34;]
classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px;
classDef error fill:#ffcccc,stroke:#cc0000,stroke-width:2px;
classDef success fill:#ccffcc,stroke:#00cc00,stroke-width:2px;
class C,D,G,H error;
class J success;
&lt;/pre>
&lt;p>Comme le montre clairement cet organigramme, le simple fait d&amp;rsquo;accumuler l&amp;rsquo;expérience d&amp;rsquo;écrire « du code pour déplacer un personnage à l&amp;rsquo;écran » ne permet pas de former de véritables ingénieurs logiciels capables de concevoir des architectures de systèmes distribués évolutives et d&amp;rsquo;optimiser les performances à la milliseconde près. Entre la tâche d&amp;rsquo;assembler des blocs colorés dans Scratch avec une souris et celle de décrypter le code source en C du noyau Linux pour suivre le comportement de la pile TCP/IP, il y a un gouffre de compréhension conceptuelle absolu qui ne peut se résumer à une simple « différence de langage utilisé ».&lt;/p>
&lt;h2 id="3-les-limites-du-codage-sans--mathématiques--et-sans--logique-discrète---lapproche-par-la-théorie-de-la-complexité">3. Les limites du codage sans « mathématiques » et sans « logique discrète » : L&amp;rsquo;approche par la théorie de la complexité
&lt;/h2>&lt;p>La plus grande faiblesse et le défaut fatal du programme d&amp;rsquo;enseignement de la programmation au Japon est le manque écrasant d&amp;rsquo;intégration entre les « compétences de codage » et les « mathématiques discrètes ». Dans l&amp;rsquo;enseignement de l&amp;rsquo;informatique de premier plan, comme aux États-Unis ou en Inde, l&amp;rsquo;accent est mis sur l&amp;rsquo;efficacité algorithmique, la logique mathématique et les preuves mathématiques plutôt que sur la syntaxe du langage de programmation elle-même. En effet, le code n&amp;rsquo;est qu&amp;rsquo;une traduction de formules mathématiques.&lt;/p>
&lt;h3 id="la-domination-absolue-de-la-complexité-temporelle-et-spatiale-notation-grand-o">La domination absolue de la complexité temporelle et spatiale (Notation Grand O)
&lt;/h3>&lt;p>Pour évaluer et concevoir les performances d&amp;rsquo;un logiciel, les concepts de complexité temporelle (Time Complexity) et de complexité spatiale (Space Complexity) sont incontournables. La notation asymptotique de Landau (Big O Notation) montre comment le temps d&amp;rsquo;exécution et la consommation de mémoire augmentent en fonction de la taille $N$ des données d&amp;rsquo;entrée d&amp;rsquo;un algorithme.&lt;/p>
&lt;p>La définition mathématique stricte de $f(x) = O(g(x))$ est la suivante :&lt;/p>
$$
\exists C > 0, \exists x_0 > 0, \forall x > x_0, |f(x)| \le C \cdot |g(x)|
$$&lt;p>Dans l&amp;rsquo;enseignement de l&amp;rsquo;informatique au Japon, lorsqu&amp;rsquo;on apprend par exemple le tri de données, il arrive souvent que l&amp;rsquo;on se contente d&amp;rsquo;appeler la méthode intégrée &lt;code>array.sort()&lt;/code> en Python. Cependant, ce qui est vraiment requis en ingénierie informatique, c&amp;rsquo;est de comprendre mathématiquement et de prouver pourquoi le tri à bulles simple n&amp;rsquo;est jamais utilisé en pratique, et pourquoi le tri rapide, le tri fusion ou le Timsort sont adoptés comme bibliothèques standard.&lt;/p>
&lt;p>Voici les complexités temporelles moyennes des algorithmes de tri représentatifs :&lt;/p>
&lt;ul>
&lt;li>Tri à bulles (Bubble Sort) : $O(N^2)$&lt;/li>
&lt;li>Tri par sélection (Selection Sort) : $O(N^2)$&lt;/li>
&lt;li>Tri par insertion (Insertion Sort) : $O(N^2)$&lt;/li>
&lt;li>Tri fusion (Merge Sort) : $O(N \log N)$&lt;/li>
&lt;li>Tri rapide (Quick Sort) : $O(N \log N)$&lt;/li>
&lt;li>Tri par tas (Heap Sort) : $O(N \log N)$&lt;/li>
&lt;/ul>
&lt;p>Par exemple, la complexité temporelle $T(N)$ du tri fusion est exprimée par la relation de récurrence suivante, basée sur le paradigme « diviser pour régner » :&lt;/p>
$$
T(N) = 2T\left(\frac{N}{2}\right) + O(N)
$$&lt;p>En résolvant cette équation de récurrence à l&amp;rsquo;aide du théorème maître (Master Theorem), on en déduit la complexité idéale $T(N) = O(N \log N)$ :&lt;/p>
$$
T(N) = \Theta(N \log_2 N)
$$&lt;p>Dans l&amp;rsquo;analyse de données massives moderne et le traitement du trafic à l&amp;rsquo;échelle du web, $N$ atteint l&amp;rsquo;ordre de centaines de millions ou de milliards. Si un programmeur ignorant implémente un algorithme inefficace en $O(N^2)$, un volume de données $N = 10^6$ nécessitera $10^{12}$ (mille milliards) d&amp;rsquo;opérations de comparaison inutiles, ce qui figera et plantera de facto le système. En revanche, un algorithme en $O(N \log N)$ s&amp;rsquo;achèvera en environ $2 \times 10^7$ (20 millions) d&amp;rsquo;opérations. Prétendre « savoir programmer » sans ces fondements mathématiques cruels revient à construire un gratte-ciel sans connaître la mécanique des structures ; c&amp;rsquo;est extrêmement dangereux.&lt;/p>
&lt;h2 id="4-la-boîte-noire-de-la-gestion-de-la-mémoire-et-de-larchitecture-des-systèmes">4. La boîte noire de la gestion de la mémoire et de l&amp;rsquo;architecture des systèmes
&lt;/h2>&lt;p>Un problème plus profond est l&amp;rsquo;absence totale de compréhension de la gestion de la mémoire et de l&amp;rsquo;architecture CPU. Les apprenants qui n&amp;rsquo;ont appris que des langages de haut niveau dotés de ramasse-miettes (GC), comme Python et JavaScript enseignés aujourd&amp;rsquo;hui dans les écoles, ne se soucieront jamais de l&amp;rsquo;endroit où les variables et les objets sont placés dans la mémoire physique (RAM) (tas ou pile), comment ils sont alloués, et quand ou comment ils sont libérés.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Exemple d&amp;#39;allocation de mémoire explicite et directe et de manipulation de pointeurs en langage C
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdio.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdlib.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1000000&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Allocation dynamique et continue de mémoire dans la zone du tas (Appel système à l&amp;#39;OS)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">array&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="nf">malloc&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">array&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nf">fprintf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">stderr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;Memory allocation failed! Out of memory.&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Initialisation du tableau via l&amp;#39;arithmétique des pointeurs
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">++&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">array&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Équivalent à array[i] = i * 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Libération explicite des ressources pour éviter les fuites de mémoire
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nf">free&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">array&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">array&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Prévention des pointeurs fantômes
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>La connaissance du concept de pointeurs (référence directe à une adresse mémoire), de la disposition des données pour maximiser le taux de réussite de la hiérarchie de la mémoire cache du CPU (caches L1/L2/L3), ainsi que des conditions de concurrence et du contrôle d&amp;rsquo;exclusion mutuelle (Mutex/Semaphore) dans des environnements multithreads est absolument indispensable pour développer des systèmes backend hautes performances, des moteurs de jeux 3D, ou des systèmes embarqués pour l&amp;rsquo;IoT. Le programme actuel du ministère de l&amp;rsquo;Éducation se limite à « faire fonctionner des applications de manière superficielle » et s&amp;rsquo;écarte considérablement de l&amp;rsquo;objectif académique originel de « comprendre les profondeurs de l&amp;rsquo;informatique ».&lt;/p>
&lt;h2 id="5-le-mur-des-bases-de-données-et-de-la-persistance--labsence-de-lalgèbre-relationnelle">5. Le mur des bases de données et de la persistance : L&amp;rsquo;absence de l&amp;rsquo;algèbre relationnelle
&lt;/h2>&lt;p>Dans les applications modernes, le stockage et la recherche de données (persistance) sont des thèmes inévitables. Cependant, une grande partie de l&amp;rsquo;enseignement scolaire se limite au « traitement des données en mémoire », qui disparaissent à la fin de l&amp;rsquo;exécution du programme. La théorie mathématique qui sous-tend les bases de données relationnelles (SGBDR) et SQL, à savoir l&amp;rsquo;« algèbre relationnelle » proposée par le Dr Edgar F. Codd, est rarement enseignée.&lt;/p>
&lt;p>Les opérations sur les bases de données sont définies par les opérations fondamentales de la théorie des ensembles :&lt;/p>
&lt;ul>
&lt;li>Sélection (Selection, $\sigma$) : Extraction des n-uplets (lignes) remplissant une condition&lt;/li>
&lt;li>Projection (Projection, $\pi$) : Extraction d&amp;rsquo;attributs (colonnes) spécifiques&lt;/li>
&lt;li>Jointure (Join, $\bowtie$) : Intersection conditionnelle de plusieurs relations&lt;/li>
&lt;/ul>
&lt;p>De plus, l&amp;rsquo;apprentissage de la structure de l&amp;rsquo;« index B-Tree », qui permet de rechercher instantanément les données cibles parmi un nombre massif d&amp;rsquo;enregistrements, constitue la meilleure application pratique des structures de données. Le B-Tree garantit une vitesse de recherche de $O(\log N)$ tout en minimisant le nombre d&amp;rsquo;E/S disque. Il est impossible de construire un système robuste sans connaître les propriétés ACID (Atomicity, Consistency, Isolation, Durability) des transactions.&lt;/p>
&lt;h2 id="6-sécurité-et-cryptographie--la-difficulté-de-la-factorisation-des-nombres-premiers-pilier-des-infrastructures-sociales">6. Sécurité et cryptographie : La difficulté de la factorisation des nombres premiers, pilier des infrastructures sociales
&lt;/h2>&lt;p>L&amp;rsquo;enseignement de l&amp;rsquo;informatique aborde une éducation superficielle à la sécurité, du type « Utilisons des mots de passe complexes » ou « Ne cliquons pas sur des liens suspects », mais n&amp;rsquo;enseigne presque jamais les mathématiques de la « cryptographie » qui soutient fondamentalement la société d&amp;rsquo;Internet.&lt;/p>
&lt;p>Les communications HTTPS et les signatures numériques que nous utilisons quotidiennement sont protégées par la cryptographie à clé publique, comme le chiffrement RSA. La sécurité du chiffrement RSA repose sur la difficulté mathématique (considérée comme un problème NP-intermédiaire) qu&amp;rsquo;« il est impossible pour un ordinateur classique actuel de factoriser d&amp;rsquo;énormes nombres entiers en nombres premiers dans un délai raisonnable ».&lt;/p>
&lt;p>Les formules mathématiques à la base du chiffrement RSA sont une belle application de la fonction indicatrice d&amp;rsquo;Euler et du petit théorème de Fermat.&lt;/p>
&lt;ol>
&lt;li>Choisir deux grands nombres premiers $p$ et $q$.&lt;/li>
&lt;li>Calculer $n = p \times q$ (cela fait partie de la clé publique).&lt;/li>
&lt;li>Calculer $\phi(n) = (p-1)(q-1)$.&lt;/li>
&lt;li>Choisir $e$ et $d$ tels que $e \times d \equiv 1 \pmod{\phi(n)}$.&lt;/li>
&lt;li>Chiffrement : $C \equiv M^e \pmod{n}$&lt;/li>
&lt;li>Déchiffrement : $M \equiv C^d \pmod{n}$&lt;/li>
&lt;/ol>
&lt;p>Ainsi, l&amp;rsquo;enseignement de la programmation ne révèle sa véritable puissance que lorsqu&amp;rsquo;il est étroitement lié à l&amp;rsquo;enseignement des mathématiques. Le processus de traduction des formules mathématiques en code et de leur implémentation sociale est l&amp;rsquo;essence même de la science.&lt;/p>
&lt;h2 id="7-le-concept-giga-school-et-les-limites-désespérantes-des-infrastructures--chromebook-et-ide-cloud">7. Le concept GIGA School et les limites désespérantes des infrastructures : Chromebook et IDE cloud
&lt;/h2>&lt;p>Pour évoquer l&amp;rsquo;enseignement de l&amp;rsquo;informatique au Japon, il est impossible d&amp;rsquo;ignorer le « Concept GIGA School », un projet national impulsé par le ministère de l&amp;rsquo;Éducation avec un budget colossal. Ce projet, qui dote chaque élève d&amp;rsquo;école primaire et de collège à travers le pays d&amp;rsquo;« un terminal par personne » et d&amp;rsquo;un environnement réseau à haut débit, était censé servir de catalyseur pour rattraper le retard numérique. Cependant, les spécifications matérielles et l&amp;rsquo;architecture des terminaux distribués constituent un frein majeur à un véritable enseignement de la programmation.&lt;/p>
&lt;h3 id="terminaux-bas-de-gamme-et-perte-de-lenvironnement-de-développement-local">Terminaux bas de gamme et perte de l&amp;rsquo;environnement de développement local
&lt;/h3>&lt;p>La plupart des terminaux déployés comme normes du concept GIGA School sont des Chromebooks, des iPads ou des appareils Windows d&amp;rsquo;entrée de gamme extrêmement bon marché. Leurs spécifications typiques sont les suivantes :&lt;/p>
&lt;ul>
&lt;li>CPU : Intel Celeron ou processeurs ARM d&amp;rsquo;entrée de gamme&lt;/li>
&lt;li>Mémoire (RAM) : 4 Go (À peine suffisant pour faire tourner un OS moderne)&lt;/li>
&lt;li>Stockage (eMMC) : 32 Go à 64 Go (Vitesse d&amp;rsquo;E/S extrêmement lente)&lt;/li>
&lt;/ul>
&lt;p>Avec ces contraintes matérielles dérisoires, il est pratiquement impossible de mettre en place un « environnement de développement local » comme le font quotidiennement les ingénieurs professionnels. Lancer des conteneurs Linux avec Docker, exécuter un IDE lourd comme Visual Studio Code avec toutes ses fonctionnalités, ou démarrer un serveur local Node.js ou Python et installer de lourdes bibliothèques provoque instantanément un épuisement de la mémoire et un gel du système.&lt;/p>
&lt;p>En conséquence, les établissements scolaires se retrouvent acculés à dépendre entièrement des IDE cloud qui fonctionnent dans le navigateur (Google Colaboratory, Replit, ou des outils Web légers propriétaires des éditeurs de manuels).&lt;/p>
&lt;pre class="mermaid">
flowchart LR
subgraph &amp;#34;Terminaux GIGA (Chromebook / iPad / Windows bas de gamme)&amp;#34;
A[&amp;#34;Navigateur Web (Rendu de l&amp;#39;UI uniquement)&amp;#34;]
end
subgraph &amp;#34;Infrastructure cloud distante (AWS / GCP, etc.)&amp;#34;
B[&amp;#34;Serveur Web de l&amp;#39;IDE Cloud&amp;#34;]
C[&amp;#34;Environnement de compilation/exécution backend&amp;#34;]
D[&amp;#34;Stockage de fichiers persistant&amp;#34;]
end
A --&amp;gt;|&amp;#34;HTTP/WebSocket通信: 学校の細い回線による深刻な遅延&amp;#34;| B
B &amp;lt;--&amp;gt; C
B &amp;lt;--&amp;gt; D
&lt;/pre>
&lt;p>La dépendance totale aux IDE cloud entraîne les graves lacunes pédagogiques suivantes :&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Incompréhension du système de fichiers et de l&amp;rsquo;architecture de l&amp;rsquo;OS&lt;/strong> : Sans environnement local, les connaissances indispensables qu&amp;rsquo;un ingénieur informatique devrait manier comme sa propre respiration, telles que la structure des répertoires, les concepts de chemins absolus et relatifs, la configuration des variables d&amp;rsquo;environnement, les permissions de fichiers et les opérations de l&amp;rsquo;OS en CLI (Command Line Interface), ne sont jamais acquises.&lt;/li>
&lt;li>&lt;strong>Latence réseau et vulnérabilité de l&amp;rsquo;infrastructure&lt;/strong> : Comme une connexion permanente est requise, dès que tous les élèves de l&amp;rsquo;école se connectent simultanément, la bande passante du réseau de l&amp;rsquo;école sature, les navigateurs gèlent et l&amp;rsquo;apprentissage s&amp;rsquo;arrête complètement, un incident qui se produit fréquemment dans tout le pays.&lt;/li>
&lt;li>&lt;strong>Privation de l&amp;rsquo;expérience du contrôle de version (Git)&lt;/strong> : Les élèves sont privés de l&amp;rsquo;occasion d&amp;rsquo;assimiler, via un écran de terminal noir, les concepts de Git et de GitHub permettant de gérer l&amp;rsquo;historique des modifications du code source et de développer en collaboration avec des équipes du monde entier.&lt;/li>
&lt;/ol>
&lt;p>Lorsqu&amp;rsquo;un ingénieur logiciel professionnel développe, la manipulation dans le terminal (shell) est un fondement absolu. Taper des commandes comme &lt;code>ls&lt;/code>, &lt;code>cd&lt;/code>, &lt;code>grep&lt;/code>, &lt;code>chmod&lt;/code>, &lt;code>git rebase&lt;/code> et expérimenter l&amp;rsquo;interaction directe et ardue avec le noyau de l&amp;rsquo;OS local est absolument nécessaire pour former de véritables talents informatiques. Se contenter de jouer dans le bac à sable d&amp;rsquo;un Chromebook ne produira jamais des ingénieurs full-stack capables d&amp;rsquo;avoir une vue d&amp;rsquo;ensemble du système.&lt;/p>
&lt;h2 id="8-un-fossé-désespéré-avec-le-reste-du-monde--le-décalage-entre-les-exigences-de-lindustrie-et-lenseignement-scolaire">8. Un fossé désespéré avec le reste du monde : Le décalage entre les exigences de l&amp;rsquo;industrie et l&amp;rsquo;enseignement scolaire
&lt;/h2>&lt;p>Le dernier défi, et non des moindres, auquel l&amp;rsquo;enseignement de l&amp;rsquo;informatique au Japon est confronté, qui peut être qualifié de crise nationale, est le déclin écrasant de sa compétitivité dans un contexte mondial.&lt;/p>
&lt;h3 id="lenseignement-féroce-de-linformatique-à-létranger">L&amp;rsquo;enseignement féroce de l&amp;rsquo;informatique à l&amp;rsquo;étranger
&lt;/h3>&lt;p>Au Royaume-Uni (UK), une matière appelée « Computing » est obligatoire dès l&amp;rsquo;âge de 5 ans (Key Stage 1) depuis 2014. Leur programme ne se limite pas à une simple « expérience de programmation », mais aborde une informatique académique et systématique très poussée, allant de la conception logique d&amp;rsquo;algorithmes à la compréhension des circuits logiques via l&amp;rsquo;algèbre de Boole, la topologie des réseaux et l&amp;rsquo;architecture matérielle.&lt;/p>
&lt;p>Aux États-Unis, il existe un programme standard strict allant de la maternelle à la fin du lycée (K-12), défini par la CSTA (Computer Science Teachers Association). Dans le cours AP (Advanced Placement) Computer Science A, suivi par les lycéens, la programmation orientée objet en Java, le polymorphisme, le traitement récursif, l&amp;rsquo;implémentation de structures de données et l&amp;rsquo;évaluation de la complexité algorithmique sont exigés à un niveau élevé, équivalent à la première année d&amp;rsquo;université. Il n&amp;rsquo;est plus nécessaire de mentionner la sévérité de l&amp;rsquo;enseignement STEM en Inde ou en Chine, ni la profondeur de l&amp;rsquo;élite qui en émerge.&lt;/p>
&lt;h3 id="le-décalage-désespérant-entre-les-compétences-requises-et-les-compétences-enseignées">Le décalage désespérant entre les compétences requises et les compétences enseignées
&lt;/h3>&lt;p>Les exigences de l&amp;rsquo;industrie moderne, en particulier des méga-entreprises mondiales (comme les GAFAM), envers les nouveaux ingénieurs logiciels nouvellement diplômés se durcissent à une vitesse effrayante d&amp;rsquo;année en année. Une expertise vaste et approfondie est requise, allant de la construction d&amp;rsquo;infrastructures cloud natives (AWS, GCP, Kubernetes) à la conception de systèmes distribués à base de microservices, l&amp;rsquo;implémentation de pipelines de Machine Learning et des connaissances pointues en sécurité.&lt;/p>
&lt;p>Le graphique ci-dessous illustre conceptuellement le gouffre désespérant entre le niveau de compétences fourni par l&amp;rsquo;enseignement scolaire actuel au Japon et le niveau exigé par la ligne de front de l&amp;rsquo;industrie.&lt;/p>
&lt;pre class="mermaid">
xychart-beta
title Compétences enseignées à l&amp;#39;école au Japon vs Niveau requis par l&amp;#39;industrie
x-axis [&amp;#34;Langages visuels&amp;#34;, &amp;#34;Syntaxe de base/variables&amp;#34;, &amp;#34;Algorithmes/Complexité&amp;#34;, &amp;#34;OS/Réseaux&amp;#34;, &amp;#34;DB/Conception de systèmes&amp;#34;, &amp;#34;Cloud/Architecture distribuée&amp;#34;]
y-axis &amp;#34;Niveau d&amp;#39;atteinte / Exigence (%)&amp;#34; 0 --&amp;gt; 100
line &amp;#34;Niveau atteint dans l&amp;#39;enseignement scolaire actuel&amp;#34; [95, 60, 15, 5, 2, 0]
line &amp;#34;Niveau exigé par l&amp;#39;industrie et la tech&amp;#34; [0, 20, 85, 90, 95, 100]
&lt;/pre>
&lt;p>Pour combler ce fossé énorme (Death Valley), un changement de paradigme radical de l&amp;rsquo;enseignement scolaire et des investissements massifs sont nécessaires. Alors qu&amp;rsquo;il y a une pénurie nationale flagrante de professeurs spécialisés en « Information », le système actuel, où des professeurs de mathématiques, de sciences ou de technologie enseignent la programmation à temps partiel et sans formation suffisante, ne pourra jamais former des ingénieurs de premier plan capables de rivaliser au niveau mondial.&lt;/p>
&lt;h2 id="9-leffondrement-de-la-valeur-du--codage--à-lère-de-lia-llm">9. L&amp;rsquo;effondrement de la valeur du « codage » à l&amp;rsquo;ère de l&amp;rsquo;IA (LLM)
&lt;/h2>&lt;p>Ce qui complique encore la situation, c&amp;rsquo;est la prolifération explosive des grands modèles de langage (LLM) comme ChatGPT et des assistants de codage IA comme GitHub Copilot. À une époque où l&amp;rsquo;IA peut instantanément générer un code parfait à partir d&amp;rsquo;instructions en langage naturel et rédiger même les codes de test, la valeur marchande d&amp;rsquo;un simple « codeur (Coder) » qui ne fait que « connaître la syntaxe Python » ou « savoir appeler une API » s&amp;rsquo;effondre rapidement.&lt;/p>
&lt;p>À l&amp;rsquo;ère de l&amp;rsquo;IA, on n&amp;rsquo;attend pas d&amp;rsquo;un ingénieur humain qu&amp;rsquo;il ait de la mémoire pour la syntaxe des langages de programmation. Les compétences exigées sont les suivantes :&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Définition des exigences et modélisation du domaine&lt;/strong> : La capacité d&amp;rsquo;extraire des problèmes complexes du monde réel à résoudre et de les modéliser en tant que système.&lt;/li>
&lt;li>&lt;strong>Conception d&amp;rsquo;architecture&lt;/strong> : La capacité de concevoir le plan d&amp;rsquo;ensemble d&amp;rsquo;un système pour garantir son évolutivité, sa disponibilité et sa maintenabilité.&lt;/li>
&lt;li>&lt;strong>Vérification mathématique et logique&lt;/strong> : La capacité de vérifier théoriquement et de prouver que le code généré par l&amp;rsquo;IA ne comporte pas de failles de sécurité ou de goulots d&amp;rsquo;étranglement de complexité.&lt;/li>
&lt;/ol>
&lt;p>Ironiquement, toutes ces compétences ne relèvent pas de la « programmation superficielle », mais des domaines profonds et abstraits de l&amp;rsquo;« informatique et des mathématiques ». Si l&amp;rsquo;éducation japonaise se contente d&amp;rsquo;enseigner des « compétences en aval facilement remplaçables par l&amp;rsquo;IA », on ne peut que qualifier cela de perte nationale.&lt;/p>
&lt;h2 id="10-vers-lintégration-des-sciences-mathématiques-et-de-la-programmation--une-proposition-pour-léducation-de-la-prochaine-génération">10. Vers l&amp;rsquo;intégration des sciences mathématiques et de la programmation : Une proposition pour l&amp;rsquo;éducation de la prochaine génération
&lt;/h2>&lt;p>Dans le futur de l&amp;rsquo;enseignement de l&amp;rsquo;informatique au Japon, il est urgent de s&amp;rsquo;éloigner de l&amp;rsquo;idée que « la programmation est un but ou un simple outil » et de revenir à « l&amp;rsquo;exploration de l&amp;rsquo;informatique en tant que science mathématique ». Les langages de programmation ne sont que des outils pour exprimer la pensée, et ce sont les structures mathématiques et logiques qui les sous-tendent qui ont une valeur universelle ne s&amp;rsquo;estompant pas avec le temps.&lt;/p>
&lt;p>Par exemple, le cœur de l&amp;rsquo;intelligence artificielle (IA) et du Machine Learning est étroitement lié à l&amp;rsquo;algèbre linéaire (calculs matriciels et tenseurs), au calcul différentiel et intégral à plusieurs variables (descente de gradient) et aux probabilités et statistiques (inférence bayésienne et théorie de l&amp;rsquo;information). L&amp;rsquo;optimisation des poids dans les réseaux de neurones du Deep Learning est formulée par la règle de dérivation en chaîne (Chain Rule) à l&amp;rsquo;aide de dérivées partielles et de la rétropropagation.&lt;/p>
$$
\frac{\partial L}{\partial w_{ij}^{(l)}} = \frac{\partial L}{\partial z_i^{(l+1)}} \cdot \frac{\partial z_i^{(l+1)}}{\partial w_{ij}^{(l)}} = \delta_i^{(l+1)} \cdot a_j^{(l)}
$$&lt;p>Ce sont les personnes capables de traduire ces équations mathématiques complexes en code et d&amp;rsquo;implémenter le calcul parallèle en l&amp;rsquo;optimisant à l&amp;rsquo;extrême tout en tenant compte de l&amp;rsquo;architecture matérielle des GPU (CUDA) et des TPU qui tireront l&amp;rsquo;industrie informatique de la prochaine génération. C&amp;rsquo;est pourquoi nous devons immédiatement cesser cet enseignement superficiel consistant à faire mémoriser par cœur une syntaxe de surface, et nous orienter vers un enseignement approfondi qui interroge les principes fondamentaux (First Principles) de l&amp;rsquo;informatique.&lt;/p>
&lt;h2 id="11-conclusion--le-chemin-escarpé-vers-une-véritable-nation-informatique-et-notre-détermination">11. Conclusion : Le chemin escarpé vers une véritable nation informatique et notre détermination
&lt;/h2>&lt;p>L&amp;rsquo;obligation d&amp;rsquo;enseigner la programmation dans les années 2020 a indéniablement constitué un pas en avant en faisant prendre conscience à la société japonaise de « l&amp;rsquo;importance de l&amp;rsquo;informatique et de l&amp;rsquo;information ». Cependant, il ne s&amp;rsquo;agit là que de simples « échauffements » dans un long voyage.&lt;/p>
&lt;p>Aller au-delà du plaisir de faire bouger un chat dans Scratch pour enseigner l&amp;rsquo;émotion ressentie devant la beauté mathématique d&amp;rsquo;un algorithme en $O(N \log N)$ et l&amp;rsquo;excitation de dialoguer avec des serveurs du monde entier via des paquets TCP depuis un écran noir de terminal. Reconstruire une nouvelle infrastructure éducative pour surmonter les contraintes matérielles du concept GIGA School, former et affecter des enseignants ayant une haute expertise en informatique, et parfois impliquer de manière audacieuse des ingénieurs professionnels externes dans l&amp;rsquo;enseignement scolaire.&lt;/p>
&lt;p>Les défis auxquels l&amp;rsquo;enseignement de l&amp;rsquo;informatique au Japon est confronté sont extrêmement profonds, tenaces et complexes. Cependant, en ne détournant pas les yeux de ces défis, et en travaillant sérieusement et en collaboration entre l&amp;rsquo;industrie, le monde universitaire et le gouvernement, si nous parvenons à construire un écosystème capable de produire en continu non pas des « travailleurs capables de coder selon un cahier des charges », mais de « véritables ingénieurs capables de concevoir et de créer des systèmes à partir de zéro », alors le Japon pourra à nouveau mener le monde en tant que véritable nation informatique.&lt;/p>
&lt;p>Comment traverser la phase de « l&amp;rsquo;après » programmation obligatoire, qui est la plus difficile et la plus importante ? C&amp;rsquo;est le moment même où notre sérieux et notre détermination d&amp;rsquo;adultes sont mis à l&amp;rsquo;épreuve.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Dans cet article, nous avons esquissé la théorie de la complexité et les limites d&amp;rsquo;infrastructure du concept GIGA School. Nous aborderons des sujets informatiques plus spécialisés (comme les algorithmes de systèmes distribués et les détails de la gestion de la mémoire de bas niveau) dans les prochains articles de cette série.&lt;/em>&lt;/p></description></item><item><title>L'aggravation de la 'nouvelle fracture numérique' causée par l'évolution de l'IA générative</title><link>http://kenji.blog/fr/p/generative-ai-digital-divide/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/fr/p/generative-ai-digital-divide/</guid><description>&lt;img src="http://kenji.blog/p/generative-ai-digital-divide/img/eyecatch.jpg" alt="Featured image of post L'aggravation de la 'nouvelle fracture numérique' causée par l'évolution de l'IA générative" />&lt;h2 id="1-introduction--lévolution-historique-de-la-fracture-numérique-et-le-nouveau-paradigme">1. Introduction : L&amp;rsquo;évolution historique de la fracture numérique et le nouveau paradigme
&lt;/h2>&lt;p>Depuis la démocratisation d&amp;rsquo;Internet, nous avons souvent entendu le terme de « fracture numérique » (digital divide). La fracture numérique initiale concernait principalement le « droit d&amp;rsquo;accès physique ». En d&amp;rsquo;autres termes, il s&amp;rsquo;agissait d&amp;rsquo;un schéma simple où la possession ou non d&amp;rsquo;un ordinateur et d&amp;rsquo;une connexion Internet à haut débit déterminait l&amp;rsquo;accès à l&amp;rsquo;information et aux opportunités économiques. Par la suite, avec la banalisation des smartphones et des connexions à haut débit, le cœur de cette fracture s&amp;rsquo;est déplacé vers la « littératie informatique » (la capacité à utiliser l&amp;rsquo;information). Il s&amp;rsquo;agissait d&amp;rsquo;aspects cognitifs et logiciels, tels que la capacité à rechercher correctement des informations à l&amp;rsquo;aide de moteurs de recherche ou à maîtriser des logiciels.&lt;/p>
&lt;p>Cependant, l&amp;rsquo;évolution de l&amp;rsquo;IA générative (Generative AI) et des grands modèles de langage (LLM : Large Language Models), qui a soudainement émergé dans les années 2020, est en train de bouleverser fondamentalement ce concept de fracture numérique. Ce à quoi nous sommes confrontés aujourd&amp;rsquo;hui n&amp;rsquo;est pas une simple « fracture de l&amp;rsquo;accès à l&amp;rsquo;information » ou une « fracture des compétences en matière d&amp;rsquo;utilisation des logiciels ». Il s&amp;rsquo;agit d&amp;rsquo;une « fracture dans la capacité à orchestrer (diriger et intégrer) l&amp;rsquo;IA », une « troisième fracture numérique » extrêmement grave et irréversible qui détermine si la productivité individuelle sera amplifiée de manière exponentielle, ou si l&amp;rsquo;individu sera laissé pour compte par l&amp;rsquo;évolution de l&amp;rsquo;IA et perdra sa valeur relative.&lt;/p>
&lt;p>Dans cet article, nous allons détailler la nature de cette nouvelle fracture numérique provoquée par l&amp;rsquo;IA générative, à travers trois niveaux extrêmement précis : un modèle mathématique de productivité, l&amp;rsquo;architecture et les coûts matériels, ainsi que les aspects cognitifs humains.&lt;/p>
&lt;h2 id="2-de-l-accès--à-l-orchestration---lavènement-de-la-3e-fracture-numérique">2. De l&amp;rsquo;« Accès » à l&amp;rsquo;« Orchestration » : L&amp;rsquo;avènement de la 3e fracture numérique
&lt;/h2>&lt;p>Les logiciels et outils du passé étaient par essence des « outils passifs ». La limite des logiciels traditionnels était de renvoyer un résultat déterministe en réponse à une saisie explicite de l&amp;rsquo;utilisateur (par exemple : saisir une formule dans un tableur pour obtenir un résultat de calcul). Cependant, l&amp;rsquo;IA générative actuelle, et plus particulièrement les LLM basés sur l&amp;rsquo;architecture Transformer (GPT-4, Claude 3.5, Llama 3, etc.), agit comme un « fragment d&amp;rsquo;intelligence active ».&lt;/p>
&lt;p>Ce changement de paradigme a considérablement modifié l&amp;rsquo;ensemble de compétences requis pour les humains, passant de la « capacité à manipuler des outils » à la « capacité à combiner plusieurs agents d&amp;rsquo;IA et outils pour concevoir et diriger des flux de travail autonomes (AI Orchestration) ». Nous pouvons appeler cela la « littératie de l&amp;rsquo;orchestration de l&amp;rsquo;IA ».&lt;/p>
&lt;p>Ci-dessous, l&amp;rsquo;évolution de la fracture numérique du passé jusqu&amp;rsquo;à aujourd&amp;rsquo;hui.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;1ère fracture : Accès au matériel et aux infrastructures (années 1990-2000)&amp;#34;] --&amp;gt; B[&amp;#34;2e fracture : Littératie informatique et capacité de recherche d&amp;#39;informations (années 2010)&amp;#34;]
B --&amp;gt; C[&amp;#34;3e fracture : Prompting et orchestration de l&amp;#39;IA générative (années 2020-)&amp;#34;]
C --&amp;gt; D[&amp;#34;Conception de l&amp;#39;exécution de tâches autonomes par l&amp;#39;IA&amp;#34;]
C --&amp;gt; E[&amp;#34;Intégration de plusieurs agents d&amp;#39;IA (Agentic Workflows)&amp;#34;]
C --&amp;gt; F[&amp;#34;Vérification avancée des informations et détection des hallucinations&amp;#34;]
&lt;/pre>
&lt;p>Au-delà de l&amp;rsquo;ingénierie des prompts, nous sommes désormais entrés dans une phase où les systèmes sont capables de résoudre des problèmes de manière autonome grâce à des frameworks multi-agents tels que LangChain, AutoGen et CrewAI. L&amp;rsquo;écart de productivité entre ceux qui « dessinent les plans et laissent l&amp;rsquo;IA exécuter » et ceux qui « continuent à accomplir les tâches de routine de leurs propres mains » se creuse à une vitesse que l&amp;rsquo;humanité n&amp;rsquo;a jamais connue.&lt;/p>
&lt;h2 id="3-leffet-matthieu-de-la-productivité--visualisation-de-lécart-par-une-approche-mathématique">3. L&amp;rsquo;effet Matthieu de la productivité : Visualisation de l&amp;rsquo;écart par une approche mathématique
&lt;/h2>&lt;p>L&amp;rsquo;« effet Matthieu » (Matthew Effect), tiré d&amp;rsquo;un verset du Nouveau Testament déclarant « à celui qui a, on donnera encore ; mais à celui qui n&amp;rsquo;a pas, on ôtera même ce qu&amp;rsquo;il a », désigne en sociologie et en économie le phénomène par lequel un avantage initial génère un profit cumulatif. Avec l&amp;rsquo;adoption de l&amp;rsquo;IA générative, cet effet Matthieu se manifeste de manière flagrante sur le marché du travail et dans la production intellectuelle.&lt;/p>
&lt;p>La productivité d&amp;rsquo;un individu utilisant efficacement l&amp;rsquo;IA croît de manière non pas linéaire, mais exponentielle par rapport au temps. En effet, le temps économisé par l&amp;rsquo;IA peut être réinvesti dans la création de systèmes d&amp;rsquo;IA encore plus avancés, l&amp;rsquo;optimisation des prompts et l&amp;rsquo;auto-apprentissage. Représentons cela avec un modèle mathématique.&lt;/p>
&lt;p>La productivité d&amp;rsquo;un utilisateur sans IA $P_{human}(t)$ et celle d&amp;rsquo;un orchestrateur d&amp;rsquo;IA $P_{AI}(t)$ à un instant $t$ peuvent être modélisées respectivement comme suit :&lt;/p>
$$
P_{human}(t) = P_0 (1 + r_{human})^t
$$&lt;p>
Ici, $P_0$ est la productivité initiale, et $r_{human}$ est le taux d&amp;rsquo;apprentissage naturel de l&amp;rsquo;être humain (taux de croissance basé sur la courbe d&amp;rsquo;expérience). En général, $r_{human}$ est très faible, et la croissance a tendance à être arithmétique.&lt;/p>
&lt;p>D&amp;rsquo;autre part, la productivité d&amp;rsquo;un utilisateur exploitant pleinement l&amp;rsquo;IA combine le taux d&amp;rsquo;amélioration des capacités du modèle d&amp;rsquo;IA utilisé $r_{model}$ et l&amp;rsquo;effet des intérêts composés de l&amp;rsquo;automatisation du flux de travail par l&amp;rsquo;IA $\alpha$.&lt;/p>
$$
P_{AI}(t) = P_0 \cdot \exp\left( \int_0^t (r_{human} + \alpha \cdot r_{model}(\tau)) d\tau \right)
$$&lt;p>Étant donné que le modèle d&amp;rsquo;IA lui-même évolue de manière exponentielle (augmentation du nombre de paramètres et de la quantité de calcul basée sur les lois d&amp;rsquo;échelle), $r_{model}(t)$ lui-même augmente avec le temps. En conséquence, la différence de productivité entre les deux $\Delta P(t)$ se creuse rapidement.&lt;/p>
$$
\Delta P(t) = P_{AI}(t) - P_{human}(t)
$$&lt;p>Le graphique suivant illustre visuellement cette divergence.&lt;/p>
&lt;pre class="mermaid">
xychart-beta
title Divergence de productivité au fil du temps (L&amp;#39;effet Matthieu)
x-axis [&amp;#34;Année 1&amp;#34;, &amp;#34;Année 2&amp;#34;, &amp;#34;Année 3&amp;#34;, &amp;#34;Année 4&amp;#34;, &amp;#34;Année 5&amp;#34;, &amp;#34;Année 6&amp;#34;]
y-axis &amp;#34;Volume de production&amp;#34; 0 --&amp;gt; 200
line [10, 15, 30, 60, 110, 180]
line [10, 12, 14, 16, 18, 20]
&lt;/pre>
&lt;p>&lt;em>(Note : la ligne bleue représente la productivité de l&amp;rsquo;orchestrateur d&amp;rsquo;IA, et la ligne du bas représente la productivité de l&amp;rsquo;utilisateur sans IA)&lt;/em>&lt;/p>
&lt;p>La différence semble minime au cours de la première année, mais à mesure que le modèle d&amp;rsquo;IA évolue de GPT-3 à GPT-4, puis à la génération suivante, l&amp;rsquo;utilisateur de l&amp;rsquo;IA bénéficie d&amp;rsquo;une amélioration spectaculaire de sa productivité en branchant simplement le nouveau modèle sur son pipeline d&amp;rsquo;automatisation existant. Il deviendra mathématiquement impossible pour les utilisateurs sans IA de combler cet écart au fil du temps.&lt;/p>
&lt;h2 id="4-la-fracture-matérielle--le-mur-de-linférence-locale-et-le-piège-de-lapi-cloud">4. La fracture matérielle : Le mur de l&amp;rsquo;inférence locale et le piège de l&amp;rsquo;API cloud
&lt;/h2>&lt;p>La 3e fracture numérique ne concerne pas seulement les compétences logicielles, elle engendre également une nouvelle fracture matérielle : « l&amp;rsquo;accès au calcul (ressources informatiques) » pour faire fonctionner des modèles d&amp;rsquo;IA de pointe.&lt;/p>
&lt;p>Il existe principalement deux approches pour utiliser les grands modèles de langage : « utiliser l&amp;rsquo;API cloud » ou « faire l&amp;rsquo;inférence (Inference) du modèle localement ». Les deux présentent des avantages et des inconvénients, ce qui constitue une nouvelle barrière économique et physique.&lt;/p>
&lt;h3 id="les-limites-et-les-coûts-de-fonctionnement-des-api-cloud">Les limites et les coûts de fonctionnement des API cloud
&lt;/h3>&lt;p>Il est courant d&amp;rsquo;accéder via une API aux modèles frontières de pointe (tels que GPT-4o, Claude 3.5 Sonnet, etc.) proposés par OpenAI, Anthropic et Google. Cependant, si l&amp;rsquo;on construit un agent autonome avancé (Agentic Workflow) générant des dizaines de milliers d&amp;rsquo;appels API par jour, les coûts augmentent de manière explosive.&lt;/p>
&lt;p>Le coût total du cloud $C_{cloud}$ dépend de la quantité de tokens d&amp;rsquo;entrée et de sortie.&lt;/p>
$$
C_{cloud} = \sum_{i=1}^{N} \left( c_{in} \cdot T_{in}^{(i)} + c_{out} \cdot T_{out}^{(i)} \right)
$$&lt;p>
(Où $N$ est le nombre de requêtes, $T$ est le nombre de tokens, $c$ est le prix unitaire du token)&lt;/p>
&lt;p>Lorsqu&amp;rsquo;il s&amp;rsquo;agit d&amp;rsquo;effectuer en continu des traitements de données à grande échelle ou la vectorisation de RAG (Retrieval-Augmented Generation), ce coût variable peut devenir un fardeau fatal pour les développeurs indépendants ou les petites et moyennes entreprises.&lt;/p>
&lt;h3 id="les-llm-locaux-et-le-mur-de-la-vram">Les LLM locaux et le mur de la VRAM
&lt;/h3>&lt;p>Afin d&amp;rsquo;éviter les coûts liés au cloud et pour des raisons de confidentialité des données, il existe une demande croissante pour faire tourner des modèles à poids ouverts (open weights) comme Llama 3 de Meta ou Mistral en local. Mais c&amp;rsquo;est là que se dresse une fracture physique appelée « mur de la VRAM (Video RAM) ».&lt;/p>
&lt;p>La vitesse d&amp;rsquo;inférence des LLM dépend plus fortement de la bande passante de la mémoire (Memory Bandwidth) que de la puissance de calcul (FLOPS) du GPU (nature Memory-bound). Si l&amp;rsquo;on considère un nombre de paramètres du modèle à $P$ et une précision de 16 bits (2 octets), le simple chargement du modèle en mémoire nécessite au minimum $2P$ octets de VRAM. Par exemple, un modèle de 70 milliards (70B) de paramètres requiert plus de 140 Go de VRAM.&lt;/p>
$$
VRAM_{required} \approx \left( \frac{P \times bits\_per\_weight}{8} \right) + Context\_Memory
$$&lt;p>Même les GPU haut de gamme accessibles au grand public (NVIDIA RTX 4090) plafonnent à 24 Go de VRAM, rendant impossible l&amp;rsquo;exécution native de modèles de la classe des 70B. C&amp;rsquo;est là qu&amp;rsquo;interviennent les « techniques de quantification (Quantization) » telles que AWQ ou GGUF, qui consistent à compresser les poids à 4 ou 8 bits dans une lutte technique pour trouver un compromis, bien qu&amp;rsquo;une dégradation des performances (détérioration de la perplexité) due à la quantification soit inévitable.&lt;/p>
&lt;p>De plus, ces dernières années, des « PC IA » équipés de NPU (Neural Processing Unit) sont apparus, mais les TOPS (Tera Operations Per Second) des NPU actuels limitent l&amp;rsquo;exécution à de petits modèles légers (SLM : Small Language Models). Réaliser une véritable inférence avancée en local nécessite une capacité financière permettant de construire un environnement multi-GPU coûtant plusieurs millions de yens. C&amp;rsquo;est la véritable nature de la « fracture numérique capitalistique » de l&amp;rsquo;IA.&lt;/p>
&lt;h2 id="5-la-fracture-cognitive--les-hallucinations-et-la-boucle-de-vérification">5. La fracture cognitive : Les hallucinations et la boucle de vérification
&lt;/h2>&lt;p>Ce qui est encore plus effrayant que les écarts matériels ou de compétences, c&amp;rsquo;est la « fracture cognitive ». L&amp;rsquo;IA génère des textes très fluides et persuasifs, mais elle produit également des « hallucinations », sortant de fausses informations tout en les faisant paraître plausibles.&lt;/p>
&lt;p>La fracture qui se crée ici est la division entre « ceux qui peuvent examiner d&amp;rsquo;un œil critique et vérifier (fact-checker) la production de l&amp;rsquo;IA » et « ceux qui croient aveuglément en la production de l&amp;rsquo;IA comme une vérité faisant autorité ». Les premiers utilisent l&amp;rsquo;IA comme un outil puissant de brainstorming et de rédaction de brouillons, effectuant le contrôle qualité (QA) du résultat final avec leur propre expertise. Les seconds diffusent de fausses informations telles quelles, détruisant non seulement leur propre crédibilité, mais contribuant également à polluer l&amp;rsquo;espace d&amp;rsquo;information sur Internet avec des contenus de type spam.&lt;/p>
&lt;p>Voici le processus de la boucle de vérification cognitive (Cognitive Verification Loop) permettant d&amp;rsquo;éviter cela.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;Intention humaine (Intent)&amp;#34;] --&amp;gt; B[&amp;#34;Saisie du prompt à l&amp;#39;IA (Prompting)&amp;#34;]
B --&amp;gt; C[&amp;#34;Génération par le modèle d&amp;#39;IA (Generation)&amp;#34;]
C --&amp;gt; D{&amp;#34;Vérification cognitive (Cognitive Verification)&amp;#34;}
D -- Doute ou faille logique --&amp;gt; E[&amp;#34;Fact-checking à l&amp;#39;aide de RAG ou d&amp;#39;outils externes&amp;#34;]
E --&amp;gt; F[&amp;#34;Ajustement et affinage du prompt&amp;#34;]
F --&amp;gt; B
D -- Fait et logique valides --&amp;gt; G[&amp;#34;Ajustement final basé sur la connaissance du domaine de l&amp;#39;humain&amp;#34;]
G --&amp;gt; H[&amp;#34;Production du livrable final (Output)&amp;#34;]
&lt;/pre>
&lt;p>Pour faire tourner cette boucle, il est indispensable non seulement de savoir utiliser l&amp;rsquo;IA, mais aussi de posséder une profonde « connaissance du domaine » et un « esprit critique » concernant la production. Ironiquement, plus l&amp;rsquo;IA évolue, plus les compétences requises des humains se déplacent non pas vers des compétences de manipulation de base, mais vers des capacités cognitives extrêmement avancées, telles que la pensée philosophique et logique, ou la culture permettant de discerner le vrai du faux.&lt;/p>
&lt;h2 id="6-une-nouvelle-société-de-classes--les-orchestrateurs-dia-et-les-travailleurs-manuels">6. Une nouvelle société de classes : Les orchestrateurs d&amp;rsquo;IA et les travailleurs manuels
&lt;/h2>&lt;p>Dans un avenir où ces disparités seront poussées à l&amp;rsquo;extrême (ou une réalité déjà en cours), le marché du travail se polarisera comme jamais auparavant.&lt;/p>
&lt;p>&lt;strong>1. Les orchestrateurs d&amp;rsquo;IA (le top 1 à 5 %)&lt;/strong>
Ils construisent des flux de travail dans leur domaine d&amp;rsquo;expertise en faisant interagir de manière autonome plusieurs agents d&amp;rsquo;IA. Ils délèguent à l&amp;rsquo;IA la majorité des processus, tels que la recherche, le codage, l&amp;rsquo;analyse de données et la rédaction de rapports, et se spécialisent eux-mêmes dans la « conception des processus », le « traitement des exceptions » et la « prise de décision finale ». Leur productivité atteint des dizaines à des centaines de fois celle des travailleurs traditionnels, générant une valeur économique colossale.&lt;/p>
&lt;p>&lt;strong>2. Les travailleurs intellectuels traditionnels et travailleurs manuels&lt;/strong>
Ce sont les personnes qui écrivent du code de leurs propres mains, qui manipulent Excel elles-mêmes et qui rédigent des textes elles-mêmes. Leur travail sera progressivement remplacé par l&amp;rsquo;IA, ou bien elles seront reléguées à des tâches de « surveillance et maintenance de bout de chaîne » des systèmes créés par les orchestrateurs d&amp;rsquo;IA, ou à du « travail dans l&amp;rsquo;espace physique ». Le travail intellectuel qui n&amp;rsquo;exploite pas l&amp;rsquo;IA est confronté au risque de perdre totalement sa compétitivité sur le marché.&lt;/p>
&lt;h2 id="7-stratégies-et-prescriptions-sociales-pour-survivre-dans-une-société-inégalitaire">7. Stratégies et prescriptions sociales pour survivre dans une société inégalitaire
&lt;/h2>&lt;p>Face à cette fracture écrasante, comment les individus, les entreprises et la société doivent-ils s&amp;rsquo;adapter ?&lt;/p>
&lt;h3 id="stratégie-individuelle--sadapter-au-changement-de-paradigme">Stratégie individuelle : S&amp;rsquo;adapter au changement de paradigme
&lt;/h3>&lt;p>Le plus important est d&amp;rsquo;abandonner la sous-estimation selon laquelle « l&amp;rsquo;IA n&amp;rsquo;est qu&amp;rsquo;un simple chatbot ». Il faut considérer l&amp;rsquo;IA comme un « stagiaire de haut niveau » ou une « équipe d&amp;rsquo;experts », et prendre l&amp;rsquo;habitude de toujours se demander comment décomposer ses propres processus métier (Task Decomposition) pour les déléguer à l&amp;rsquo;IA. De plus, même sans savoir programmer, comprendre le concept d&amp;rsquo;API et la structuration des données (comme JSON) permet de créer des automatisations puissantes en combinant des outils no-code/low-code (Zapier, Make, etc.) avec l&amp;rsquo;IA.&lt;/p>
&lt;h3 id="stratégie-dentreprise--conception-dorganisation-ai-native">Stratégie d&amp;rsquo;entreprise : Conception d&amp;rsquo;organisation AI-native
&lt;/h3>&lt;p>Pour les entreprises, il ne suffit pas de simplement « distribuer des comptes ChatGPT ». Il est nécessaire de redessiner l&amp;rsquo;ensemble des flux de travail en considérant l&amp;rsquo;IA comme acquise (BPR : Business Process Re-engineering), et d&amp;rsquo;investir dans des infrastructures telles que la construction d&amp;rsquo;environnements RAG sécurisés ou le fine-tuning de modèles locaux avec les connaissances propres à l&amp;rsquo;entreprise. L&amp;rsquo;introduction de nouveaux KPI permettant d&amp;rsquo;évaluer la capacité des employés à orchestrer l&amp;rsquo;IA est également requise.&lt;/p>
&lt;h3 id="prescriptions-sociales--linfrastructure-ia-comme-bien-public">Prescriptions sociales : L&amp;rsquo;infrastructure IA comme bien public
&lt;/h3>&lt;p>Au niveau de l&amp;rsquo;État ou de la société, des filets de sécurité et une éducation sont nécessaires pour éviter que la 3e fracture numérique ne débouche sur de graves inégalités économiques et des troubles sociaux. Par exemple, le soutien public à la recherche et au développement de modèles d&amp;rsquo;IA open source, ou l&amp;rsquo;enseignement obligatoire de la « littératie critique de l&amp;rsquo;IA » dans les établissements scolaires. Il convient également de mettre sur la table des discussions la mise à jour des lois antitrust et l&amp;rsquo;adoption de régulations appropriées pour prévenir le « monopole des modèles d&amp;rsquo;IA et des ressources de calcul » par les géants de la technologie.&lt;/p>
&lt;h2 id="8-conclusion--surfer-sur-la-vague-de-lévolution-ou-se-faire-engloutir">8. Conclusion : Surfer sur la vague de l&amp;rsquo;évolution ou se faire engloutir
&lt;/h2>&lt;p>La « nouvelle fracture numérique » provoquée par l&amp;rsquo;IA générative restructure notre société de manière plus rapide et plus vaste qu&amp;rsquo;aucune autre innovation technologique passée. Cette fracture se manifeste par la différence des ressources de calcul matérielles, la capacité d&amp;rsquo;investir dans des API cloud, et surtout, dans les « compétences cognitives et logiques pour orchestrer l&amp;rsquo;IA ».&lt;/p>
&lt;p>Comme le montre l&amp;rsquo;effet Matthieu de la productivité, cet écart s&amp;rsquo;élargira avec le temps jusqu&amp;rsquo;à devenir insurmontable. Ce que nous devons faire maintenant, ce n&amp;rsquo;est ni craindre l&amp;rsquo;évolution de l&amp;rsquo;IA, ni y croire aveuglément. Il s&amp;rsquo;agit de comprendre en profondeur les caractéristiques de l&amp;rsquo;IA, le plus grand amplificateur d&amp;rsquo;intelligence (Intelligence Amplifier) de l&amp;rsquo;histoire de l&amp;rsquo;humanité, et d&amp;rsquo;opérer une « auto-transformation intellectuelle » en mettant à jour nos propres pensées et flux de travail.&lt;/p>
&lt;p>Se tenir de ce côté-ci de la nouvelle fracture numérique ou rester de l&amp;rsquo;autre côté. Ce choix, à chaque instant, est laissé à notre apprentissage et à nos actions quotidiens.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Si vous avez des commentaires sur cet article ou des exemples concrets de déploiement de l&amp;rsquo;orchestration de l&amp;rsquo;IA, n&amp;rsquo;hésitez pas à les partager dans la section des commentaires ou sur les réseaux sociaux de l&amp;rsquo;auteur.&lt;/em>&lt;/p></description></item><item><title>L'impact des algorithmes de réseaux sociaux sur notre réflexion et nos choix technologiques</title><link>http://kenji.blog/fr/p/sns-algorithm-tech-selection/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/fr/p/sns-algorithm-tech-selection/</guid><description>&lt;img src="http://kenji.blog/p/sns-algorithm-tech-selection/img/eyecatch.jpg" alt="Featured image of post L'impact des algorithmes de réseaux sociaux sur notre réflexion et nos choix technologiques" />&lt;h2 id="1-introduction--la-démocratisation-de-linformation-technologique-et-la-montée-des-algorithmes">1. Introduction : La démocratisation de l&amp;rsquo;information technologique et la montée des algorithmes
&lt;/h2>&lt;p>Dans l&amp;rsquo;ingénierie logicielle moderne, la plupart des informations technologiques que nous consommons quotidiennement passent par les réseaux sociaux (SNS) ou les agrégateurs de nouvelles tels que X (anciennement Twitter), Hacker News, Reddit et LinkedIn. Il fut un temps où nous collections l&amp;rsquo;information de manière autonome et chronologique via des listes de diffusion, des blogs gérés par des experts spécifiques ou des lecteurs RSS. Cependant, avec l&amp;rsquo;augmentation explosive des frameworks et des outils créés chaque jour, il est devenu courant de s&amp;rsquo;en remettre aux &amp;ldquo;algorithmes de recommandation&amp;rdquo; (Recommendation Algorithms) fournis par les plateformes pour trier l&amp;rsquo;information, afin d&amp;rsquo;optimiser nos ressources cognitives limitées (temps disponible et capacité d&amp;rsquo;attention).&lt;/p>
&lt;p>Ce changement de paradigme a apporté d&amp;rsquo;immenses avantages, comme la possibilité de découvrir efficacement des articles techniques utiles et des projets open-source révolutionnaires. Cependant, d&amp;rsquo;un autre côté, il a également provoqué des effets secondaires très graves. C&amp;rsquo;est le fait que &lt;strong>&amp;ldquo;les tendances technologiques et les meilleures pratiques que nous voyons sont faussées par la &amp;lsquo;fonction d&amp;rsquo;optimisation de l&amp;rsquo;engagement&amp;rsquo; de l&amp;rsquo;algorithme, plutôt que par une supériorité technique pure ou une évaluation objective&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Dans cet article, nous décortiquerons mathématiquement et structurellement comment les algorithmes d&amp;rsquo;apprentissage automatique avancés fonctionnant en arrière-plan des réseaux sociaux façonnent notre perception et influencent notre prise de décision dans les choix technologiques. De plus, nous examinerons en profondeur les dangers du &amp;ldquo;Hype Driven Development (HDD : Développement piloté par la hype)&amp;rdquo;, qui nous laisse emporter par l&amp;rsquo;enthousiasme généré par les algorithmes, ainsi que des approches concrètes pour s&amp;rsquo;en affranchir et faire des choix technologiques objectifs et solides.&lt;/p>
&lt;hr>
&lt;h2 id="2-évolution-et-mécanismes-des-algorithmes-de-recommandation">2. Évolution et mécanismes des algorithmes de recommandation
&lt;/h2>&lt;p>Lorsque nous ouvrons un réseau social, le contenu qui apparaît dans notre fil d&amp;rsquo;actualité (feed) n&amp;rsquo;est pas aléatoire. Il y a des modèles d&amp;rsquo;apprentissage automatique hautement optimisés pour maximiser le temps passé par les utilisateurs et améliorer les revenus publicitaires. Commençons par examiner les technologies fondamentales qui sous-tendent ces modèles.&lt;/p>
&lt;h3 id="21-filtrage-collaboratif-collaborative-filtering-et-factorisation-de-matrices">2.1 Filtrage collaboratif (Collaborative Filtering) et factorisation de matrices
&lt;/h3>&lt;p>Le &amp;ldquo;filtrage collaboratif&amp;rdquo; agit comme une ligne de base solide depuis les débuts des systèmes de recommandation jusqu&amp;rsquo;à aujourd&amp;rsquo;hui. En particulier, la &amp;ldquo;factorisation de matrices&amp;rdquo; (Matrix Factorization), qui représente les interactions entre les utilisateurs et les éléments (publications ou articles) sous forme de matrice et les mappe vers un espace de caractéristiques latentes, est largement utilisée.&lt;/p>
&lt;p>Soit $R \in \mathbb{R}^{M \times N}$ la matrice d&amp;rsquo;évaluation pour $M$ utilisateurs et $N$ éléments, la factorisation de matrices approxime cette immense matrice creuse par le produit d&amp;rsquo;une matrice de caractéristiques latentes de faible dimension $U \in \mathbb{R}^{M \times K}$ (caractéristiques utilisateur) et $V \in \mathbb{R}^{N \times K}$ (caractéristiques élément) ($K \ll M, N$).&lt;/p>
$$
R \approx U \times V^T
$$&lt;p>Le score prédit (probabilité d&amp;rsquo;engagement) $\hat{r}_{ij}$ de l&amp;rsquo;élément $j$ pour un utilisateur spécifique $i$ est calculé comme le produit scalaire de leurs vecteurs de caractéristiques latentes respectifs.&lt;/p>
$$
\hat{r}_{ij} = \mathbf{u}_i \cdot \mathbf{v}_j
$$&lt;p>Ce modèle est entraîné pour minimiser la fonction de perte suivante ($\lambda$ est un terme de régularisation pour éviter le surapprentissage).&lt;/p>
$$
\mathcal{L} = \sum_{(i,j) \in \Omega} (r_{ij} - \mathbf{u}_i \cdot \mathbf{v}_j)^2 + \lambda (\|\mathbf{u}_i\|^2 + \|\mathbf{v}_j\|^2)
$$&lt;p>&lt;strong>Impact sur la sélection technologique :&lt;/strong>
Cet algorithme rapproche &amp;ldquo;l&amp;rsquo;utilisateur A intéressé par Rust&amp;rdquo; et &amp;ldquo;l&amp;rsquo;utilisateur B intéressé par Rust&amp;rdquo; dans l&amp;rsquo;espace latent. Si A &amp;ldquo;aime&amp;rdquo; une publication sur un nouveau framework Web, il est très probable que cette publication apparaisse également dans le fil d&amp;rsquo;actualité de B. Cela provoque un phénomène de mode locale autour d&amp;rsquo;une technologie spécifique au sein d&amp;rsquo;un groupe d&amp;rsquo;ingénieurs préférant une stack technologique particulière.&lt;/p>
&lt;h3 id="22-modèles-de-recommandation-utilisant-lapprentissage-profond-dlrm">2.2 Modèles de recommandation utilisant l&amp;rsquo;apprentissage profond (DLRM)
&lt;/h3>&lt;p>Ces dernières années, sous l&amp;rsquo;impulsion d&amp;rsquo;entreprises comme Meta (anciennement Facebook), les architectures basées sur l&amp;rsquo;apprentissage profond, représentées par le Deep Learning Recommendation Model (DLRM), se sont répandues. Le DLRM prend en entrée une grande variété de caractéristiques (Features), telles que l&amp;rsquo;historique de comportement de l&amp;rsquo;utilisateur et les métadonnées des éléments, pour prédire le taux de clics (CTR : Click-Through Rate) et d&amp;rsquo;autres indicateurs.&lt;/p>
&lt;p>La particularité du DLRM réside dans sa capacité à convertir des caractéristiques catégorielles creuses (ex: ID utilisateur, hashtags suivis) en vecteurs denses (Dense Vectors) via des &amp;ldquo;tables de plongement (Embedding Tables)&amp;rdquo;, et à les combiner avec des caractéristiques denses à valeurs continues (ex: nombre de jours depuis la création du compte, temps moyen passé par le passé).&lt;/p>
$$
\mathbf{e}_{\text{sparse}} = \text{EmbeddingLookup}(\mathbf{x}_{\text{sparse}})
$$$$
\mathbf{h}_{\text{dense}} = \text{BottomMLP}(\mathbf{x}_{\text{dense}})
$$&lt;p>Après avoir été combinées (Concatenate) ou avoir interagi par produit scalaire (Feature Interaction), elles sont introduites dans un perceptron multicouche supérieur (Top MLP), qui produit finalement la probabilité du CTR, etc., via la fonction sigmoïde $\sigma$.&lt;/p>
$$
\hat{y} = \sigma(\text{TopMLP}(\text{Interact}(\mathbf{e}_{\text{sparse}}, \mathbf{h}_{\text{dense}})))
$$&lt;p>&lt;strong>Impact sur la sélection technologique :&lt;/strong>
Les modèles massifs tels que le DLRM capturent même les signaux les plus subtils (par exemple, une légère augmentation du temps passé sur une &amp;ldquo;publication avec vidéo&amp;rdquo; ou une &amp;ldquo;publication contenant un buzzword spécifique&amp;rdquo;) et les reflètent dans le score prédit. En conséquence, les informations techniques contenant des &amp;ldquo;titres provocateurs (ex: &amp;lsquo;React est mort&amp;rsquo;, &amp;lsquo;La fin des microservices&amp;rsquo;)&amp;rdquo; ou des &amp;ldquo;démonstrations visuellement spectaculaires&amp;rdquo; sont facilement favorisées par l&amp;rsquo;algorithme.&lt;/p>
&lt;h3 id="23-apprentissage-par-renforcement-et-problème-des-bandits-manchots-multi-armed-bandits">2.3 Apprentissage par renforcement et problème des bandits manchots (Multi-Armed Bandits)
&lt;/h3>&lt;p>Les systèmes de recommandation doivent constamment explorer les dernières préférences des utilisateurs. C&amp;rsquo;est ici qu&amp;rsquo;intervient le problème des &amp;ldquo;bandits manchots&amp;rdquo;. Il optimise le compromis entre &amp;ldquo;l&amp;rsquo;exploitation (Exploitation)&amp;rdquo; (présenter du contenu de manière sûre sur la base des préférences existantes) et &amp;ldquo;l&amp;rsquo;exploration (Exploration)&amp;rdquo; (découvrir de nouvelles tendances).&lt;/p>
&lt;p>Dans l&amp;rsquo;algorithme représentatif UCB (Upper Confidence Bound), le score pour la sélection du bras (groupe de contenu) $a$ au moment $t$ est calculé comme suit :&lt;/p>
$$
a_t = \arg\max_{a} \left( \hat{\mu}_a + c \sqrt{\frac{\ln t}{N_a(t)}} \right)
$$&lt;p>Où $\hat{\mu}_a$ est la récompense moyenne (taux d&amp;rsquo;engagement) du bras $a$ jusqu&amp;rsquo;à présent, $N_a(t)$ est le nombre de fois qu&amp;rsquo;il a été sélectionné, et $c$ est un paramètre ajustant le degré d&amp;rsquo;exploration.&lt;/p>
&lt;p>&lt;strong>Impact sur la sélection technologique :&lt;/strong>
L&amp;rsquo;algorithme accorde temporairement un bonus d&amp;rsquo;exploration aux publications concernant des frameworks ou bibliothèques nouvellement apparus (ceux dont le nombre d&amp;rsquo;essais $N_a(t)$ est faible), les exposant à un groupe d&amp;rsquo;utilisateurs aléatoires. Si les réactions des influenceurs sont bonnes lors de cette &amp;ldquo;phase d&amp;rsquo;exploration&amp;rdquo; initiale, $\hat{\mu}_a$ augmente rapidement, se transformant instantanément en buzz (viralité). C&amp;rsquo;est le mécanisme par lequel &amp;ldquo;soudain, tout le monde se met à parler de cette technologie&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="3-les-mathématiques-de-la-chambre-décho-et-de-la-bulle-de-filtres">3. Les mathématiques de la chambre d&amp;rsquo;écho et de la bulle de filtres
&lt;/h2>&lt;p>À mesure que l&amp;rsquo;algorithme s&amp;rsquo;optimise, l&amp;rsquo;utilisateur se retrouve entouré uniquement par &amp;ldquo;des informations qu&amp;rsquo;il trouve agréables ou qui renforcent ses croyances existantes&amp;rdquo;. C&amp;rsquo;est le phénomène de la &lt;strong>chambre d&amp;rsquo;écho (Echo Chamber)&lt;/strong> et de la &lt;strong>bulle de filtres (Filter Bubble)&lt;/strong>.&lt;/p>
&lt;p>En théorie des réseaux, la tendance des personnes similaires à se lier est appelée &amp;ldquo;homophilie (Homophily)&amp;rdquo;. Dans un graphe $G=(V, E)$, les arêtes (relations de suivi ou propagation de l&amp;rsquo;information) entre les nœuds (utilisateurs) sont d&amp;rsquo;autant plus susceptibles de se former que la similarité des attributs est élevée.&lt;/p>
&lt;p>Les algorithmes de recommandation des réseaux sociaux accélèrent artificiellement cette homophilie. Par exemple, supposons qu&amp;rsquo;il existe une communauté d&amp;rsquo;ingénieurs promouvant &amp;ldquo;l&amp;rsquo;architecture Serverless&amp;rdquo; et une autre soutenant &amp;ldquo;le Bare Metal On-Premise&amp;rdquo;. L&amp;rsquo;algorithme apprend à réduire le poids des liens entre ces différentes communautés (Cross-cutting ties) et à renforcer les liens au sein de la même communauté (car les opinions divergentes provoquent souvent des abandons et risquent de réduire l&amp;rsquo;engagement. Ou inversement, cela peut susciter un engagement lié à une colère extrême, mais dans le domaine technique, c&amp;rsquo;est la première option qui a tendance à primer).&lt;/p>
&lt;p>En conséquence, il se crée une réalité technique complètement fracturée : sur votre fil d&amp;rsquo;actualité, il semble que &amp;ldquo;toutes les entreprises du monde passent au Serverless&amp;rdquo;, tandis que sur le fil de quelqu&amp;rsquo;un d&amp;rsquo;autre, il apparaît que &amp;ldquo;le rapatriement depuis le cloud (Cloud Repatriation) est la tendance mondiale&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="4-le-hype-driven-development-hdd-engendré-par-les-algorithmes">4. Le Hype Driven Development (HDD) engendré par les algorithmes
&lt;/h2>&lt;p>La combinaison des chambres d&amp;rsquo;écho et de modèles de recommandation puissants déclenche l&amp;rsquo;un des plus grands anti-patterns de l&amp;rsquo;industrie de l&amp;rsquo;ingénierie : le &lt;strong>Hype Driven Development (Développement piloté par la hype)&lt;/strong>. Le HDD est le phénomène par lequel on adopte une nouvelle technologie simplement parce qu&amp;rsquo;elle &amp;ldquo;fait le buzz sur les réseaux sociaux&amp;rdquo; ou qu&amp;rsquo;elle &amp;ldquo;est la dernière tendance&amp;rdquo;, sans examiner en profondeur ses véritables avantages, ses compromis et son adéquation avec les exigences commerciales de l&amp;rsquo;entreprise.&lt;/p>
&lt;p>Le diagramme Mermaid suivant montre comment les algorithmes des réseaux sociaux alimentent la boucle de rétroaction du HDD.&lt;/p>
&lt;pre class="mermaid">
graph TD
A[&amp;#34;Un ingénieur publie sur les &amp;#39;avantages écrasants&amp;#39; d&amp;#39;une nouvelle technologie&amp;#34;] --&amp;gt; B[&amp;#34;L&amp;#39;algorithme mesure le CTR initial et le temps passé (Exploration)&amp;#34;]
B --&amp;gt; C[&amp;#34;Jugé à fort engagement, son exposition s&amp;#39;élargit aux fils des utilisateurs similaires&amp;#34;]
C --&amp;gt; D[&amp;#34;Les utilisateurs stimulés par le FOMO (Peur de manquer) partagent davantage&amp;#34;]
D --&amp;gt; E[&amp;#34;Apparition d&amp;#39;une illusion de fréquence : &amp;#39;Cela devient le standard de l&amp;#39;industrie&amp;#39;&amp;#34;]
E --&amp;gt; F[&amp;#34;Introduction dans un projet réel sans vérification suffisante (HDD)&amp;#34;]
F --&amp;gt; A
&lt;/pre>
&lt;p>Ce qui est effrayant dans cette boucle, c&amp;rsquo;est que l&amp;rsquo;&lt;strong>illusion de fréquence (Phénomène Baader-Meinhof)&lt;/strong> est intentionnellement provoquée par l&amp;rsquo;algorithme. Une fois que vous voyez le nom d&amp;rsquo;une nouvelle bibliothèque de gestion d&amp;rsquo;état, l&amp;rsquo;algorithme le capte comme un signal et remplit votre fil de discussions sur cette bibliothèque dès le lendemain. Le cerveau humain perçoit cela à tort comme une &amp;ldquo;pandémie mondiale&amp;rdquo;.&lt;/p>
&lt;p>Le graphique suivant illustre la différence de cycle de vie entre une technologie surmédiatisée (Hype) sur les réseaux sociaux et une technologie sobre et ennuyeuse mais robuste (Boring Technology).&lt;/p>
&lt;pre class="mermaid">
xychart-beta
title Cycle de vie des technologies et évolution des évaluations
x-axis [&amp;#34;0 mois&amp;#34;, &amp;#34;6 mois&amp;#34;, &amp;#34;12 mois&amp;#34;, &amp;#34;18 mois&amp;#34;, &amp;#34;24 mois&amp;#34;, &amp;#34;30 mois&amp;#34;, &amp;#34;36 mois&amp;#34;]
y-axis &amp;#34;Nombre de mentions et niveau d&amp;#39;enthousiasme sur les réseaux sociaux&amp;#34; 0 --&amp;gt; 100
line [10, 85, 95, 45, 20, 10, 5]
line [15, 20, 25, 35, 50, 65, 80]
&lt;/pre>
&lt;p>&lt;em>(Note : Dans le graphique ci-dessus, la ligne qui monte et descend rapidement représente la technologie &amp;ldquo;Hype&amp;rdquo;, tandis que la ligne qui monte lentement et régulièrement représente la &amp;ldquo;Boring Technology&amp;rdquo;)&lt;/em>&lt;/p>
&lt;p>Les technologies &amp;ldquo;Hypées&amp;rdquo; font face à des problèmes concrets tels que &amp;ldquo;manque de documentation&amp;rdquo;, &amp;ldquo;bugs graves dans les cas extrêmes&amp;rdquo; ou &amp;ldquo;épuisement des mainteneurs&amp;rdquo; 6 à 12 mois après leur introduction, et disparaissent rapidement des réseaux sociaux. Cependant, une fois intégrée dans le système, éliminer la dette technique encourue coûte énormément.&lt;/p>
&lt;hr>
&lt;h2 id="5-stratégies-de-détachement-de-lalgorithme-dans-la-sélection-technologique">5. Stratégies de &amp;ldquo;détachement de l&amp;rsquo;algorithme&amp;rdquo; dans la sélection technologique
&lt;/h2>&lt;p>Alors, sous l&amp;rsquo;emprise de ces algorithmes, comment pouvons-nous faire des choix technologiques de manière objective et lucide ? Voici quelques stratégies concrètes non pas pour pirater l&amp;rsquo;algorithme, mais pour en &amp;ldquo;descendre&amp;rdquo;.&lt;/p>
&lt;h3 id="51-retour-aux-sources-primaires--code-source-et-rfc">5.1 Retour aux sources primaires : Code source et RFC
&lt;/h3>&lt;p>La défense la plus sûre est de déplacer la source de nos informations de l&amp;rsquo;agrégation des réseaux sociaux vers les &lt;strong>sources primaires (Primary Sources)&lt;/strong>.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Lire le code source :&lt;/strong> Au lieu de croire une publication sur un réseau social affirmant que &amp;ldquo;cette bibliothèque est ultra-rapide&amp;rdquo;, ouvrez plutôt GitHub et vérifiez la complexité de calcul de la logique centrale et le mécanisme d&amp;rsquo;allocation de la mémoire.&lt;/li>
&lt;li>&lt;strong>Suivre les RFC (Request for Comments) :&lt;/strong> De nombreux projets open-source matures (React, Rust, Python, etc.) adoptent le processus RFC lors de l&amp;rsquo;introduction de nouvelles fonctionnalités. Dans les RFC, &amp;ldquo;pourquoi cette fonctionnalité est nécessaire&amp;rdquo;, &amp;ldquo;quels sont les compromis de conception&amp;rdquo; et &amp;ldquo;quelles sont les alternatives&amp;rdquo; sont consignés de manière logique et dépassionnée, sans se soucier de l&amp;rsquo;engagement algorithmique. C&amp;rsquo;est là que réside la véritable valeur technique.&lt;/li>
&lt;/ol>
&lt;h3 id="52-lecture-attentive-des-articles-académiques-academic-papers-et-des-livres-blancs">5.2 Lecture attentive des articles académiques (Academic Papers) et des livres blancs
&lt;/h3>&lt;p>Pour les choix technologiques fondamentaux tels que les systèmes distribués, les bases de données ou les architectures de modèles d&amp;rsquo;apprentissage automatique, vous devriez lire directement les articles publiés dans l&amp;rsquo;ACM, l&amp;rsquo;IEEE ou arXiv, ou les livres blancs détaillés publiés par les entreprises (ex : le document Spanner de Google, le document Dynamo d&amp;rsquo;Amazon), plutôt que des résumés de quelques lignes sur les réseaux sociaux.&lt;/p>
&lt;p>Les publications sur les réseaux sociaux sont optimisées pour &amp;ldquo;capter l&amp;rsquo;attention des lecteurs&amp;rdquo;, tandis que les articles évalués par des pairs sont optimisés pour &amp;ldquo;l&amp;rsquo;exactitude des faits et la reproductibilité&amp;rdquo;. Leurs fonctions d&amp;rsquo;évaluation sont complètement différentes.&lt;/p>
&lt;h3 id="53-mise-en-place-de-cadres-de-prise-de-décision-au-sein-de-lorganisation">5.3 Mise en place de cadres de prise de décision au sein de l&amp;rsquo;organisation
&lt;/h3>&lt;p>Pour prévenir le HDD au niveau de l&amp;rsquo;équipe ou de l&amp;rsquo;organisation, il est nécessaire de disposer d&amp;rsquo;un processus qui élimine les intuitions subjectives ou les raisons telles que &amp;ldquo;Je l&amp;rsquo;ai vu sur Twitter&amp;rdquo;. L&amp;rsquo;un des meilleurs exemples est l&amp;rsquo;adoption de l&amp;rsquo;&lt;strong>ADR (Architecture Decision Records)&lt;/strong>.&lt;/p>
&lt;p>Lors de l&amp;rsquo;introduction d&amp;rsquo;une nouvelle technologie, les éléments suivants doivent être documentés et soumis à un examen :&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Context (Contexte) :&lt;/strong> Pourquoi une nouvelle technologie est-elle nécessaire ? Quels sont les problèmes actuels ?&lt;/li>
&lt;li>&lt;strong>Decision (Décision) :&lt;/strong> Que va-t-on adopter ?&lt;/li>
&lt;li>&lt;strong>Consequences (Conséquences) :&lt;/strong> Quels sont les compromis ? (Que sacrifie-t-on pour obtenir quoi ?)&lt;/li>
&lt;/ul>
&lt;p>En rendant ce processus obligatoire, nous pouvons transformer la &amp;ldquo;Hype (l&amp;rsquo;enthousiasme)&amp;rdquo; en &amp;ldquo;Engineering (Ingénierie)&amp;rdquo;.&lt;/p>
&lt;h3 id="54-la-philosophie-du-boring-technology-club">5.4 La philosophie du Boring Technology Club
&lt;/h3>&lt;p>Dans le monde de la technologie, il existe un mantra célèbre : &lt;strong>&amp;ldquo;Choose Boring Technology&amp;rdquo; (Choisissez une technologie ennuyeuse)&lt;/strong>. Cela nous enseigne que les jetons d&amp;rsquo;innovation (les ressources limitées qu&amp;rsquo;une organisation peut consacrer à de nouvelles technologies inconnues) ne doivent pas être gaspillés dans le choix d&amp;rsquo;infrastructures ou de frameworks qui ne sont pas directement liés à la valeur fondamentale de l&amp;rsquo;entreprise.&lt;/p>
&lt;p>Les algorithmes des réseaux sociaux aiment la &amp;ldquo;nouveauté&amp;rdquo;. Cependant, ce qui est nécessaire pour construire un système robuste capable de résister à une utilisation en production, ce sont des technologies &amp;ldquo;ennuyeuses&amp;rdquo; (PostgreSQL, Redis, des API REST standards, etc.) qui ont plus de 10 ans de recul et dont les procédures de récupération en cas de panne génèrent des millions de résultats sur Google.&lt;/p>
&lt;hr>
&lt;h2 id="6-conclusion--comment-devrions-nous-interagir-avec-la-technologie-">6. Conclusion : Comment devrions-nous interagir avec la technologie ?
&lt;/h2>&lt;p>Les algorithmes de recommandation des réseaux sociaux sont des outils puissants qui élargissent nos horizons technologiques et nous font découvrir des communautés fantastiques. Cependant, tant que leur structure interne (factorisation de matrices, DLRM, bandits manchots) aura pour impératif &amp;ldquo;la maximisation de l&amp;rsquo;engagement&amp;rdquo;, l&amp;rsquo;information générée sera inévitablement biaisée.&lt;/p>
&lt;p>Nous devons développer une littératie pour traiter les informations qui défilent sur notre fil non pas comme des &amp;ldquo;faits&amp;rdquo; ou des &amp;ldquo;tendances absolues&amp;rdquo;, mais simplement comme un &amp;ldquo;signal&amp;rdquo; parmi d&amp;rsquo;autres.&lt;/p>
&lt;p>Sortir de sa chambre d&amp;rsquo;écho, lire le code source de ses propres mains, suivre les discussions des RFC, décrypter les formules des articles de recherche, et affronter les véritables défis de son propre domaine métier. C&amp;rsquo;est le seul moyen de pratiquer la véritable ingénierie logicielle sans se laisser engloutir par la vague des algorithmes.&lt;/p></description></item></channel></rss>