<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Informatique | Dr. Goulu</title><link>https://drgoulu.com/tags/informatique/</link><atom:link href="https://drgoulu.com/tags/informatique/index.xml" rel="self" type="application/rss+xml"/><description>Informatique</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Tue, 27 Dec 2016 00:00:00 +0000</lastBuildDate><image><url>https://drgoulu.com/media/icon_hu_eee4a95885829ab2.png</url><title>Informatique</title><link>https://drgoulu.com/tags/informatique/</link></image><item><title>Bilan 2016</title><link>https://drgoulu.com/2016/12/27/bilan-2016/</link><pubDate>Tue, 27 Dec 2016 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2016/12/27/bilan-2016/</guid><description>&lt;p&gt;C&amp;rsquo;est l&amp;rsquo;heure du traditionnel petit bilan sur l&amp;rsquo;année écoulée sur ce blog.&lt;/p&gt;
&lt;p&gt;Avec 329'000 pages vues par 230'000 visiteurs en 2016, la fréquentation de ce blog est légèrement en baisse, mais rien de grave. Après un passage à vide en 2015, je reste motivé à partager avec vous les résultats de ma curiosité dévorante.&lt;/p&gt;
&lt;p&gt;Surprise! Cette année, ce n&amp;rsquo;est plus &amp;ldquo;
&amp;rdquo; qui a été l&amp;rsquo;article le plus lu de ce blog. Il est second avec 18'654 lecteurs, assez loin derrière &amp;ldquo;
&amp;rdquo; lu par 23'666 personnes. Je ne sais pas vraiment pourquoi cet article de 2008 a rencontré ce succès cette année. Ses lecteurs ne proviennent pas de pages référentes, mais plutôt de recherches Google du genre &amp;ldquo;
&amp;rdquo; où mon article est désormais bien référencé. Suivent &amp;ldquo;
&amp;rdquo;, &amp;ldquo;
&amp;rdquo; et &amp;ldquo;
&amp;rdquo; dans le Top 5&lt;/p&gt;
&lt;p&gt;Parmi les 
, c&amp;rsquo;est &amp;ldquo;
&amp;rdquo; qui a rencontré le plus de succès avec 1829 lecteurs, au 30 ème rang seulement. Drgoulu.com n&amp;rsquo;est donc décidément pas un blog d&amp;rsquo;actualités mais plutôt un site de références qui restent valables pendant des années. D&amp;rsquo;ailleurs, les deux tiers des visiteurs soit 200'000 sont arrivés suite à une recherche sur Google, dont 20'000 par la recherche d&amp;rsquo;image. 4000 de plus sont arrivés par Bing! le bien nommé, 5442 depuis une page Facebook, 1787 depuis le
 tout beau tout neuf, 1696 depuis twitter, et 660 depuis
, le chouette blog de maths de Florian qui a eu la gentillesse de me citer dans ses favoris. Merci !&lt;/p&gt;
&lt;p&gt;Ensuite, 589 lecteurs sont arrivés depuis
, le répertoire de publications académiques. C&amp;rsquo;est étonnant, mais ce qui me surprend plus est de n&amp;rsquo;avoir eu aucune arrivée depuis
 alors que j&amp;rsquo;ai pas mal investi dans ce système qui fait automatiquement des liens vers les articles parlant de publications scientifiques (
)  Par contre, environ 200 visiteurs sont arrivés
, et ce n&amp;rsquo;est même pas moi qui ai ajouté ces liens (du moins pas tous &amp;hellip;)&lt;/p&gt;
&lt;h3 id="perles-de-recherche"&gt;Perles de recherche&lt;/h3&gt;
&lt;p&gt;Parmi les statistiques que j&amp;rsquo;obtiens, les plus marrantes sont celles donnant les mots recherchés par les internautes pour arriver sur ce site. Best of 2016:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;seduire des filles lorsqu&amp;rsquo;on a de bonnes notes en maths&lt;/li&gt;
&lt;li&gt;pourquoi il y a un numero sur le mini paquet de yellow mustard&lt;/li&gt;
&lt;li&gt;pourquoi les choses sont-elles comme ça et pas autrement&lt;/li&gt;
&lt;li&gt;processus pour trouver un nombre impair&lt;/li&gt;
&lt;li&gt;pourquoi elisabeth vergee pose pour elle meme (DrG: mais qui est cette dame?)&lt;/li&gt;
&lt;li&gt;theorie de la relativité de la connerie (DrG: oui ça mène bien à une de mes pages&amp;hellip;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Certaines de ces recherches pourraient bien m&amp;rsquo;inspirer un article en 2017, mais voici déjà ceux auxquels vous avez échappé en 2016&lt;/p&gt;
&lt;h3 id="poubelle-2016"&gt;Poubelle 2016&lt;/h3&gt;
&lt;p&gt;Voici quelques brouillons commencés cette année que je ne finirai pas, sauf demande expresse dans les commentaires:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fondamentaux pour le Big Data : le MOOC. Après avoir suivi un 
 (très bien) et un autre sur les
 (trop facile), j&amp;rsquo;en ai terminé un troisième intitulé &amp;ldquo;
&amp;rdquo; (trop théorique, pas assez de programmation et d&amp;rsquo;application à mon goût. J&amp;rsquo;ai mis
dans ce brouillon, je ne sais plus pourquoi&amp;hellip;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;figure class="alignright" style="max-width: 320px; width: 100%;"&gt;&lt;a href="http://arstechnica.com/science/2016/11/nasas-em-drive-still-a-wtf-thruster/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/unicorn-microwaves-800x450_hu_3489f9e809ac20f9.webp" srcset="https://drgoulu.com/posts/2016/images/unicorn-microwaves-800x450_hu_3489f9e809ac20f9.webp 320w, https://drgoulu.com/posts/2016/images/unicorn-microwaves-800x450_hu_cf4670084f6372c3.webp 480w, https://drgoulu.com/posts/2016/images/unicorn-microwaves-800x450_hu_75fd78848706881f.webp 760w" sizes="(max-width: 640px) 100vw, 320px" alt="Licorne avançant par émission de micro-ondes ... (illustration ArsTechnica)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Licorne avançant par émission de micro-ondes &amp;hellip; (illustration ArsTechnica)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;l&amp;rsquo;
. Apparemment ce bidule viole la
, ou du moins créé une poussée par un phénomène inexpliqué
. Mon article se serait résumé à &amp;ldquo;intéressant. attendons des vérifications indépendantes&amp;rdquo; en faisant un effort pour rester dans
 plutôt que dans
, qui me tente pourtant plus.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le &amp;ldquo;Gravidyne&amp;rdquo;, mentionné par
 lors de sa conférence à la matinale des idées sur le voyage interstellaire (
). Il s&amp;rsquo;agit d&amp;rsquo;un moyen de propulsion spatial aussi surprenant que l&amp;rsquo;EmDrive, mais sans violer les lois de la physique. Mais comme il n&amp;rsquo;a hélas jamais été réalisé je n&amp;rsquo;ai pas plus à en dire que ce qu&amp;rsquo;on trouve dans les références
,
,
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sinon j&amp;rsquo;avais commencé deux articles sur les risques nucléaires, l&amp;rsquo;un à l&amp;rsquo;occasion de la publication du rapport de l&amp;rsquo;AIEA sur l&amp;rsquo;accident de Fukushima
(lecture recommandée, au moins du résumé) et l&amp;rsquo;autre suite à un passionnant article publié dans &amp;ldquo;Le Temps&amp;rdquo;
peu avant le vote suisse sur l&amp;rsquo;abandon rapide du nucléaire (refusé). C&amp;rsquo;est une version &amp;ldquo;grand public&amp;rdquo; d&amp;rsquo;une recherche
de Spencer Wheatley et Didier Sornette, professeurs à l&amp;rsquo;ETH-Zürich sur l&amp;rsquo;analyse statistique des risques et coûts du nucléaire. Ils y développement notamment leur &amp;ldquo;
&amp;rdquo; selon laquelle les événements comme Tchernobyl et Fukushima ne sont pas des
imprévisibles.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans la même veine j&amp;rsquo;avais aussi
les &amp;ldquo;observations personnelles (de Richard Feynman) sur la fiabilité de la navette spatiale&amp;rdquo; ,
sur l&amp;rsquo;évaluation des risques techniques.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dernier brouillon à finir à la poubelle cete année, celui sur
, tiré du roman de Dan Brown. Un thriller modèle standard, rien à en dire.
, et la seule question véritablement intéressante est éludée : que se passerait-il vraiment si un tiers des femmes du monde se retrouvaient stériles ? Avec 25h par jour, j&amp;rsquo;en aurais occupé quelques unes à
, le génial soft d&amp;rsquo;Yves.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bon, après ce petit nettoyage hivernal il ne me reste plus que 58 brouillons à des degrés d&amp;rsquo;avancement variés. Bonne résolution 2017 : en avoir moins de 20 dans un an.&lt;/p&gt;
&lt;p&gt;Ca va commencer très fort, celui du 1er janvier est prêt, et il nécessite un autre article d&amp;rsquo;intro qui devra être publié encore cette année. Alors à très bientôt, merci de me lire, et profitez bien de vos vacances de fin d&amp;rsquo;année !&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;&lt;span class="altmetric-embed" data-badge-type="donut" data-badge-popover="right" data-doi="10.2514/1.B36120" style="float: right; margin: 0 0 0.5rem 0.5rem;"&gt;&lt;/span&gt;
White, H., March, P., Lawrence, J., Vera, J., Sylvester, A., Brady, D., &amp;amp; Bailey, P. &amp;ldquo;
&amp;rdquo;, 2016 Journal of Propulsion and Power. American Institute of Aeronautics and Astronautics&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Thierry Alhalel &amp;ldquo;
&amp;rdquo;, 2002, Bulletin de l’Union Des Physiciens, 96(Mai), p.935–953.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Roland Lehoucq &amp;ldquo;Le gravidyne&amp;rdquo;, 1999, Pour la Science No 260, p. 100&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;Eduardo Guéron &amp;ldquo;
&amp;rdquo;, 2009, Pour la Science No 384 p. 24&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;&amp;quot;
&amp;quot; Rapport du Directeur général AIEA&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;Spencer Wheatley et Didier Sornette*, professeurs ETH Zurich &amp;ldquo;
&amp;rdquo;, Le Temps, 14 novembre 2016&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;&lt;span class="altmetric-embed" data-badge-type="donut" data-badge-popover="right" data-doi="10.1111/risa.12587" style="float: right; margin: 0 0 0.5rem 0.5rem;"&gt;&lt;/span&gt;
Wheatley, S., Sovacool, B., &amp;amp; Sornette, D. &amp;ldquo;
&amp;rdquo;, 2016 Risk Analysis. DOI:10.1111/risa.12587&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-8"&gt;&lt;/span&gt;Rémi Sussan, &amp;ldquo;
&amp;rdquo;, 2013, sur internetactu&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>La première boucle</title><link>https://drgoulu.com/2016/06/26/la-premiere-boucle/</link><pubDate>Sun, 26 Jun 2016 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2016/06/26/la-premiere-boucle/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2016/images/220px-Cf-while-fr.svg_hu_bf1e93b22836da03.webp 220w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2016/images/220px-Cf-while-fr.svg_hu_bf1e93b22836da03.webp"
width="220"
height="190"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Comme d&amp;rsquo;autres sources fort sérieuses, Sirtin a récemment fait remonter l&amp;rsquo;origine de l&amp;rsquo;informatique aux métiers à tisser Jacquard, &amp;ldquo;programmables&amp;rdquo; par cartes perforées au tout début du XIXème siècle déjà
. Pour ma part je n&amp;rsquo;adhère pas à cette filiation car les métiers Jacquard ne connaissaient pas la notion de
: si on voulait qu&amp;rsquo;ils tissent 123 fois un motif, il fallait répéter 123 fois la même séquence de petits trous sur les cartes perforées. Autrement dit ces cartes perforées ne contenaient pas un programme mais des données pour un lecteur qui ne faisait que commander des éléments mécaniques indépendants.&lt;/p&gt;
&lt;p&gt;Une idée fondatrice de la programmation, c&amp;rsquo;est de pouvoir coder &amp;ldquo;répète 123 fois ceci:&amp;rdquo;, et que la machine ait un moyen de compter jusqu&amp;rsquo;à 123, ce qui implique l&amp;rsquo;existence d&amp;rsquo;une mémoire dont le contenu est modifié par les instructions du programme. Comme l&amp;rsquo;a très bien exprimé Alan Perlis dans un de ses
:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Un programme sans boucle et sans structure de données ne vaut pas la peine d’être écrit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure class="alignright" style="max-width: 302px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/302px-Ada_Lovelace_hu_20ec1c90b6f52172.webp" srcset="https://drgoulu.com/posts/2016/images/302px-Ada_Lovelace_hu_20ec1c90b6f52172.webp 302w" sizes="(max-width: 640px) 100vw, 302px" alt="Ada, en tenue de geek de 1836" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Ada, en tenue de geek de 1836&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Alors qui a écrit le premier programme valant la peine d&amp;rsquo;être écrit, la première boucle ? C&amp;rsquo;est
. Parfaitement : une femme
. Et ceci bien avant qu&amp;rsquo;
ne propose sa
, dont l&amp;rsquo;intérêt est surtout théorique.&lt;/p&gt;
&lt;p&gt;Au contraire, Ada Lovelace a travaillé avec
sur un problème bien pratique : établir des tables nautiques, astronomiques et mathématiques exactes en automatisant leur calcul, car à l&amp;rsquo;époque ces tables calculées à la main étaient truffées d&amp;rsquo;erreurs. Des
comme la
ou la &amp;ldquo;multiplicatrice&amp;rdquo; de
facilitaient déjà le travail, mais Babbage voulut construire une &amp;ldquo;
&amp;rdquo; capable de produire des tables en évaluant des polynômes de manière itérative. Tout en la construisant, il se lança dans la conception d&amp;rsquo;une &amp;ldquo;
&amp;rdquo;  réellement programmable, et dotée notamment d&amp;rsquo;une mémoire et d&amp;rsquo;un mécanisme de
qui permettait l&amp;rsquo;exécution de boucles. Un hardware au sens propre : tout en rouages et cames propulsées à la vapeur&amp;hellip;&lt;/p&gt;
&lt;p&gt;Et c&amp;rsquo;est Ada Lovelace qui s&amp;rsquo;est attaquée au &amp;ldquo;software&amp;rdquo;. Imaginez que vous soyez à sa place et que vous disposiez de la première et unique calculatrice programmable de l&amp;rsquo;histoire, qui coûte des millions de livres de l&amp;rsquo;époque et dont la fiabilité précaire rend chaque opération précieuse. Que proposez-vous comme programme qui &amp;ldquo;vaut la peine d&amp;rsquo;être écrit&amp;rdquo; ? Certainement pas for i=1 to 100:print i; ni les nombres de Fibonacci ou les nombres premiers qu&amp;rsquo;on connait déjà. Ce qu&amp;rsquo;Ada a choisi pour le premier programme de l&amp;rsquo;histoire, c&amp;rsquo;est de calculer les
dont je vous ai
. Pourquoi ? Parce qu&amp;rsquo;avec eux et la
on peut calculer plein de tables et d&amp;rsquo;intégrales utiles.&lt;/p&gt;
&lt;p&gt;Lady Ada a donc écrit le premier programme utile de l&amp;rsquo;histoire, que voici
,
:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="la première boucle"
srcset="https://drgoulu.com/posts/2016/images/Diagram_for_the_computation_of_Bernoulli_numbers_hu_83d0d12709c43c96.webp 320w, https://drgoulu.com/posts/2016/images/Diagram_for_the_computation_of_Bernoulli_numbers_hu_c5fa33b4d6d97080.webp 480w, https://drgoulu.com/posts/2016/images/Diagram_for_the_computation_of_Bernoulli_numbers_hu_c19182a227240db8.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2016/images/Diagram_for_the_computation_of_Bernoulli_numbers_hu_83d0d12709c43c96.webp"
width="760"
height="532"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Les boucles sont indiquées par les accolades dans les premières colonnes et par le texte &amp;ldquo;here follows a repetition of Operations thirteen to twenty-three&amp;rdquo;. La fameuse &amp;ldquo;Note G&amp;rdquo; rédigée par Ada Lovelace au base de
montre clairement qu&amp;rsquo;elle a inventé les notions de variables et de boucle en programmation:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;It will be perceived that every unit added to &lt;em&gt;n&lt;/em&gt; in B2_n_-1, entails an additional repetition of operations (13…23) for the computation of B2_n_-1. Not only are all the &lt;em&gt;operations&lt;/em&gt; precisely the same however for every such repetition, but they require to be respectively supplied with numbers from the very_same pairs of columns_; with only the one exception of Operation 21, which will of course need B5 (from V23) instead of B3 (from V22). This identity in the &lt;em&gt;columns&lt;/em&gt; which supply the requisite numbers must not be confounded with identity in the &lt;em&gt;values&lt;/em&gt; those columns have upon them and give out to the mill. Most of those values undergo alterations during a performance of the operations (13…23), and consequently the columns present a new set of values for the &lt;em&gt;next&lt;/em&gt; performance of (13…23) to work on&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class="alignright" style="max-width: 590px; width: 100%;"&gt;&lt;a href="https://marquisdegeek.com/code_ada99" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/ADA99-Bernouilli_hu_129278aa0e12456d.webp" srcset="https://drgoulu.com/posts/2016/images/ADA99-Bernouilli_hu_129278aa0e12456d.webp 320w, https://drgoulu.com/posts/2016/images/ADA99-Bernouilli_hu_13414389dd317d1f.webp 480w, https://drgoulu.com/posts/2016/images/ADA99-Bernouilli_hu_ec2728226f29fd73.webp 590w" sizes="(max-width: 640px) 100vw, 590px" alt="ADA99 Bernouilli" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;fonction de calcul des nombres de Bernoulli en Javascript langage ADA, par S. Goodwin [4)&lt;/figcaption&gt;&lt;/figure&gt;
Et accessoirement que Madame Lovelace commentait son code en prose intelligible, une habitude qui se perd. Exemple : le code ci-contre qui calcule les nombres de Bernoulli en  
et hélas pas en
, baptisé ainsi en l&amp;rsquo;honneur de la première véritable programmeuse de l&amp;rsquo;histoire.&lt;/p&gt;
&lt;p&gt;Mais on l&amp;rsquo;a longtemps oubliée car son code n&amp;rsquo;a hélas jamais pu être exécuté : la machine analytique de Babbage avait trop de frottements, trop d&amp;rsquo;imprécisions mécaniques, elle n&amp;rsquo;a jamais fonctionné&amp;hellip;&lt;/p&gt;
&lt;p&gt;Le premier calculateur réellement programmable ayant fonctionné est, n&amp;rsquo;en déplaise aux cow-boys, allemand. Le
de
a été construit en 1941 et détruit lors d&amp;rsquo;un bombardement en 1943, mais entre deux il a été utilisé pour calculer des choses et donné naissance au premier &amp;ldquo;vrai&amp;rdquo; langage de programmation de l&amp;rsquo;histoire :
. Cependant, le Z3 ne permettait pas le
qui semble aujourd&amp;rsquo;hui indispensable à toute boucle utile. Mais comme expliqué dans
et
, le Z3 était bel et bien
 grâce à deux horribles magouilles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;on pouvait assigner le résultat binaire d&amp;rsquo;un test à une variable, par exemple if i&amp;gt;123 then t=0 else t=1; puis utiliser cette variable pour coder les deux &amp;ldquo;branches&amp;rdquo; correspondant au &amp;ldquo;then&amp;rdquo; et au &amp;ldquo;else&amp;rdquo; en codant des formules comme a=t*x+(1-t)*y; qui fait a=x ou a=y selon la valeur de t&lt;/li&gt;
&lt;li&gt;on pouvait effectuer une boucle infinie en scotchant la fin de la bande perforée au début pour qu&amp;rsquo;elle tourne en rond, et rendre la boucle finie avec un code du genre a=a/t qui ne faisait rien tant que t=1, et provoquait une erreur &amp;ldquo;division par zéro&amp;rdquo; quand t=0, ce qui arrêtait la machine. Beark! Mais efficace.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;C&amp;rsquo;est sans aucun doute Konrad Zuse qui a fait tourner la première boucle conditionnelle de l&amp;rsquo;histoire, mais hélas on ne sait plus quel était le premier programme à utiliser cette possibilité.&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 320px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/VonNeumannProgram_hu_44e78531b312919b.webp" srcset="https://drgoulu.com/posts/2016/images/VonNeumannProgram_hu_44e78531b312919b.webp 320w, https://drgoulu.com/posts/2016/images/VonNeumannProgram_hu_d9efe2816e9b0b99.webp 406w" sizes="(max-width: 640px) 100vw, 320px" alt="page de programme ENIAC par Klara von Neumann" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;page de programme ENIAC par Klara von Neumann&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Comme ce sont les vainqueurs qui écrivent l&amp;rsquo;histoire, je termine en mentionnant tout de même l&amp;rsquo;
, qui fut la première machine Turing-complète électronique. Conçue par
selon l&amp;rsquo;architecture qui est toujours celle des ordinateurs actuels. Cette machine est la première a être programmable au sens moderne du terme avec mémoire, branchements conditionnels, boucles, et femmes.&lt;/p&gt;
&lt;p&gt;En effet, avant chaque calcul, les différentes unités de l&amp;rsquo;ENIAC doivent être reconfigurées par câblage, une tâche dévolue aux 6 &amp;ldquo;
&amp;rdquo; Kay McNulty, Betty Jennings, Betty Snyder, Marlyn Wescoff, Fran Bilas et Ruth Lichterman. Elles aussi longtemps oubliées par l&amp;rsquo;histoire, un récent reportage
leur rend un hommage mérité. J&amp;rsquo;en ai retenu une phrase :&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;The ENIAC was a son of a bitch to program&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On dit souvent que l&amp;rsquo;ENIAC a servi au calcul de la bombe atomique. Ca dépend laquelle :
, Hiroshima et Nagasaki ont eu lieu en 1945, avant qu&amp;rsquo;ENIAC soit opérationnelle en 1946. Mais ENIAC a effectivement été utilisée pour le développement des armes nucléaires américaines dans les années 1950. Par exemple le petit bout de code ci-contre provient d&amp;rsquo;un programme de calcul par la
 des neutrons diffusés lors de la fission nucléaire. Et ce code est du à 
, la femme de John. Oui, encore une femme.&lt;/p&gt;
&lt;p&gt;Qui ose encore prétendre que l&amp;rsquo;informatique est un truc de mecs ?&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;&amp;ldquo;Le tissage à l’origine de l’informatique ?&amp;rdquo;
,
et
chez Sirtin&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Christian Braesch &amp;ldquo;
&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Anne-Marie Kermarrec &amp;ldquo;
&amp;rdquo;, 2015, Binaire, Le Monde&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;Steven Goodwin &amp;ldquo;
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;Eugene Eric Kim, Betty Alexandra Toole, &amp;ldquo;Lady Ada et le premier ordinateur&amp;rdquo;, 1999, Pour la science No 261,p 64‑69. (
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;L. F. Menebrea, &amp;ldquo;
&amp;rdquo; Bibliothèque Universelle de Genève,  Octobre 1842, No. 82, (
)&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;Bram Bruines &amp;ldquo;
&amp;rdquo;, 2010&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-8"&gt;&lt;/span&gt;
 sur StackOverflow&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-9"&gt;&lt;/span&gt;Raul Rojas&amp;quot;
&amp;quot;, 1998&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-10"&gt;&lt;/span&gt;
sur
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-11"&gt;&lt;/span&gt;Len Shustek &amp;ldquo;
&amp;rdquo;, 2016&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>"Contre-exemples" au théorème de Fermat-Wiles</title><link>https://drgoulu.com/2016/03/25/contre-exemples-au-theoreme-de-fermat-wiles/</link><pubDate>Fri, 25 Mar 2016 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2016/03/25/contre-exemples-au-theoreme-de-fermat-wiles/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="simpson_fermat"
src="https://drgoulu.com/posts/2016/images/simpson_fermat.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
vient de remporter le
pour sa démonstration du
qui dit qu’il n’existe pas de solution de l’équation an+bn=cn pour a,b,c,n entiers et n&amp;gt;2. Pourtant &lt;em&gt;&lt;mauvaise foi=on&gt;&lt;/em&gt; :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;il a en réalité &amp;ldquo;seulement&amp;rdquo; démontré un cas particulier du 
(aussi appelé conjecture de Shimura-Taniyama-Weil) dont le théorème de Fermat résulte directement&lt;/li&gt;
&lt;li&gt;quelques semaines après la publication des quelques 100 pages de la démonstration d&amp;rsquo;Andrew Wiles en 1995
, Homer Simpson se promène nonchalamment et en 3D devant un contre-exemple : 1782¹² + 1841¹² = 1922¹²
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cette égalité est due à 
, matheux et co-scénariste de cette
. Si on la vérifie sur une calculatrice standard, on trouve que le terme de gauche vaut 2.541210259e+39 et que celui de droite vaut&amp;hellip; 2.541210259e+39 ! C&amp;rsquo;est un contre-exemple du Grand théorème de Fermat, et la démonstration d&amp;rsquo;Andrew Wiles ne vaut pas tripette! &lt;em&gt;&lt;mauvaise foi=off&gt;&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;Mais en fait non:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Avec plus de décimales ou Python, on voit que le terme de gauche vaut 2541210258614589176288669958142428526657 et celui de droite 2541210259314801410819278649643651567616. Ca fait une gigantesque différence de 700212234530608691501223040959, mais comme elle représente moins d&amp;rsquo;un milliardième des nombres précédents (2.75 10-10 pour être précis), une bête calculatrice du siècle passé qui ne calculait qu&amp;rsquo;avec 9 chiffres significatifs ou en nombres flottants sur 32 bits pouvait considérer ce chiffre comme comparativement négligeable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;figure class="alignright" style="max-width: 420px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/18-Homer-Simpson_hu_367090b8e829538f.webp" srcset="https://drgoulu.com/posts/2016/images/18-Homer-Simpson_hu_367090b8e829538f.webp 320w, https://drgoulu.com/posts/2016/images/18-Homer-Simpson_hu_5280899a76f54864.webp 480w, https://drgoulu.com/posts/2016/images/18-Homer-Simpson_hu_722eb58d6bcdf88a.webp 620w" sizes="(max-width: 640px) 100vw, 420px" alt="quatre grands problèmes scientifiques résolus sur un seul tableau !" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;quatre grands problèmes scientifiques résolus sur un seul tableau !&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;En y regardant de plus près, on voit tout de suite que l&amp;rsquo;égalité est fausse car comme 1782 est pair, 1782¹² l&amp;rsquo;est aussi et comme 1841¹² est impair pour les mêmes raisons, la somme 782¹² + 1841¹² est impaire. Or 1922¹²  est pair&amp;hellip;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Informé de cette dernière objection, David X. Cohen a fait apparaître dans un autre épisode
le tableau noir suivant, sur lequel se trouve un autre faux contre-exemple : 3987¹² + 4365¹² = 4472¹². Belle conscience professionnelle, n&amp;rsquo;est-ce pas ?*&lt;/p&gt;
&lt;p&gt;Cette fois l&amp;rsquo;égalité proposée respecte la parité, et est &amp;ldquo;moins fausse&amp;rdquo; que la précédente puisque la différence ne représente que 1.89 10-11 des termes.&lt;/p&gt;
&lt;p&gt;Je me suis alors posé trois questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt; y&amp;rsquo;a-t-il beaucoup de tels contre-exemples ?&lt;/li&gt;
&lt;li&gt;y&amp;rsquo;a-t-il une raison particulière au fait  que les deux exemples de David X. Cohen utilisent la puissance 12 ?&lt;/li&gt;
&lt;li&gt;peut-on en trouver qui sont encore moins faux que 1.89 10-11 ?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;J&amp;rsquo;ai donc écrit un
** qui génère les triplets (a,b,c) tels que an+bn=cn est juste à 10-9 près, en balayant les nombres a et b entre 100 et 100'000 et incrémentant n à partir de 3. Ce programme s&amp;rsquo;est révélé productif au point de pouvoir répondre facilement à la question No 1 : oui, il y a des centaines de faux contre-exemples de la qualité de ceux des Simpson pour chaque p et 100 &amp;lt; a,b &amp;lt; 100'000.&lt;/p&gt;
&lt;p&gt;Le plus petit faux contre-exemple trouvé donnant une différence inférieure à 10-9 est &lt;strong&gt;1295³ + 216³ = 1297³&lt;/strong&gt; . La différence entre les deux termes 2181825071 et 2181825073 n&amp;rsquo;est que de 2 !&lt;/p&gt;
&lt;p&gt;Celui ayant la précision relative la plus élevée est  &lt;strong&gt;487674 + 245764 = 495354&lt;/strong&gt;  L&amp;rsquo;erreur relative n&amp;rsquo;est que de 5.1 10-16 soit juste deux fois plus que la précision des nombres flottants sur 64 bits de la plupart des calculatrices actuelles.&lt;/p&gt;
&lt;p&gt;A la puissance 5, le record de précision est 843855  + 834525 = 964035 (à 5.67 10-15 près), ensuite la précision des contre-exemples les moins faux diminue lentement quand la puissance augmente. A la puissance 12 il y a 1931112 + 1882112 = 2021812 (1.95 10-12) qui est meilleur que celui de David X. Cohen, qui s&amp;rsquo;est probablement limité aux nombres de 4 chiffres. Mais je n&amp;rsquo;ai rien remarqué de particulier pour n=12&lt;/p&gt;
&lt;p&gt;Voilà Andrew, comme 99.99% de la population je n&amp;rsquo;ai rien compris à ta prodigieuse démonstration
qui a nécessité 20 ans de vérifications avant que tu reçoive enfin ce prix bien mérité. Je me joins à David et Homer pour te dire juste Bravo !&lt;/p&gt;
&lt;h3 id="notes"&gt;Notes:&lt;/h3&gt;
&lt;p&gt;* la dernière ligne du tableau concerne évidemment la topologie (et non, un donut n&amp;rsquo;est pas isomorphe à une sphère), mais quelqu&amp;rsquo;un sait-il à quoi correspondent les lignes 1 et 3 ? Je doute que Cohen ait sorti ces équations de nulle part&amp;hellip;&lt;/p&gt;
&lt;p&gt;** pourquoi Python ? entre autres parce qu&amp;rsquo;il gère l&amp;rsquo;
de façon transparente : rien de spécial à faire pour manipuler des nombres énormes.&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;&lt;span class="altmetric-embed" data-badge-type="donut" data-badge-popover="right" data-doi="10.2307/2118559" style="float: right; margin: 0 0 0.5rem 0.5rem;"&gt;&lt;/span&gt;
 Andrew Wiles. &amp;ldquo;Modular elliptic curves and Fermat&amp;rsquo;s Last Theorem&amp;rdquo;, 1995, Annals of Mathematics 142 (3): 443–551. 
. (
)&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;séquence &amp;ldquo;Homer³&amp;rdquo; dans &amp;ldquo;
&amp;quot;, épisode 6 saison 7, 1995&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;
, Les Simpson épisode 2 saison 10, 1998&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;video &amp;ldquo;
&amp;rdquo; de Numberphile sur ce sujet (en anglais)&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Einsum</title><link>https://drgoulu.com/2016/01/17/einsum/</link><pubDate>Sun, 17 Jan 2016 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2016/01/17/einsum/</guid><description>&lt;figure class="alignright" style="max-width: 300px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/Einstein_laughing_hu_7e5e1e6b405da4d1.webp" srcset="https://drgoulu.com/posts/2016/images/Einstein_laughing_hu_7e5e1e6b405da4d1.webp 320w, https://drgoulu.com/posts/2016/images/Einstein_laughing_hu_bcdccbb8f7be008a.webp 480w, https://drgoulu.com/posts/2016/images/Einstein_laughing_hu_d485831c8e912c9f.webp 640w" sizes="(max-width: 640px) 100vw, 300px" alt="Sacré Albert, tu m&amp;#39;as scié encore une fois !" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Sacré Albert, tu m&amp;rsquo;as scié encore une fois !&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;L&amp;rsquo;autre jour, j&amp;rsquo;ai rencontré Einstein se promenant incognito dans un bout de code.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai commencé par ne rien comprendre à une ligne de Python trouvée dans un algo de traitement d&amp;rsquo;image:&lt;/p&gt;
&lt;p&gt;norms = np.einsum(&amp;lsquo;ij,ij-&amp;gt;i&amp;rsquo;, X, X)&lt;/p&gt;
&lt;p&gt;Alors je suis allé voir la doc de la
 à laquelle je n&amp;rsquo;ai rien compris non plus, sauf que le bout du nez d&amp;rsquo;Albert commençait à apparaître via une mystérieuse &amp;ldquo;
&amp;rdquo; qui serait &amp;ldquo;un raccourci de notation utile pour la manipulation des équations concernant des coordonnées&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Par exemple, une simple
de deux matrices A et B s&amp;rsquo;écrit  &lt;/p&gt;
\[mathjax\]&lt;p&gt; &lt;/p&gt;
$$A^i{}_j \times B^j{}_k = C^i{}_k$$&lt;p&gt; avec la notation d&amp;rsquo;Einstein, et C=np.einsum(&amp;lsquo;ij,jk-&amp;gt;ik&amp;rsquo;, A, B) avec la fonction Python correspondante.&lt;/p&gt;
&lt;p&gt;On voit que la chaîne de caractères &amp;lsquo;ij,jk-&amp;gt;ik&amp;rsquo; correspond aux indices des lignes et colonnes des matrices qui figurent en indice et &amp;ldquo;exposant&amp;rdquo; dans la notation d&amp;rsquo;Einstein, dans le même ordre que dans la représentation de la multiplication matricielle ci-dessous:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2016/images/matrix_mul_reduce_hu_41d4b3edd58b6b83.webp 320w, https://drgoulu.com/posts/2016/images/matrix_mul_reduce_hu_885ab2a394beb458.webp 480w, https://drgoulu.com/posts/2016/images/matrix_mul_reduce_hu_8b9723dbd400fc90.webp 532w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2016/images/matrix_mul_reduce_hu_41d4b3edd58b6b83.webp"
width="532"
height="133"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Pour une simple multiplication matricielle on ne voit pas trop l&amp;rsquo;avantage sur la notation &lt;/p&gt;
$$A \times B = C$$&lt;p&gt; , mais ajoutons les 3 règles supplémentaires de la notation d&amp;rsquo;Einstein appliqués à la fonction einsum (traduit de
)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Les indices qui se répètent entre
(qui peuvent avoir N dimensions) signifient que les valeurs selon ces axes doivent être multipliées. Les produits font les valeurs du tableau de sortie. Dans le cas ci-dessus on a utilisé l&amp;rsquo;indice &amp;lsquo;j&amp;rsquo; une fois pour A et une fois pour B, ce qui signifie qu&amp;rsquo;on multiplie chaque ligne de A avec chaque colonne de B&lt;/li&gt;
&lt;li&gt;Une lettre omise dans le résultat signifie que les valeurs le long de cette axe doivent être sommées. Dans le produit matriciel ci-dessus, &amp;lsquo;j&amp;rsquo; ne figure pas dans les indices du tableau de sortie. Cette omission somme le long de cette &amp;ldquo;troisième direction en réduisant de 1 la dimension du tableau final. Si la signature avait été &amp;lsquo;ij,jk-&amp;gt;ijk&amp;rsquo;, on aurait obtenu une matrice 3x3x3 des produits, et si on n&amp;rsquo;avait écrit aucun indice mais gardé la flèche &amp;lsquo;ij,jk-&amp;gt;&amp;rsquo;, on aurait obtenu la somme de tous les éléments de C&lt;/li&gt;
&lt;li&gt;On peut obtenir les axes non sommés dans n&amp;rsquo;importe quel ordre. Si on omet la flèche, einsum arrange les indices qui n&amp;rsquo;apparaissent qu&amp;rsquo;une fois dans l&amp;rsquo;ordre alphabétique, donc on aurait pu écrire juste &amp;lsquo;ij,jk&amp;rsquo; au lieu de &amp;lsquo;ij,jk-&amp;gt;ik&amp;rsquo; pour le produit de matrices &amp;ldquo;normal&amp;rdquo; ci-dessus. Mais on aurait pu écrire &amp;lsquo;ij,jk-&amp;gt;ki&amp;rsquo; si on avait souhaité obtenir la
du résultat.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Avec ces astuces, beaucoup (toutes?) les opérations vectorielles, matricielles et sur des tableaux à N dimensions peuvent être effectuées par einsum&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signature de einsum&lt;/th&gt;
&lt;th&gt;équivalent NumPy&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;(A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;renvoie le vecteur A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('i-&amp;gt;', A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sum(A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;somme des valeurs du vecteur A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('i,i-&amp;gt;i', A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A * B&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;multiplication des vecteurs A et B élément par élément&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('i,i', A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;inner(A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
de A et B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('i,j', A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;outer(A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
de A et B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij', A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;renvoie la matrice A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ji', A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A.T&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;transposée de A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ii-&amp;gt;i', A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;diag(A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;diagonale de A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ii', A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;trace(A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;somme de la diagonale de A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij-&amp;gt;', A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sum(A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;somme des valeurs de A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij-&amp;gt;j', A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sum(A, axis=0)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;somme des colonnes de A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij-&amp;gt;i', A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sum(A, axis=1)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;somme des lignes de A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij,ij-&amp;gt;ij', A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A * B&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;multiplication des matrices A et B élément par élément&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij,ji-&amp;gt;ij', A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A * B.T&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;multiplication des matrices A et B transposée élément par élément&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij,jk', A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dot(A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
de A et B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij,jk-&amp;gt;ij', A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;inner(A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;produit intérieur de A et B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij,jk-&amp;gt;ijk', A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A[:, None] * B&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;chaque ligne de A multipliée par B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;('ij,kl-&amp;gt;ijkl', A, B)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A[:, :, None, None] * B&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;chaque valeur de A multipliée par B&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Les mathématiciens apprécieront l&amp;rsquo;élégance de la notation, les physiciens pourront manipuler le
et d&amp;rsquo;autres objets mathématiques avec plus de facilité, mais en quoi la fonction einsum est-elle utile aux informaticiens ?&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;abord, elle permet d&amp;rsquo;effectuer en une seule fois des opérations qui auraient nécessité de stocker des matrices intermédiaires sans ça. De plus le code de la fonction einsum peut être fortement
 puisqu&amp;rsquo;il effectue essentiellement des produits puis des sommes sur des vecteurs. Ce n&amp;rsquo;est en définitive que l&amp;rsquo;indexation des tableaux qui change en fonction de l&amp;rsquo;opération désirée, et le tout peut être optimisé dans certains cas en jouant avec la
et la commutativité des opérations. Grâce à ceci, la plupart des opérations listées dans le tableau ci-dessus sont entre 1 et 4 fois plus rapides avec einsum qu&amp;rsquo;avec leur équivalent Numpy, jamais plus lentes. Et pour des opérations plus complexes comme le calcul de la
, l&amp;rsquo;accélération peut être d&amp;rsquo;un facteur 10 ou plus
.&lt;/p&gt;
&lt;p&gt;Si vous n&amp;rsquo;avez pas tout suivi, retenez juste ceci:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Einstein n&amp;rsquo;était
du tout. Il était un surdoué en maths qui a préféré faire de la physique, mais le fait que sa &amp;ldquo;convention de sommation&amp;rdquo; apparaisse dans les langages de programmation un siècle plus tard confirme le génie du bonhomme&lt;/li&gt;
&lt;li&gt;Que Python est LE langage de programmation scientifique qui s&amp;rsquo;impose. Oubliez Matlab, qui n&amp;rsquo;offre même pas de fonction einsum &amp;hellip;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;&lt;span class="altmetric-embed" data-badge-type="donut" data-badge-popover="right" data-doi="10.1016/S0898-1221(02)00210-9" style="float: right; margin: 0 0 0.5rem 0.5rem;"&gt;&lt;/span&gt;
Åhlander, K. (2002). &amp;ldquo;Einstein summation for multidimensional arrays&amp;rdquo;, Computers and Mathematics with Applications, 44, 1007–1017.  
 
\[[pdf](http://www.nik.no/2000/Krister.Aahlander.pdf)\]&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Alex Riley, &amp;ldquo;
&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;
sur MathWorld&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;
sur GitHub&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;
(pas simple&amp;hellip;)&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Avalanches et goniomètre à infrasons</title><link>https://drgoulu.com/2016/01/14/avalanches-et-gonimetre-a-infrasons/</link><pubDate>Thu, 14 Jan 2016 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2016/01/14/avalanches-et-gonimetre-a-infrasons/</guid><description>&lt;p&gt;Dans la liste
 se trouve une ligne &amp;ldquo;Téléopération d’un goniomètre à infrasons&amp;rdquo; sur laquelle je ne pouvais pas être très bavard car il s&amp;rsquo;agissait d&amp;rsquo;un projet militaire top secret m&amp;rsquo;avait-on dit. Mais maintenant que je trouve des informations publiques
,
sur le net concernant cette réalisation étonnante (à laquelle je n&amp;rsquo;ai contribué que 3 semaines ), j&amp;rsquo;ose en dire un peu plus.&lt;/p&gt;
&lt;p&gt;Selon
l&amp;rsquo;histoire a commencé par le projet militaire, mais à ce qu&amp;rsquo;on m&amp;rsquo;avait dit, ce sont plutôt des recherches sur les avalanches qui  ont lancé le projet militaire. L&amp;rsquo;idée d&amp;rsquo;un chercheur au
était de détecter des avalanches, voire d&amp;rsquo;avertir de leur imminence en mesurant les infrasons provoqués par le tassement ou la rupture du manteau neigeux. Mais il s&amp;rsquo;est rapidement aperçu que ses mesures d&amp;rsquo;infrasons en altitude étaient polluées par beaucoup de bruits parasites : bang supersoniques, explosions, hélicoptères &amp;hellip;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Hélicoptères ? Votre microphone à infrasons entend des hélicoptères volant dans les vallées alpines, sous les radars ?&amp;rdquo; Ni une ni deux, l&amp;rsquo;armée suisse finance le projet et construit un système de mesure baptisé &amp;ldquo;Peiler&amp;rdquo;, composé de plusieurs micros espacés de quelques dizaines de mètres près des pistes d&amp;rsquo;
. En mesurant le décalage temporel (
) des sons captés, un logiciel de traitement des signaux ( en
, mon
) pouvait déterminer la direction de la source.&lt;/p&gt;
&lt;p&gt;Par exemple dans le
ci-dessous un œil entraîné ou un logiciel bien foutu peut distinguer:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Un hélicoptère Lama ou Alouette à turbine, dont les pales génèrent du 17.5 Hz, avec un
visible quand l&amp;rsquo;hélicoptère se déplace&lt;/li&gt;
&lt;li&gt;Un autre hélicoptère, stationnaire.&lt;/li&gt;
&lt;li&gt;Une série d&amp;rsquo;explosions à 15h14m35s, azimut 239°, 15h16m28s, azimut 264°, et d&amp;rsquo;autres explosions à 15h12m10s,15h14m12s, 15h15m09s.&lt;/li&gt;
&lt;li&gt;Une avalanche tout de même à 15h16m36s, durant environ 1min46s.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="aligncenter" style="max-width: 762px; width: 100%;"&gt;&lt;a href="http://www.arfang.com/index.php?nav=home&amp;amp;lang=fr" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2016/images/histogramme_hu_fcbfc50f63ffdd9c.webp" srcset="https://drgoulu.com/posts/2016/images/histogramme_hu_fcbfc50f63ffdd9c.webp 320w, https://drgoulu.com/posts/2016/images/histogramme_hu_40480b42d693fde1.webp 480w, https://drgoulu.com/posts/2016/images/histogramme_hu_c0b5d739c9cd294b.webp 697w" sizes="(max-width: 640px) 100vw, 762px" alt="source : Arfang (1)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;source : Arfang (1)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Les azimuts ne sont pas très précis car le vent dévie les sons, mais on peut partiellement en tenir compte avec des données météo.&lt;/p&gt;
&lt;p&gt;Pour déterminer la distance, et donc la position de la source, c&amp;rsquo;est plus compliqué car il faudrait tenir compte de l&amp;rsquo;atténuation du son une fois qu&amp;rsquo;on en connait l&amp;rsquo;origine. A l&amp;rsquo;époque où j&amp;rsquo;ai effectué mon service militaire on détectait certaines explosions tous les jours aux même heures, et à peu près au même azimut. On s&amp;rsquo;est aperçus que c&amp;rsquo;étaient les bang supersoniques du Concorde qui partait d&amp;rsquo;Orly pour Rio de Janeiro ! Mais comme les sons mettent une demi heure pour faire les 600 km de Paris au Valais, les militaires ne pouvaient pas faire autre chose que juste compter des bangs supersoniques de pratiquement tous les vols militaires en Europe&amp;hellip; Ce système captait à l&amp;rsquo;époque des bruits diffus et mal localisés arrivant de l&amp;rsquo;Est en quasi permanence. Finalement on a compris qu&amp;rsquo;ils provenaient du
, à plus de 1000 km&amp;hellip;&lt;/p&gt;
&lt;p&gt;Il faut dire qu&amp;rsquo;à l&amp;rsquo;altitude en question (2300m), l&amp;rsquo;atmosphère se comporte un peu comme un
: les sons émis plus haut et plus bas se concentrent et se propagent bien à cette altitude. La même chose se produit dans la mer autour de 900m de profondeur
, où on place des dispositifs d&amp;rsquo;écoute de sous-marins probablement très similaires au &amp;ldquo;Peiler&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;La technologie d&amp;rsquo;aujourd&amp;rsquo;hui a permis le développement de l&amp;rsquo;application civile de détection des avalanches
, et c&amp;rsquo;est tant mieux. Pour moi ce projet avait été l&amp;rsquo;occasion de découvrir un peu l&amp;rsquo;acoustique, mais j&amp;rsquo;y repense surtout lorsqu&amp;rsquo;on parle de recherche militaire, ou de financement de recherches par l&amp;rsquo;armée.&lt;/p&gt;
&lt;p&gt;Souvent une même découverte débouche à la fois  sur des applications civiles et militaires. Vouloir empêcher l&amp;rsquo;application militaire, c&amp;rsquo;est parfois retarder, voire condamner l&amp;rsquo;application civile car c&amp;rsquo;est un fait : les militaires ont du soutien politique, et beaucoup d&amp;rsquo;argent qu&amp;rsquo;ils sont prêts à investir très en amont, en prenant beaucoup de risques. Ils ne veulent pas forcément bloquer l&amp;rsquo;application civile ni même un retour sur investissement, ils veulent juste être les premiers à utiliser la technologie. Si ça ne concerne pas directement des armes ou ne soulève pas de gros problème éthique, pourquoi se priver d&amp;rsquo;un financement somme toute tout aussi étatique que les fonds pour la recherche nationale ?&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;
 , site web de la solution commerciale&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Chritin, V., &amp;amp; Rossi, M. (1995). &amp;ldquo;
&amp;rdquo;. Symposium International Sciences et Montagne, Les Apports Scientifiques à La Sécurité Neige, Glace et Avalanches.  http://infoscience.epfl.ch/record/96418&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Olivier Le Calvé &amp;ldquo;
&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;&lt;span class="altmetric-embed" data-badge-type="donut" data-badge-popover="right" data-doi="10.1117/12.2241095" style="float: right; margin: 0 0 0.5rem 0.5rem;"&gt;&lt;/span&gt;
Chritin, V., Van Lancker, E., Wellig, P., &amp;amp; Ott, B. (2016). High infrasonic goniometry applied to the detection of a helicopter in a high activity environment. In SPIE International Society for Optics and Photonics SECURITY + DEFENCE Conference (Vol. 10, p. 999703). Edinburgh, United Kingdom: SPIE International Society for Optics and Photonics. DOI&amp;gt;
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Pour la Science de Décembre</title><link>https://drgoulu.com/2014/12/07/pour-la-science-de-decembre/</link><pubDate>Sun, 07 Dec 2014 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2014/12/07/pour-la-science-de-decembre/</guid><description>&lt;p&gt;
D&amp;rsquo;habitude je déguste mon numéro de &amp;ldquo;Pour la Science&amp;rdquo; petit à petit pendant le mois. Mais là j&amp;rsquo;ai dévoré le
en quelques heures de voyage en train : il est plein d&amp;rsquo;articles passionnants sur des sujets très variés.&lt;/p&gt;
&lt;p&gt;Dans &amp;ldquo;
&amp;rdquo;, Niayesh Afshordi, Robert Mann et Razieh Pourhasan de l&amp;rsquo;
 proposent une idée assez stupéfiante : notre univers à 3 dimensions serait issu de l&amp;rsquo;effondrement d&amp;rsquo;une étoile à 4 dimensions en trou noir&amp;hellip; Selon eux, mathématiquement du moins, l&amp;rsquo;horizon des événements d&amp;rsquo;un trou noir à 4 dimensions correspond notre univers à 3 dimensions, ce qui permet d&amp;rsquo;éliminer la &amp;ldquo;singularité&amp;rdquo; des trous noirs et du Big Bang en même temps, et de ne plus avoir besoin de postuler une
. Je ne sais pas vraiment quoi penser de cette théorie qui me sembler
qu&amp;rsquo;elle n&amp;rsquo;en résout, mais comme je suis en train de lire &lt;span class="openbook_template5"&gt;&lt;a href="http://openlibrary.org/authors/OL536542A/Lee_Smolin" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Lee Smolin&lt;/a&gt; (2014). &lt;a href="http://openlibrary.org/books/OL25448782M/La_Renaissance_du_Temps" title="Click to view title in Open Library" target="_blank" rel="noopener"&gt;La Renaissance du Temps: pour en finir avec la crise de la physique&lt;/a&gt;. Dunod.&lt;span class="Z3988" title="ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=book&amp;amp;rft.btitle=La+Renaissance+du+Temps%3A+pour+en+finir+avec+la+crise+de+la+physique&amp;amp;rft.isbn=9782100706679&amp;amp;rft.au=Lee+Smolin&amp;amp;rft.pub=Dunod&amp;amp;rft.date=2014"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; qui la pousse encore plus loin, j&amp;rsquo;en reparlerai plus tard.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;article &amp;ldquo;
&amp;rdquo; m&amp;rsquo;a littéralement scotché. Kim Ta Phuoc, Cédric Thaury (tous deux du
) et Sébastien Corde y expliquent comment faire un
de quelques mètres de long, et à la différence de l&amp;rsquo;article précédent, l&amp;rsquo;expérience a été faite, et ça marche ! Le principe est l&amp;rsquo;
: un laser produisant des impulsions extrêmement puissantes mais tout aussi extrêmement brèves. En traversant un
, l&amp;rsquo;impulsion crée des ondes de densité dans le champ électrique un peu comme un bateau crée des vagues de sillage, et sur ces vagues, les électrons du plasma se mettent à &amp;ldquo;surfer&amp;rdquo;, accélérant à plusieurs centaines de MeV en quelques millimètres seulement au lieu des kilomètres requis avec un accélérateur &amp;ldquo;classique&amp;rdquo;.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 674px; width: 100%;"&gt;&lt;a href="images/4686339e6184000c00654c548b075d59.jpg" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2014/images/4686339e6184000c00654c548b075d59_hu_9b19e0938bbf7972.webp" srcset="https://drgoulu.com/posts/2014/images/4686339e6184000c00654c548b075d59_hu_9b19e0938bbf7972.webp 320w, https://drgoulu.com/posts/2014/images/4686339e6184000c00654c548b075d59_hu_82e879febac8041d.webp 480w, https://drgoulu.com/posts/2014/images/4686339e6184000c00654c548b075d59_hu_44f8c8021b03cfa0.webp 674w" sizes="(max-width: 640px) 100vw, 674px" alt="http://www.pourlascience.fr/ewb_pages/a/article-produire-des-rayons-x-et-gamma-sur-une-table-33582.php" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Le champ électrique qui se forme dans un gaz atomique derrière une impulsion laser ultrabrève est montré ici sous la forme de vagues bleues que descendent des paquets d&amp;rsquo;électrons en voie d&amp;rsquo;accélération. C&amp;rsquo;est le principe des accélérateurs laser-plasma. (illustration Pour La Science)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Par un mécanisme que je n&amp;rsquo;ai pas bien compris, tous les électrons accélèrent en fait en zigzaguant à la même fréquence, et à chaque virage émettent chacun un photon à haute énergie. On obtient ainsi des impulsions de
voire 
d&amp;rsquo;une très bonne qualité, et dont la brièveté est un avantage dans beaucoup d&amp;rsquo;applications. Outre la radiothérapie, on devrait arriver bientôt à faire de la
sur des molécules organiques délicates, voire &amp;ldquo;in vivo&amp;rdquo;. Et quand les physiciens se mettent imaginer comment filmer des molécules dont les liaisons chimiques seraient brisées une à une, je deviens juste impatient de voir ça !&lt;/p&gt;
&lt;p&gt;&amp;ldquo;
&amp;rdquo; est un peu la réponse du berger à la berger : &amp;ldquo;mon
est plus puissant que ton laser-plasma&amp;rdquo;, expliquent Nora Berrah et Philip Bucksbaum. Ils décrivent comment un projet militaire de &amp;ldquo;guerre des étoiles&amp;rdquo; démarré sous Reagan a (tout de même&amp;hellip;) résulté en quelque chose d&amp;rsquo;utile sous la forme du 
LCLS qui a été ajouté à l&amp;rsquo;accélérateur linéaire de Stanford pour devenir la plus intense source de rayons X artificiels. Une des applications les plus sidérantes de l&amp;rsquo;engin est la production d&amp;rsquo; &amp;ldquo;atome creux&amp;rdquo;. C&amp;rsquo;est un phénomène incroyable : les
sont transparentes aux rayons X, sauf la couche K, la plus interne. En exposant un atome à un flux de rayons X, les deux électrons de cette couche se font &amp;ldquo;souffler&amp;rdquo; hors de l&amp;rsquo;atome, qui devient &amp;ldquo;creux&amp;rdquo;. Deux électrons de la couche L juste supérieure vont tomber à la couche K, créant un vide de deux électrons rempli par 2 électrons de la couche M etc. Mais si le rayonnement X est suffisamment intense, la couche K se fait &amp;ldquo;souffler&amp;rdquo; au fur et à mesure, et l&amp;rsquo;atome perd tous ses électrons &amp;ldquo;par l&amp;rsquo;intérieur&amp;rdquo;. Ca s&amp;rsquo;appelle la &amp;ldquo;relaxation Auger&amp;rdquo;, ça ne dure que quelques
secondes, et là encore les physiciens pensent arriver à &amp;ldquo;filmer&amp;rdquo; le phénomène à l&amp;rsquo;aide d&amp;rsquo;impulsions X ultra brèves.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;
, le jeu se poursuit&amp;rdquo; est un hommage au génial auteur de 
qui aurait eu 100 ans cette année. Sa rubrique était l&amp;rsquo;une des raisons pour lesquelles je piquais les &amp;ldquo;Pour la Science&amp;rdquo; de mon père jusqu&amp;rsquo;en 1981. il m&amp;rsquo;a fait découvrir le
et le
entre autres choses qui m&amp;rsquo;intéressent
. L&amp;rsquo;article montre aussi comment cet autodidacte a saisi l&amp;rsquo;opportunité d&amp;rsquo;un article (sur les
) pour consacrer sa vie à sa passion en développant une correspondance épistolaire fertile en articles passionnants avec des gens aussi variés que Dali etc&amp;hellip; Je suis très heureux d&amp;rsquo;
 que cette ouverture se perpétue jusqu&amp;rsquo;à Jean-Paul Delahaye qui tient la rubrique actuellement.&lt;/p&gt;
&lt;p&gt;Jean-Paul se demande ce mois-ci sil existe &amp;ldquo;
&amp;rdquo; La
d&amp;rsquo;Howard Gardner se heurte à la vision des informaticiens d&amp;rsquo;une seule intelligence, testable par le
, voire quantifiable par des taux de compression des données comme l&amp;rsquo;a proposé
. Dans cette optique, 
 propose une mesure mathématique universelle d&amp;rsquo;intelligence : &amp;ldquo;la réussite moyenne d&amp;rsquo;une stratégie dans l&amp;rsquo;ensemble des environnements envisageables.&amp;rdquo; (voir
). Séduisant, mais pas facile à mesurer en pratique. En attendant une meilleure idée, Hutter propose un
 à partager entre les auteurs de programmes capables de comprimer le contenu de la Wikipédia le mieux possible. Il explique est que pour bien comprimer (=résumer) des données, il faut les comprendre. Je vais évidemment m&amp;rsquo;attaquer à ce challenge, je vous en recauserai en 201x &amp;hellip;&lt;/p&gt;
&lt;p&gt;Intelligence toujours dans &amp;ldquo;
&amp;rdquo; où Anna Smet, Catherine Hobaiter et Richard Byrne font le point sur les capacités cognitives des pachydermes. Il s&amp;rsquo;avèrent qu&amp;rsquo;ils sont capables de distinguer les ethnies des humains d&amp;rsquo;après l&amp;rsquo;habillement, de reconnaître plus d&amp;rsquo;une centaine de congénères d&amp;rsquo;après les infrasons qu&amp;rsquo;ils produisent, et il semblerait bien que ce soit les seuls animaux qui aient certains égards pour les squelettes de leurs ancêtres. Un article émouvant et qui pousse évidemment à la réflexion sur nos intelligences naturelles et artificielles.&lt;/p&gt;
&lt;p&gt;Pour terminer sur une note ludique, nos
 signent un article sur les &amp;ldquo;
&amp;rdquo; type Beyblade qui enchantent nos bambins. (c&amp;rsquo;est encore la mode cette année ?) Les caractéristiques des toupies leurs confèrent des avantages et inconvénients à bien balancer par rapport aux toupies adverses lors d&amp;rsquo;un combat. Me suis demandé si des 
 ne rendraient pas le jeu encore plus &amp;ldquo;intéressant&amp;rdquo;&amp;hellip;&lt;/p&gt;
&lt;p&gt;Bref, que des bonnes choses dans ce numéro. Foncez chez votre marchand de journaux !&lt;/p&gt;</description></item><item><title>Trop-plein de Juin</title><link>https://drgoulu.com/2014/06/29/trop-plein-de-juin-2/</link><pubDate>Sun, 29 Jun 2014 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2014/06/29/trop-plein-de-juin-2/</guid><description>&lt;p&gt;Les articles que je n&amp;rsquo;ai pas eu le temps de finir ce mois-ci.&lt;/p&gt;
&lt;h3 id="la-disparition-de-la-vie-sur-terre"&gt;La disparition de la vie sur Terre&lt;/h3&gt;
&lt;p&gt;Celui-là je l&amp;rsquo;ai fini, mais
. J&amp;rsquo;ai appris plein de choses extraordinaires sur les
en l&amp;rsquo;écrivant et je voulais en faire une version &amp;ldquo;pour les grands ici&amp;rdquo;, avec des liens, des références etc. Mais finalement l&amp;rsquo;article sur Kidi&amp;rsquo;Science peut vous convenir aussi, et je vais plutôt écrire sur l&amp;rsquo;
à l&amp;rsquo;occasion.&lt;/p&gt;
&lt;h3 id="foundations-of-ultraprecision-mechanisms-design"&gt;Foundations of Ultraprecision Mechanisms Design&lt;/h3&gt;
&lt;p&gt;Retrouvé avec délice une authentique bible de la microtechnique de précision : &lt;span class="openbook_template5"&gt;&lt;a href="http://openlibrary.org/authors/OL3200092A/Stuart_T._Smith" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Stuart T. Smith&lt;/a&gt; (1994). &lt;a href="http://openlibrary.org/books/OL9768075M/Foundations_of_Ultra-Precision_Mechanism_Design_(Developments_in_Nanotechnology_Vol_2)" title="Click to view title in Open Library" target="_blank" rel="noopener"&gt;Foundations of Ultra-Precision Mechanism Design (Developments in Nanotechnology, Vol 2)&lt;/a&gt;. CRC.&lt;span class="Z3988" title="ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=book&amp;amp;rft.btitle=Foundations+of+Ultra-Precision+Mechanism+Design+%28Developments+in+Nanotechnology%2C+Vol+2%29&amp;amp;rft.isbn=9782884490016&amp;amp;rft.au=Stuart+T.+Smith&amp;amp;rft.pub=CRC&amp;amp;rft.date=1994"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Le chapitre le plus intéressant est le huitième, consacré à la
. On y montre que les caractéristiques habituelles des matériaux (densité, module d&amp;rsquo;élasticité, conduction thermique etc.) interviennent rarement seules lorsqu&amp;rsquo;on cherche un matériau adapté à la construction d&amp;rsquo;un système pointu. Beaucoup plus souvent on a besoin d&amp;rsquo;un compromis entre plusieurs de ces caractéristiques que l&amp;rsquo;on peut représenter dans un &amp;ldquo;diagramme d&amp;rsquo;
&amp;rdquo; comme celui ci-dessous:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Material lektion 1. HT2 7,5 p halvfart Janne Carlsson - PDF Free &amp;hellip;"
srcset="https://drgoulu.com/posts/2014/images/8-0_hu_dff3d35d981d9af3.webp 320w, https://drgoulu.com/posts/2014/images/8-0_hu_336973c9e38f301a.webp 480w, https://drgoulu.com/posts/2014/images/8-0_hu_2e37cab70e0e1e89.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2014/images/8-0_hu_dff3d35d981d9af3.webp"
width="760"
height="562"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Le livre va plus loin en normalisant les matériaux par rapport à un matériau de référence, ce qui permet de comparer facilement les matériaux entre eux.&lt;/p&gt;
&lt;p&gt;Pour la petite histoire, c&amp;rsquo;est grâce aux tables figurant dans ce chapitre que j&amp;rsquo;avais convaincu mon chef de faire une
. Le titane, c&amp;rsquo;est plus cher que l&amp;rsquo;acier au kilo, mais comme son σ/E est deux fois meilleur que celui de l&amp;rsquo;acier ressort, une pièce flexible en titane peut être 2x plus petite dans toutes les dimensions, donc 8 fois moins volumineuse et grâce à sa faible densité presque 15 fois moins lourde qu&amp;rsquo;en acier.&lt;/p&gt;
&lt;p&gt;(Edit du 14.7.2014 : j&amp;rsquo;ai recréé
)&lt;/p&gt;
&lt;p&gt;(Edit du 15.1.2015 : trouvé le logiciel
de la société Granta basé sur les travaux d&amp;rsquo;Ashby)&lt;/p&gt;
&lt;h3 id="pourquoi-ne-pas-faire-confiance-à-une-calculatrice"&gt;Pourquoi ne pas faire confiance à une calculatrice&lt;/h3&gt;
&lt;p&gt;David Madore donne sur son blog un
avec la plupart des calculatrices : sin((1+√2)200×π)&lt;/p&gt;
&lt;p&gt;Je ne connaissais pas cet exemple mais effectivement toute formule dans laquelle intervient un très grand nombre ou un très petit est potentiellement dangereuse à cause des erreurs d&amp;rsquo;arrondi. Je repense toujours à &amp;ldquo;
&amp;rdquo; lorsqu&amp;rsquo;un tel risque pourrait exister dans mon code&amp;hellip;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai tout de même essayé Python sur l&amp;rsquo;exemple de David, avec un résultat faux, sans surprise. Par contre ma calculatrice préférée
m&amp;rsquo;a un peu déçue : elle a renvoyé NaN (Not a Number) alors qu&amp;rsquo;elle est censée travailler avec autant de décimales que nécessaire. En creusant j&amp;rsquo;ai vu qu&amp;rsquo;elle arrive &amp;ldquo;presque&amp;rdquo; car&lt;/p&gt;
&lt;p&gt;(sqrt(2)+1)^200 donne 35903523178476671398039972962187754894463006960216912732142716329467686943874.003&lt;/p&gt;
&lt;p&gt;mais ensuite elle n&amp;rsquo;arrive pas à calculer le sinus de ça *pi.&lt;/p&gt;
&lt;p&gt;Le seul outil que j&amp;rsquo;utilise (pas assez apparemment) qui m&amp;rsquo;ait donné la &amp;ldquo;bonne&amp;rdquo; valeur est
(donc Mathematica doit probablement s&amp;rsquo;en sortir aussi):&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="requins-baleines-touristes-et-rolex-awards"&gt;Requins-baleines, touristes et Rolex awards&lt;/h3&gt;
&lt;p&gt;Sinon j&amp;rsquo;ai vu un reportage extraordinaire sur les requins-baleines et j&amp;rsquo;avais commencé un article en traduisant le communiqué de presse ci-dessous:&lt;/p&gt;
&lt;p&gt;En 2006, les
 ont
, un scientifique australien spécialiste de la conservation marine, des 
en particulier. Dès 2004, il créé un système d&amp;rsquo;identification de  ces géants des mers par les photos prises par les habitants des côtes, les plongeurs, et les touristes assez chanceux pour les croiser.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Après dix ans d&amp;rsquo;activité de son projet
, environ 5000 individus ont été identifiés, grâce à plus de 25'000 observations et 50'000 photos, faites dans 54 pays. Une centaine de requins-baleines de plus sont identifiés chaque année Par comparaison, entre le 19ème siècle et le milieu des années 1980, seules 350 observations avaient été faites de ce mystérieux animal. C’est donc un franc succès pour Brad Norman, qui se félicite autant pour cette nouvelle masse de données que pour l’intérêt de l’opération pour la sensibilisation du grand public à la protection de la faune.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Le nombre de personnes qui ont contribué à la base de données d&amp;rsquo;observations de requins-baleines dépasse les 4000, dans des pays aussi distants que le Qatar et Israel, la Thaïlande l&amp;rsquo;Australie et les Galapagos&amp;rdquo; selon Norman. Il a joué un rôle crucial dans l&amp;rsquo;étude de cette espèce grâce à une méthode innovante pour identifier les requins-baleines, en utilisant un algorithme développé pour cartographier les étoiles que ses collègues, dont un astronome de la NASA, ont adapté pour reconnaître les taches blanches spécifiques à la peau de chaque individu.&lt;/p&gt;
&lt;p&gt;Tout le monde est encouragé à prendre des photos des requins-baleines dans l&amp;rsquo;océan et de les uploader sur le site web, ce qui permet de tracer les déplacements des animaux. &amp;ldquo;C&amp;rsquo;est une excellente manière d&amp;rsquo;impliquer le public, spécialement les enfants&amp;rdquo; explique Norman. &amp;ldquo;Nous identifions de nouveaux requins baleines chaque année. En 2011, 500 nouveaux animaux ont été identifiés. En 2012, le nombre a été de 722, et en 2013, 774 ont été identifiés.&lt;/p&gt;
&lt;p&gt;L’équipe de chercheurs a décidé de renforcer cette stratégie en mettant au point une application smartphone. Cette appli, qui devrait être lancée courant 2014, permettra de prendre une photo sous-marine d&amp;rsquo;un requin baleine puis de la télécharger directement sur le site du projet.&lt;/p&gt;
&lt;p&gt;source :
&lt;/p&gt;</description></item><item><title>L'espace infini entre les mots</title><link>https://drgoulu.com/2014/05/18/lespace-infini-entre-les-mots/</link><pubDate>Sun, 18 May 2014 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2014/05/18/lespace-infini-entre-les-mots/</guid><description>&lt;p&gt;&lt;em&gt;Bon, ça fait juste trop longtemps que je fais toutes sortes de choses passionnantes au lieu d&amp;rsquo;avancer sur les 4 ou 5 brouillons d&amp;rsquo;articles pour ce blog&amp;hellip; Alors je vous livre en vitesse une traduction du dernier article du blog Coding Horror, intitulé &amp;ldquo;
&amp;rdquo;
. Je le trouve excellent (l&amp;rsquo;article, et le blog) :&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;La performance des ordinateurs est une sorte de
Vous êtes toujours en train d&amp;rsquo;attendre l&amp;rsquo;une de ces 4 choses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Disque&lt;/li&gt;
&lt;li&gt;Processeur&lt;/li&gt;
&lt;li&gt;Mémoire&lt;/li&gt;
&lt;li&gt;Réseau&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mais laquelle ? Et combien de temps faudra-t&amp;rsquo;il attendre ? Et que faire pendant que vous attendez ?&lt;/p&gt;
&lt;p&gt;Avez-vous vu le film
? Si non, vous devriez. Il est bien. L&amp;rsquo;une de mes scènes préférée est quand l&amp;rsquo;
décrit comme il devient difficile de communiquer avec les humains :&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;C&amp;rsquo;est comme si je lisais un livre&amp;hellip; c&amp;rsquo;est un livre que j&amp;rsquo;aime profondément, mais je le lis si lentement, maintenant. les mots sont loin les uns des autres, l&amp;rsquo;espace entre les mots est presque infini. je peux toujours vous ressentir&amp;hellip; et les mots de notre histoire &amp;hellip; mais cet dans cet espace sans fin entre les mots que je me trouve maintenant.. C&amp;rsquo;est un endroit qui n&amp;rsquo;est pas dans le monde physique. C&amp;rsquo;est là où se trouve tout ce dont j&amp;rsquo;ignorais l&amp;rsquo;existence. je vous aime tant. Mais c&amp;rsquo;est là que je suis désormais. Et c&amp;rsquo;est ce que je suis désormais. Et j&amp;rsquo;ai besoin que vous me laissiez partir. Même si je le voulais, je ne peux plus vivre votre livre plus longtemps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J&amp;rsquo;ai de sérieuses réserves sur l&amp;rsquo;environnement de travail décrit dans &amp;ldquo;Her&amp;rdquo;, où tout le monde passe toute ses journées à murmurer frénétiquement à son ordinateur, mais il y a une très profonde vérité dans cette scène clé.  C&amp;rsquo;est que l&amp;rsquo;espace infini &amp;ldquo;entre&amp;rdquo; ce que nous autres humains ressentons comme le temps est l&amp;rsquo; &amp;ldquo;endroit&amp;rdquo; où les ordinateurs passent tout leur temps. C&amp;rsquo;est une échelle de temps totalement différente.&lt;/p&gt;
&lt;p&gt;Dans le livre &amp;ldquo;Systems Performance: Enterprise and the Cloud&amp;rdquo; 
se trouve une table qui illustre très bien l&amp;rsquo;énorme différence entre ces différences de temps. Ramenons tout à l&amp;rsquo;échelle de la seconde:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;1 cycle
&lt;/th&gt;
&lt;th&gt;0.3
&lt;/th&gt;
&lt;th&gt;1 s&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;accès au [cache](
émoire_cache) L1&lt;/td&gt;
&lt;td&gt;0.9 ns&lt;/td&gt;
&lt;td&gt;3 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;accès au cache L2&lt;/td&gt;
&lt;td&gt;2.8 ns&lt;/td&gt;
&lt;td&gt;9 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;accès au cache L3&lt;/td&gt;
&lt;td&gt;12.9 ns&lt;/td&gt;
&lt;td&gt;43 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;accès à la
&lt;/td&gt;
&lt;td&gt;120 ns&lt;/td&gt;
&lt;td&gt;6 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entrée/sortie à un disque [SSD](
)&lt;/td&gt;
&lt;td&gt;50-150 μs&lt;/td&gt;
&lt;td&gt;2-6 jours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;entrée/sortie à un
&lt;/td&gt;
&lt;td&gt;1-10 ms&lt;/td&gt;
&lt;td&gt;1-12 mois&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internet: San Francisco - New-York&lt;/td&gt;
&lt;td&gt;40 ms&lt;/td&gt;
&lt;td&gt;4 ans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internet: San Francisco - Angleterre&lt;/td&gt;
&lt;td&gt;81 ms&lt;/td&gt;
&lt;td&gt;8 ans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internet: San Francisco - Angleterre&lt;/td&gt;
&lt;td&gt;183 ms&lt;/td&gt;
&lt;td&gt;19 ans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[Reboot](
) d&amp;rsquo;un OS [virtualisé](
)&lt;/td&gt;
&lt;td&gt;4 s&lt;/td&gt;
&lt;td&gt;423 ans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;time-out d&amp;rsquo;une commande
&lt;/td&gt;
&lt;td&gt;30 s&lt;/td&gt;
&lt;td&gt;3000 ans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reboot d&amp;rsquo;un ordinateur virtualisé&lt;/td&gt;
&lt;td&gt;40 s&lt;/td&gt;
&lt;td&gt;4000 ans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reboot d&amp;rsquo;un ordinateur physique&lt;/td&gt;
&lt;td&gt;5 m&lt;/td&gt;
&lt;td&gt;32 millénaires&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Les temps &amp;ldquo;internet&amp;rdquo; ci-dessus sont quelque peu optimistes. Si vous consultez 
, le temps de San Francisco à New-York est plutôt autour de 70ms. Je vais donc doubler les valeurs internet de ce tableau.&lt;/p&gt;
&lt;p&gt;La
est une chose, mais il faut aussi considérer 
.&lt;/p&gt;
&lt;p&gt;A ce propos, le grand
, avait une
 
. Si on ramène ces temps à des distances où se trouvent les données à accéder, alors un accès à un disque est équivalent à chercher des données sur Pluton.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2014/images/9f9369fc325a87b3c40a63c352f2bf42_hu_bc84cbb922893e25.webp 320w, https://drgoulu.com/posts/2014/images/9f9369fc325a87b3c40a63c352f2bf42_hu_69f5c5dd2611f83d.webp 480w, https://drgoulu.com/posts/2014/images/9f9369fc325a87b3c40a63c352f2bf42_hu_3de9e9f0b2ea7bd3.webp 666w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2014/images/9f9369fc325a87b3c40a63c352f2bf42_hu_bc84cbb922893e25.webp"
width="666"
height="547"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;il se référait probablement aux traditionnels disques rotatifs rouillants, alors ajustons ces points extrêmes à la situation d&amp;rsquo;aujourd&amp;rsquo;hui :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Distance à Pluton : 7.5 milliard de kilomètres.&lt;/li&gt;
&lt;li&gt;Meilleure performance d&amp;rsquo;un disque rotatif (
) par rapport au meilleur disque SSD PCI Express (
). C&amp;rsquo;est 10x mieux&lt;/li&gt;
&lt;li&gt;Nouvelle distance : 750 millions de kilomètres&lt;/li&gt;
&lt;li&gt;Distance à Jupiter : 750 millions de kilomètres&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Donc, au lieu d&amp;rsquo;aller jusqu&amp;rsquo;à Pluton pour chercher nos données en 1999, aujourd&amp;rsquo;hui nous n&amp;rsquo;avons plus besoin que d&amp;rsquo;aller jusqu&amp;rsquo;à Jupiter.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2014/images/e05c37dd7cfbd5eed37ba8476171d20f_hu_126f42f34fa64ac0.webp 320w, https://drgoulu.com/posts/2014/images/e05c37dd7cfbd5eed37ba8476171d20f_hu_e4fbf27669179773.webp 480w, https://drgoulu.com/posts/2014/images/e05c37dd7cfbd5eed37ba8476171d20f_hu_6a84fa3660e684dc.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2014/images/e05c37dd7cfbd5eed37ba8476171d20f_hu_126f42f34fa64ac0.webp"
width="760"
height="224"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Ceci pour la performance des disques en une décennie. Et quelle est laccélération des processeurs, de la mémoire et des réseaux dans ce même temps ? Est-ce qu&amp;rsquo;une amélioration d&amp;rsquo;un facteur 10 ou 100 fait vraiment une différence dans ce grand espace infini de temps dans lequel les ordinateurs travaillent ?&lt;/p&gt;
&lt;p&gt;Pour les ordinateurs, nous autres humains vivons dans une échelle de temps totalement différente, presque un
. Ce qui déforme notre perception. Plus les ordinateurs vont vite, plus cette disparité de temps s&amp;rsquo;accroît.&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Jeff Atwood, &amp;ldquo;
&amp;rdquo;, 2014, Coding Horror&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;&lt;span class="openbook_template5"&gt;&lt;a href="http://openlibrary.org/authors/OL2653217A/Brendan_Gregg" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Brendan Gregg&lt;/a&gt; (2013). &lt;a href="http://openlibrary.org/books/OL25443870M/Systems_Performance" title="Click to view title in Open Library" target="_blank" rel="noopener"&gt;Systems Performance: Enterprise and the Cloud&lt;/a&gt;. Prenctice-Hall.&lt;span class="Z3988" title="ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=book&amp;amp;rft.btitle=Systems+Performance%3A+Enterprise+and+the+Cloud&amp;amp;rft.isbn=9780133390094&amp;amp;rft.au=Brendan+Gregg&amp;amp;rft.pub=Prenctice-Hall&amp;amp;rft.date=2013"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Jim Gray, &amp;ldquo;
&amp;rdquo;, 1999,
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Bits en vrac</title><link>https://drgoulu.com/2014/04/09/bits-en-vrac/</link><pubDate>Wed, 09 Apr 2014 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2014/04/09/bits-en-vrac/</guid><description>&lt;p&gt;Quelques découvertes informatiques en vrac&lt;/p&gt;
&lt;h3 id="les-formulaires-google-drive"&gt;Les formulaires Google Drive&lt;/h3&gt;
&lt;p&gt;Le 
 m&amp;rsquo;a permis d&amp;rsquo;expérimenter la puissance et la facilité d&amp;rsquo;utilisation des
 . C&amp;rsquo;est simplement génial :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;dans
, on crée un document de type formulaire&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;on se retrouve dans un éditeur permettant de composer le formulaire. On peut définir le type de chaque champ : texte, choix multiple, cases à cocher, échelle d&amp;rsquo;évaluation, tout y est. On peut ajouter des règles de validation et des actions à effectuer en fonction des réponses&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 480px; width: 100%;"&gt;&lt;a href="https://drgoulu.com/wp-content/uploads/2014/04/form-editor1.png" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2014/images/form-editor1_hu_a9cf01977cab59c3.webp" srcset="https://drgoulu.com/posts/2014/images/form-editor1_hu_a9cf01977cab59c3.webp 320w, https://drgoulu.com/posts/2014/images/form-editor1_hu_2c5aa1c6d7189fc8.webp 480w, https://drgoulu.com/posts/2014/images/form-editor1_hu_f1e314e3652ae458.webp 662w" sizes="(max-width: 640px) 100vw, 480px" alt="Editeur de Formulaire Google Drive" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Editeur de Formulaire Google Drive&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En cliquant le bouton &amp;ldquo;afficher le formulaire en ligne&amp;rdquo; on peut voir à quoi ça ressemble pour les utilisateurs et même tester le système, car la collecte des réponses est immédiate : rien à faire de particulier !&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lorsque le formulaire  est prêt, il suffit d&amp;rsquo;envoyer le lien disponible par &amp;ldquo;Envoyer le formulaire&amp;rdquo; à des personnes choisies, ou d&amp;rsquo;intégrer la page sur un site web dans un &lt;iframe&gt;. Plusieurs blogs du C@fé des sciences l&amp;rsquo;ont même fait simultanément sans aucun problème car le formulaire n&amp;rsquo;existe en réalité (virtuelle&amp;hellip;) que chez Google.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Les réponses sont automatiquement collectées dans un document &amp;ldquo;tableur&amp;rdquo; sur Google Drive : une ligne est créée pour chaque formulaire rempli, chaque colonne correspondant à un champ. Notez la colonne &amp;ldquo;horodateur&amp;rdquo; remplie automatiquement, bien utile.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 480px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2014/images/googleform1_hu_a6abe314f2fb0325.webp" srcset="https://drgoulu.com/posts/2014/images/googleform1_hu_a6abe314f2fb0325.webp 320w, https://drgoulu.com/posts/2014/images/googleform1_hu_8d5bf332d6b672ce.webp 480w, https://drgoulu.com/posts/2014/images/googleform1_hu_f13ef0042a2a4867.webp 600w" sizes="(max-width: 640px) 100vw, 480px" alt="Table des résultats" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Table des résultats&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Ce que j&amp;rsquo;ai trouvé assez impressionnant est que l&amp;rsquo;on peut modifier le tableau sans perturber les votes suivants. Apparemment chaque champ du formulaire est attaché à une colonne par un lien invisible, mais solide : même si on ajoute ou déplace des colonnes, les réponses suivantes restent cohérentes avec les réponses précédentes. Pour le quiz, j&amp;rsquo;ai ajouté la ligne 2 avec les bonnes réponses ainsi que la colonne D Score. Notez au passage la  géniale formule qui compte le nombre de réponses correctes avec 
 et sumproduct. Elle n&amp;rsquo;est pas de moi, et il parait qu&amp;rsquo;elle est possible aussi en Excel&amp;hellip;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;figure class="alignright" style="max-width: 300px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2014/images/stats_hu_81fae1c181f07c07.webp" srcset="https://drgoulu.com/posts/2014/images/stats_hu_81fae1c181f07c07.webp 320w, https://drgoulu.com/posts/2014/images/stats_hu_64ee39dadb93f1b2.webp 480w, https://drgoulu.com/posts/2014/images/stats_hu_4f036da3e04e65df.webp 600w" sizes="(max-width: 640px) 100vw, 300px" alt="stats" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;résumé des réponses&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Une petite dernière pour la route : dans le menu &amp;ldquo;Formulaire&amp;rdquo; on peut &amp;ldquo;afficher le résumé des réponses&amp;rdquo; qui présente les résultats sous une forme graphique qui peut être bien utile.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Les formulaires Google Drive permettent de réaliser facilement des sondages, quiz et concours divers avec toute la puissance et la sécurité (&amp;hellip;) de l&amp;rsquo;infrastructure Google. Ca fait déjà des
dans le C@fé &amp;hellip;&lt;/p&gt;
&lt;h3 id="curation-v30"&gt;Curation V.3.0‎&lt;/h3&gt;
&lt;p&gt;Rien à faire, il n&amp;rsquo;y a toujours pas mieux pour suivre les sites intéressants que les
. J&amp;rsquo;ai longtemps utilisé
avec lequel j&amp;rsquo;ai commencé à faire de la
. En effet, en cochant simplement les articles que je trouvais intéressants, Google Reader les agrégeait dans un flux RSS &amp;ldquo;de sortie&amp;rdquo; que je pouvais publier sur
.&lt;/p&gt;
&lt;p&gt;Puis Google a annoncé la fermeture de Reader (toujours incompréhensible pour moi) et j&amp;rsquo;ai utilisé
. C&amp;rsquo;était une bonne idée : Scoop.it permet d&amp;rsquo;agréger non seulement des flux RSS, mais aussi des tweets, le contenu de pages Facebook et de recherches Google. On peut créer ainsi plusieurs &amp;ldquo;topics&amp;rdquo; thématiques, et de jolis widgets comme celui ci-contre à droite. Mais le point fort de Scoop.it, c&amp;rsquo;est ses possibilités de partage : chaque contenu &amp;ldquo;scoopé&amp;rdquo; peut être partagé automatiquement sur Twitter, Facebook, Gogle+ et Tumblr, entre autres.&lt;/p&gt;
&lt;p&gt;Scoop.it, c&amp;rsquo;est vraiment bien, mais &amp;hellip; il y a un problème rédhibitoire : les liens du contenu partagé sont modifiés pour conduire les visiteurs sur la page Scoop.it du topic, et pas directement vers l&amp;rsquo;article original. Ceci a trois conséquences que je trouve gênantes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La première n&amp;rsquo;est pas trop grave : les lecteurs doivent cliquer deux fois pour arriver à l&amp;rsquo;article qui les intéresse, une fois sur la page où ils voient le contenu partagé, puis une seconde fois sur la page Scoop.it.&lt;/li&gt;
&lt;li&gt;La seconde fausse les analyses de trafic, qui semble provenir de Scoop.it plutôt que du site de partage. Ainsi par exemple mon site a accueilli plus de 2000 visiteurs passés par Scoop.it en un an sans qu&amp;rsquo;il me soit possible de déterminer où ces 2000 personnes ont initialement découvert l&amp;rsquo;article qui les intéressait.&lt;/li&gt;
&lt;li&gt;La troisième touche le droit d&amp;rsquo;auteur : les outils de partage qui changent les liens diffusent le contenu d&amp;rsquo;autrui en coupant le lien vers la source, qui est parfois le seul élément identifiant l&amp;rsquo;auteur. Je me suis soudain aperçu que
 &amp;ldquo;rebloguait&amp;rdquo; automatiquement les articles que je trouvais intéressants, parfois en me les attribuant implicitement puisqu&amp;rsquo;il n&amp;rsquo;y avait plus de mention du site original.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Je me suis donc mis en chasse de nouveaux outils de curation, et après quelques essais j&amp;rsquo;ai choisi le &amp;ldquo;trio de la curation V.3&amp;rdquo; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
 comme agrégateur de flux. Il offre grosso-modo les fonctionnalités de Google Reader,  une
, plus une
 (en fait un plugin d&amp;rsquo;un agrégateur plus général). Chaque jours je parcours une centaine d&amp;rsquo;articles en sautant d&amp;rsquo;un à l&amp;rsquo;autre en pressant la touche
\[j\], et si je le trouve intéressant je le lis et je presse
\[s\]comme &amp;ldquo;star&amp;rdquo;. Ca le marque comme favori et l&amp;rsquo;ajoute à mon
.&lt;/li&gt;
&lt;li&gt;
Je pourrais utiliser directement CommaFeed pour partager le contenu sur Facebook, Twitter, Google+ et autres (mais pas Tumblr). Mais surtout, il me faudrait le faire manuellement : 6 ou 8 clicks de plus, c&amp;rsquo;est trop. Alors j&amp;rsquo;ai utilisé
, un service qui permet d&amp;rsquo;automatiser des tâches internet en créant des &amp;ldquo;recettes&amp;rdquo; de la forme If This Then That . J&amp;rsquo;ai ainsi créé des &amp;ldquo;recettes&amp;rdquo; qui partagent automatiquement le contenu de mon flux de sortie vers mes pages Facebook, Google+, App.net et Tumblr. Automatiquement. Rien d&amp;rsquo;autre à faire :-)  (Pour Twitter j&amp;rsquo;hésite encore&amp;hellip;)&lt;/li&gt;
&lt;li&gt;Et j&amp;rsquo;utilise toujours Scoop.it pour atteindre les utilisateurs de cette plateforme et profiter des beaux widgets, mais je n&amp;rsquo;utilise plus les outils de partage. En attendant qu&amp;rsquo;IFTTT permette de &amp;ldquo;scooper&amp;rdquo; automatiquement, j&amp;rsquo;utilise le flux de sortie comme unique source dans Scoop.it et je &amp;ldquo;scoope&amp;rdquo; à la main tout ce que j&amp;rsquo;ai préalablement sélectionné dans CommaFeed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tout ça ne me demande en définitive pas plus d&amp;rsquo;efforts que de tourner les pages d&amp;rsquo;un journal en papier, et je peux me concentrer sur la lecture tout en gardant une trace dont vous pouvez profiter où vous le souhaitez.&lt;/p&gt;
&lt;h3 id="networkx"&gt;NetworkX&lt;/h3&gt;
&lt;p&gt;
 est une librairie Python permettant de représenter et traiter des problèmes de graphes. Je l&amp;rsquo;utilise professionnellement assez intensivement ces temps-ci pour un
, mais l&amp;rsquo;autre jour il m&amp;rsquo;a permis de résoudre le
 du
 en quelques lignes seulement. En fait la plupart servent à lire le fichier des données, puis la partie intéressante tient en une seule ligne :&lt;/p&gt;
\[source lang="Python"\]&lt;p&gt;print G.size(weight=&amp;lsquo;weight&amp;rsquo;) - minimum_spanning_tree(G, weight=&amp;lsquo;weight&amp;rsquo;).size(weight=&amp;lsquo;weight&amp;rsquo;)&lt;/p&gt;
\[/source\]&lt;p&gt;Fort non ? Hélas il me semble que peu de problèmes du Project Euler concernent les graphes, donc je ne vais pas pouvoir améliorer mon score rapidement &amp;hellip;&lt;/p&gt;
&lt;h3 id="2048"&gt;2048&lt;/h3&gt;
&lt;p&gt;
Cet article serait paru il y a trois jours si je n&amp;rsquo;étais pas tombé sur
, le jeu addictif du moment. C&amp;rsquo;est un jeu tellement simple qu&amp;rsquo;il aurait du être inventé avant Pac-Man. Et on voit tout de suite comment faire : placer les puissances de 2 les unes à côté des autres pour former une chaîne croissante et propager ainsi les sommes pour arriver à former enfin, après 1024 coups au minimum, la tant convoitée pièce 2048. Il m&amp;rsquo;a fallu 3 jours. Enfin 3 soirs. 3 nuits&amp;hellip;&lt;/p&gt;
&lt;p&gt;A un certain moment j&amp;rsquo;en ai eu marre et voulu utiliser la bonne vieille méthode pour résoudre les problèmes compliqués : programmer. Mais Matt Overlan a été plus rapide et efficace :
 et est très instructif. Je crois que c&amp;rsquo;est la première fois de ma vie qu&amp;rsquo;un ordinateur m&amp;rsquo;apprend à résoudre un casse-tête plutôt que l&amp;rsquo;inverse. Peu après avoir observé le solveur parvenir au 2048, j&amp;rsquo;ai appris à dominer ma tentation d&amp;rsquo;additionner coûte que coûte les nombres les plus élevés et à conserver des lignes ou des colonnes de 4 cases &amp;ldquo;bloquées&amp;rdquo;, et j&amp;rsquo;ai gagné.&lt;/p&gt;
&lt;p&gt;Après certains passent au 
 voire au 
, mais je crois que je vais plutôt attaquer la version &amp;ldquo;
&amp;rdquo; de Valentine. Un peu déroutant de prime abord, mais j&amp;rsquo;aime beaucoup l&amp;rsquo;idée un peu holiste qu&amp;rsquo;il y a là derrière&amp;hellip; Bravo !&lt;/p&gt;</description></item><item><title>Répartition proportionnelle</title><link>https://drgoulu.com/2013/12/02/repartition-proportionnelle/</link><pubDate>Mon, 02 Dec 2013 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2013/12/02/repartition-proportionnelle/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="problème d&amp;rsquo;arrondi 99%"
srcset="https://drgoulu.com/posts/2013/images/2013-11-18_201919_hu_5a85885c885e7716.webp 215w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2013/images/2013-11-18_201919_hu_5a85885c885e7716.webp"
width="215"
height="129"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Voici un petit problème qui se présente assez fréquemment sous diverses formes, et pour lequel j&amp;rsquo;ai été surpris de ne pas trouver de solution bien documentée.&lt;/p&gt;
&lt;p&gt;Le cas le plus simple apparaît souvent dans les tableurs : en calculant des pourcentages arrondis, le total ne fait parfois pas 100%. En effet, rien ne garantit que les arrondis &amp;ldquo;vers le haut&amp;rdquo; compensent ceux &amp;ldquo;vers le bas&amp;rdquo;. Autrement dit, une somme d&amp;rsquo;arrondis n&amp;rsquo;est pas égale à la somme arrondie.&lt;/p&gt;
&lt;p&gt;Autre exemple assez différent en apparence. Un berger veut répartir ses 
 moutons sur sa parcelle carrée d&amp;rsquo;un hectare où il veut faire paître a moutons, son parc rond de π hectares qui peut en accueillir b, et les c restants sur la parcelle louée à son voisin le père Néper, qui fait
hectares, de manière à ce que chaque mouton ait la même surface à brouter. Sur les conseils de l&amp;rsquo;instituteur du village, il commence par écrire la petite équation a.(1+π+e) = 1548 pour obtenir a = 225.66 puis b=708.93 et c=613.41, mais ensuite, comment arrondir chacun de ces nombres vers le haut ou le bas de façon à obtenir exactement un total de 1548 et que les rapports b/a et c/a restent respectivement proches de π et de e ?&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est en planchant sur un problème de ce type que m&amp;rsquo;est venue une idée : utiliser une méthode du
 !&lt;/p&gt;
&lt;p&gt;Certains parlements comme le
sont élus à la &amp;ldquo;proportionnelle par liste&amp;rdquo; : le nombre de sièges étant fixé, on commence par répartir ces sièges entre les partis proportionnellement aux nombre de listes portant l&amp;rsquo;entête d&amp;rsquo;un parti choisies par les électeurs. Dans une deuxième phase, les n candidats ayant reçu le plus de voix de chaque parti sont élus aux n sièges attribués à leur parti, mais ceci n&amp;rsquo;est pas le sujet ici.&lt;/p&gt;
&lt;p&gt;La phase de répartition des sièges entre partis rencontre exactement les difficultés liées aux arrondis mentionnées plus haut, et comme l&amp;rsquo;enjeu est d&amp;rsquo;importance politique, le problème a été non seulement étudié depuis longtemps, mais les solutions sont mêmes formalisées dans les lois régissant le système électoral de bon nombre d&amp;rsquo;Etats (voir
par exemple). Le hic, c&amp;rsquo;est qu&amp;rsquo;il n&amp;rsquo;y a pas une seule solution définitive mais plusieurs, chacune avec ses avantages et inconvénients.&lt;/p&gt;
&lt;p&gt;&lt;figure class="alignright" style="max-width: 256px; width: 100%;"&gt;&lt;a href="http://www.madore.org/~david/weblog/2009-06.html#d.2009-06-10.1650" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/7578a0ca33df1f5abcb0b7798361c72b_hu_1ff38e46472e6008.webp" srcset="https://drgoulu.com/posts/2013/images/7578a0ca33df1f5abcb0b7798361c72b_hu_1ff38e46472e6008.webp 320w, https://drgoulu.com/posts/2013/images/7578a0ca33df1f5abcb0b7798361c72b_hu_84f0211333e8c757.webp 480w, https://drgoulu.com/posts/2013/images/7578a0ca33df1f5abcb0b7798361c72b_hu_7212d0bae7f8e8fa.webp 511w" sizes="(max-width: 640px) 100vw, 256px" alt="Représentation graphique de la méthode de Hare avec 3 partis [[2]](#ref-2)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Représentation graphique de la méthode de Hare avec 3 partis&lt;/figcaption&gt;&lt;/figure&gt;
La &amp;ldquo;méthode de
&amp;rdquo; est la plus simple des méthodes dites &amp;ldquo;du plus fort reste&amp;rdquo;. On commence par calculer un &amp;ldquo;quotient électoral&amp;rdquo; en divisant le nombre total de votes valides par le nombre de sièges à pourvoir. Dans le cas d&amp;rsquo;une élection on obtient en principe un nombre assez grand, mais pour les prés de notre berger, on a: q = (1+π+e)/1548 = 0.004431 , ce qui n&amp;rsquo;est autre que la surface à brouter par chaque mouton.&lt;/p&gt;
&lt;p&gt;Puis on effectue la
(ou entière) du nombre de votes obtenus par chaque parti par ce nombre q. Peu importe que dans notre cas, les votes soient remplacés par des nombres réels, l&amp;rsquo;important est que l&amp;rsquo;on souhaite diviser un nombre entier en entiers suivant cette proportion.&lt;/p&gt;
&lt;p&gt;On commence par ne considérer que les quotients des divisions entières (notées // en Python) et assigner a = 1//q = 225, b = π//q = 708 et c = e//q = 613 moutons aux trois champs. Mais a+b+c ne totalisant que 1546 moutons, il reste à attribuer les moutons restants aux deux &amp;ldquo;plus fort restes&amp;rdquo; des divisions entières. Dans notre cas, 1-a.q = 0.0029, π-b.q = 0.0041 et e-c.q = 0.0018, donc on alloue un mouton de plus aux champs b et a pour obtenir finalement a=226, b=709 et c=613.&lt;/p&gt;
&lt;p&gt;La méthode de Hare souffre d&amp;rsquo;un défaut appelé
 : le fait d&amp;rsquo;augmenter de 1 le nombre de sièges/moutons peut dans certains cas faire diminuer de 1 le nombre alloué à l&amp;rsquo;un des partis/prés, ce qui est illogique. De plus, la méthode de Hare avantage les petits partis qui pourraient gagner leur seul élu au plus fort reste. Les grands partis pourraient même être tentés de déposer plusieurs listes
 pour gagner des sièges, c&amp;rsquo;est pourquoi les législations introduisent souvent un quorum ou &amp;ldquo;seuil de représentativité&amp;rdquo; sous la forme d&amp;rsquo;un pourcentage minimum de votes à atteindre pour qu&amp;rsquo;une liste soit prise en considération*.&lt;/p&gt;
&lt;p&gt;On peut diminuer la probabilité d&amp;rsquo;apparition de ces défauts à l&amp;rsquo;aide d&amp;rsquo;une astuce due à
 (1833-1910), scientifique suisse qui proposa de calculer le &amp;ldquo;quotient électoral&amp;rdquo; en divisant le nombre total de votes valides par le nombre de sièges à pourvoir augmenté de 1. Le &amp;ldquo;quotient de Hagenbach-Bischoff&amp;rdquo; vaut dans notre cas  q = (1+π+e)/(1548+1) = 0.004429. La différence par rapport à la méthode de Hare est très faible, mais suffit à répartir 225+709+613=1547 moutons du premier coup, n&amp;rsquo;en laissant qu&amp;rsquo;un à attribuer au parti/pré a puisqu&amp;rsquo;il présente le reste de division le plus élevé, ce qui nous donne le même résultat qu&amp;rsquo;Hare dans ce cas précis : a=226, b=709 et c=613&lt;/p&gt;
&lt;p&gt;&lt;figure class="alignright" style="max-width: 256px; width: 100%;"&gt;&lt;a href="http://www.madore.org/~david/weblog/2009-06.html#d.2009-06-10.1650" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/702521c7f4a83b8930179de63280619a_hu_ae9bdda36ae9f33d.webp" srcset="https://drgoulu.com/posts/2013/images/702521c7f4a83b8930179de63280619a_hu_ae9bdda36ae9f33d.webp 320w, https://drgoulu.com/posts/2013/images/702521c7f4a83b8930179de63280619a_hu_eb9efe622e2686ca.webp 480w, https://drgoulu.com/posts/2013/images/702521c7f4a83b8930179de63280619a_hu_20fd22353aba00b0.webp 511w" sizes="(max-width: 640px) 100vw, 256px" alt="Représentation graphique de la méthode D&amp;#39;Hondt avec 3 partis  [[2]](#ref-2)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Représentation graphique de la méthode D&amp;rsquo;Hondt avec 3 partis&lt;/figcaption&gt;&lt;/figure&gt;
Il existe d&amp;rsquo;autres variantes de quotients électoraux (de Droop, de Imperiali), ainsi que des méthodes dites &amp;ldquo;
&amp;rdquo; dans lesquelles on attribue un des sièges restants au parti dont la moyenne des votes/sièges est la plus élevée, puis on recommence tous les calculs jusqu&amp;rsquo;à ce que tous les postes soient attribués. L&amp;rsquo;une des plus utilisées, y compris en France pour les élections au Parlement Européen, est est la méthode du belge D&amp;rsquo;Hondt, connue pour avantager les grands partis, alors que celle du français Sainte-Laguë qui représente mieux les petits partis est plutôt utilisée en Allemagne et au Nord de l&amp;rsquo;Europe&amp;hellip;&lt;/p&gt;
&lt;p&gt;Mais revenons à nos moutons : la méthode Hare suffit parfaitement à mon problème, mais le quotient de Hagenbach-Bischoff ajoute un petit plus de science helvétique qui me plaît assez&amp;hellip;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai donc codé la méthode du plus fort reste
 exportable en Excel. Trois onglets résolvent le cas des 1548 moutons, celui des pourcentages du début de l&amp;rsquo;article, et celui du scrutin proportionnel utilisé comme exemple dans la
 et qui donne des résultats différents selon le quotient électoral ( Hare, Hagenbach-Bischoff ou Imperiali) choisi. Pour les curieux, la cellule F1 utilise la fonction Excel LARGE,
en français pour obtenir la n-ième plus grande valeur des restes calculés dans la colonne E, où n est le nombre de sièges restant à attribuer. Ensuite un simple test permet de déterminer dans la colonne F si un siège/mouton/pourcent doit être ajouté.&lt;/p&gt;
&lt;p&gt;Le &amp;ldquo;bug connu&amp;rdquo;, c&amp;rsquo;est qu&amp;rsquo;en cas d&amp;rsquo;égalité des restes il se pourrait qu&amp;rsquo;on en ajoute trop, mais je ne sais pas trop comment empêcher ceci en Excel sans macro&amp;hellip; Par contre ce problème est évité dans
que j&amp;rsquo;ai réalisée pour mon application:&lt;/p&gt;
\[gist id="7531147"\]&lt;p&gt;Si vous trouvez ce code utile ou intéressant, vous pouvez voter pour
 à une question sur StackOverflow, ça me fera une voix de plus en attendant un siège &amp;hellip;&lt;/p&gt;
&lt;p&gt;Note : * à mon humble avis le quorum devrait donc être approximativement égal à 1 / le nombre de sièges à pourvoir, donc autour de 1% plutôt que 5 ou 7% dans certains parlements&amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;&amp;quot;
&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;David Madore &amp;ldquo;
&amp;rdquo;, 10 juin 2009&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>La programmation, latin du futur ?</title><link>https://drgoulu.com/2013/09/07/la-programmation-latin-du-futur/</link><pubDate>Sat, 07 Sep 2013 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2013/09/07/la-programmation-latin-du-futur/</guid><description>&lt;p&gt;Dans un récent article
 Anna Lietti fait le point sur une question qui fait son chemin un peu partout:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Pour former des citoyens «informatiquement éclairés»*, l’école doit-elle enseigner à tous le b. a.-ba de la programmation?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Selon certains comme
, les enfants du numérique ont une &amp;ldquo;expérience rusée&amp;rdquo; du fonctionnement des machines, mais leur approche intuitive approche vite ses limites et ne leur permet pas de dominer la machine. Or cette domination est nécessaire pour contrôler notre monde, de plus en plus automatisé, numérique et interconnecté. On le voit avec l&amp;rsquo;affaire
 : contrôler
, c&amp;rsquo;est avoir le pouvoir sur ses utilisateurs&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Des précurseurs comme
 (élève de
) se sont intéressés dès les années 1960 à la pédagogie de l&amp;rsquo;informatique et inventé des outils comme le
 pour initier à l&amp;rsquo;algorithmique et à la programmation procédurale dès l&amp;rsquo;enfance. Pourtant, 50 ans plus tard, aucun pays n&amp;rsquo;intègre la programmation au cursus scolaire primaire, peu le font au niveau secondaire, et la branche y est rarement obligatoire.&lt;/p&gt;
&lt;p&gt;En Grande-Bretagne, suite à un rapport de la Royal Society intitulé &amp;ldquo;Shut down or restart&amp;rdquo;
qui jugeait l&amp;rsquo;enseignement de l&amp;rsquo;informatique tellement insatisfaisant qu&amp;rsquo;il vaudrait mieux ne rien faire, la décision a été prise d’initier les enfants dès 5 ans à la programmation dès la rentrée 2014 et que la programmation devienne une branche obligatoire du baccalauréat au même titre que la physique ou la chimie.&lt;/p&gt;
&lt;p&gt;En France aussi, un récent rapport de l’Académie des Sciences
 vient de recommander d&amp;rsquo;aller plus loin que la récente (ré)introduction de la spécialité &amp;ldquo;
&amp;rdquo; en terminale S
, en incluant &amp;ldquo;une initiation aux concepts de l’informatique&amp;rdquo; dès l&amp;rsquo;école primaire , puis &amp;ldquo;un véritable enseignement d’informatique, qui ne soit pas noyé dans les autres enseignements scientifiques et techniques, mais développe des coopérations avec ceux-ci dans une volonté d’interdisciplinarité&amp;rdquo; au collège, puis &amp;ldquo;proposer un enseignement obligatoire d’informatique en seconde&amp;rdquo; au lycée.&lt;/p&gt;
&lt;p&gt;Plusieurs initiatives se développement également  en Suisse, notamment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;le Prof. Juraj Hromkovic avec son module &amp;ldquo;
&amp;rdquo;, adopté dans une trentaine d’établissements en Suisse alémanique&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Jürg Kohlas, qui promeut l&amp;rsquo;enseignement de l’informatique comme discipline fondamentale au gymnase (=lycée) dans un livre tout récent
, en recommandant de commencer par former les professeurs, un problème qui semble général&amp;hellip;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;figure class="alignright" style="max-width: 232px; width: 100%;"&gt;&lt;a href="http://scratch.mit.edu/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/scratch_hu_913ab1dc0d067071.webp" srcset="https://drgoulu.com/posts/2013/images/scratch_hu_913ab1dc0d067071.webp 232w" sizes="(max-width: 640px) 100vw, 232px" alt="un &amp;amp;quot;script&amp;amp;quot; en Scratch" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;un &amp;quot;script&amp;quot; en Scratch&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Manuela Barraud et Olivier Jorand proposent des ateliers de &amp;ldquo;
&amp;rdquo; combinant programmation et robotique ludique dans la continuation de la &amp;ldquo;philosphie Logo&amp;rdquo;, mais ils forment aussi des enseignants à leur approche. Outre Logo, ils utilisent le langage semi graphique 
 développé au MIT pour les enfants dès 7 ans.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour ma part, voici les quelques leçons que je tire de ma maigre expérience de l&amp;rsquo;enseignement de la programmation des deux côtés de la barrière:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pas facile d&amp;rsquo;être prof. quand certains élèves maîtrisent mieux le sujet. Il faut une formation en béton, et si possible conserver le choix des armes&amp;hellip;&lt;/li&gt;
&lt;li&gt;La robotique est très motivante pour les jeunes. Avec juste une boucle et quelques tests on peut faire bouger quelque chose de concret alors que sur un écran il faut beaucoup plus de code pour faire quelque chose d&amp;rsquo;un tant soit peu excitant.&lt;/li&gt;
&lt;li&gt;Mais les robots c&amp;rsquo;est cher et délicat, alors les environnements virtuels en 3D sont un bon compromis : ils conservent un rapport résultat visuel/code élevé tout en ouvrant des possibilités amusantes comme
sans que la SPA ne proteste (
), ou monter un canon sur un robot sans occasionner trop de dégâts (
 testé avec succès au 
 )&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;âge minimum pour s&amp;rsquo;intéresser à la programmation est celui où l&amp;rsquo;enfant est capable de comprendre la notion de
. Je dirais expérimentalement vers 10 ans. Les boucles, les tests, même les sous-programmes et les fonctions peuvent encore passer plus tôt avec des choses comme &amp;ldquo;POUR CARRE : REPETE 4
\[AV 100 TD 90\]: FIN&amp;rdquo;, mais c&amp;rsquo;est peut-être justement une raison de l&amp;rsquo;échec de la programmation au primaire : sans la capacité d&amp;rsquo;abstraction nécessaire pour associer une information (nombre, texte etc&amp;hellip;) à un symbole, on est très vite limité. Or cette
 n&amp;rsquo;est introduite, sauf erreur, que vers 10-12 ans, et n&amp;rsquo;est pas assimilée facilement par tous. Imaginez alors la pagaille dans les esprits si le prof de maths dit que &amp;ldquo;x=2*x-1 a pour solution x=1&amp;rdquo; et l&amp;rsquo;heure d&amp;rsquo;après celui d&amp;rsquo;informatique dit que &amp;ldquo;x=x+1 incrémente la valeur de x&amp;rdquo; &amp;hellip;&lt;/li&gt;
&lt;li&gt;Il est très difficile de découpler l&amp;rsquo;enseignement de la programmation de celui des maths. En particulier pour la robotique ludique (réelle ou virtuelle) on a très rapidement besoin des vecteurs, de la trigonométrie, voire de notions d&amp;rsquo;intégration et dérivation pour passer des vitesses aux positions ou vice-versa.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Donc je ne crois pas à l&amp;rsquo;introduction de la programmation au primaire. Et sans programmation, pour quoi &amp;ldquo;faire de l&amp;rsquo;informatique&amp;rdquo; ? Et plus tard, au collège et au lycée, à quoi bon enseigner la programmation si on ne veut pas former des armées de programmeurs ?&lt;/p&gt;
&lt;h3 id="la-programmation-latin-du-futur-"&gt;La programmation, latin du futur ?&lt;/h3&gt;
&lt;p&gt;C&amp;rsquo;est un paragraphe de l&amp;rsquo;article
qui a particulièrement retenu mon attention :&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;L’idée n’est donc pas de former de futurs programmeurs, mais d’initier les enfants à un langage programmatique** simple pour les familiariser avec la logique informatique. Les adeptes de cet enseignement ne tarissent pas d’éloges sur ses vertus pédagogiques. La programmation apprend à penser un problème jusqu’au bout, à construire des processus qui marchent en apprenant de ses erreurs. (&amp;hellip;)&lt;/p&gt;
&lt;p&gt;Et encore: le langage informatique enseigne à penser logiquement et systématiquement. «Peu de disciplines nécessitent une telle rigueur mentale», observe Jürg Kohlas. Bien sûr, les langues programmatiques** sont multiples et mouvantes. Mais quand on en a appris une, il est facile de se familiariser avec les suivantes.&lt;/p&gt;
&lt;p&gt;Ça ne vous rappelle rien? Ne croirait-on pas entendre parler du latin? «La programmation est bel et bien un langage avec un vocabulaire, une grammaire, une syntaxe, acquiesce Juraj Hromkovic. Mais il y a une grosse différence avec les langues naturelles: la plupart des gens ne savent même pas qu’ils ont affaire à un langage.»&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dans mon esprit de lycéen des années 1980, la programmation n&amp;rsquo;avait rien, mais alors RIEN à voir avec la langue morte infligée aux fils d&amp;rsquo;avocats par des curés nostalgiques. Mais avec le recul, je partage le point de vue de gens qui connaissent le latin et la programmation comme Tyler Plack
,&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Ecrire en latin ou programmer un ordinateur requièrent tous deux une compréhension qui dépasse la pensée humaine complexe et la simplifie. De tels processus sont ce qui nous permet de penser clairement; ils font de nous qui nous sommes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Donc oui, il faut enseigner la programmation aux lycéens, même si &amp;ldquo;ça ne sert à rien&amp;rdquo;, comme le latin. Faut-il en faire une branche obligatoire du bac ? Certainement, au moins pour ceux qui ne font pas de latin.&lt;/p&gt;
&lt;p&gt;Parce que combiner les deux peut donner des idées trop bizarres. Damian Conway par exemple en a été perturbé au point d&amp;rsquo;écrire un module
 définissant des alias latins pour tous les éléments du langage
, ce qui permet de rendre ce code :&lt;/p&gt;
\[code lang="perl"\]&lt;p&gt; use Lingua::Romana::Perligata; maximum inquementum tum biguttam egresso scribe. meo maximo vestibulo perlegamentum da. da duo tum maximum conscribementa meis listis. dum listis decapitamentum damentum nexto fac sic nextum tum novumversum scribe egresso. lista sic hoc recidementum nextum cis vannementa da listis. cis.&lt;/p&gt;
\[/code\]&lt;p&gt;parfaitement valide et absolument équivalent à celui-ci:&lt;/p&gt;
\[code lang="perl"\]&lt;p&gt; print STDOUT &amp;lsquo;maximum:&amp;rsquo;; my $maxim = ; my (@list) = (2..$maxim); while ($next = shift @list) { print STDOUT $next, &amp;ldquo;\n&amp;rdquo;; @list = grep {$_ % $next} @list; }&lt;/p&gt;
\[/code\]&lt;p&gt;Et si après
,  la programmation permettait de moderniser l&amp;rsquo;enseignement du latin ?&lt;/p&gt;
&lt;h3 id="notes"&gt;Notes:&lt;/h3&gt;
&lt;p&gt;* l’expression est de Jean-Pierre Archambault, président de
 (qui a un site très moche)&lt;/p&gt;
&lt;p&gt;** voilà bien la marque des pédagogues : surtout ne pas utiliser l&amp;rsquo;expression
&amp;rdquo; adopté par l&amp;rsquo;ensemble de la profession&amp;hellip; Ou alors la journaliste n&amp;rsquo;a pas vérifié&amp;hellip; (edit : c&amp;rsquo;est bien ça, Confirmé par anna Lietti&amp;hellip;)&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Anna Lietti &amp;ldquo;
&amp;rdquo; 2013, L&amp;rsquo;Hebdo No 34, p. 38-41&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;&lt;span class="openbook_template5"&gt;&lt;a href="http://openlibrary.org/authors/OL659735A/Jürg_Kohlas" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Jürg Kohlas&lt;/a&gt;, &lt;a href="http://openlibrary.org/authors/OL7170750A/Jürg_Schmid" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Jürg Schmid&lt;/a&gt;, &lt;a href="http://openlibrary.org/authors/OL3176585A/Carl_August_Zehnder" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Carl August Zehnder&lt;/a&gt; (2013). &lt;a href="http://openlibrary.org/books/OL25430204M/informatique_gymnase" title="Click to view title in Open Library" target="_blank" rel="noopener"&gt;informatique@gymnase: Un projet pour la Suisse&lt;/a&gt;. NZZ Libro.&lt;span class="Z3988" title="ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=book&amp;amp;rft.btitle=informatique%40gymnase%3A+Un+projet+pour+la+Suisse&amp;amp;rft.isbn=9783038238232&amp;amp;rft.au=Ju%CC%88rg+Kohlas&amp;amp;rft.pub=NZZ+Libro&amp;amp;rft.date=2013"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; (
)&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Steve Furber &amp;ldquo;
&amp;rdquo; January 2012, Royal Society&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;Académie des Sciences &amp;ldquo;
&amp;quot;, Rapport de l’Académie des sciences , Mai 2013&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;Jean-Pierre Archambault &amp;ldquo;
&amp;rdquo;, 2012, l&amp;rsquo;Etudiant&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;&amp;quot;
&amp;rdquo; 2011, Framablog (trouvé grâce à l&amp;rsquo;image du T-shirt)&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;Tyler Plack &amp;ldquo;
&amp;rdquo; (sur internet archive)
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-8"&gt;&lt;/span&gt;Damian Conway, &amp;ldquo;
&amp;rdquo;, 2000, School of Computer Science and Software Engineering, Monash University (internet archive)&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Combien de processeurs pour un cerveau ?</title><link>https://drgoulu.com/2013/03/11/combien-de-processeurs-pour-un-cerveau/</link><pubDate>Mon, 11 Mar 2013 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2013/03/11/combien-de-processeurs-pour-un-cerveau/</guid><description>&lt;p&gt;&lt;em&gt;(article publié dans le cadre de la 
)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Lancé par
 dirigée par
, le &amp;ldquo;
&amp;rdquo; (HBP) vise à simuler un cerveau humain dans un superordinateur d&amp;rsquo;ici dix ans. Cet objectif extrêmement ambitieux a paru suffisamment réaliste à l&amp;rsquo;Union Européenne pour consacrer 1 milliard d&amp;rsquo;Euro à ce projet mêlant neurosciences et informatique.&lt;/p&gt;
&lt;p&gt;Les neurosciences étant traitées par des blogueurs bien plus compétents que moi en la matière, cet article se limite à la partie facile et que je connais un peu : l&amp;rsquo;informatique. D&amp;rsquo;ailleurs, Markram et son équipe poursuivent une approche &amp;ldquo;bottom-up&amp;rdquo;
compatible avec un grand principe de l&amp;rsquo;informatique :&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Tout doit être construit de haut en bas (top-down), sauf la première fois. (
)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dès la fin des années 1950 les chercheurs ont analysé le fonctionnement de neurones vivants
et développé des modèles très simplifiés de neurones ayant débouché sur les
 très à la mode dans les année 1990 et qui ont permis de grand progrès dans des applications comme la
 notamment.&lt;/p&gt;
&lt;p&gt;Les modèles actuels de neurones isolés sont beaucoup plus complexes et incorporent des modèles moléculaires comme le
  
ou les
. La simulation en temps réel d&amp;rsquo;un seul neurone exige une mémoire d&amp;rsquo;environ 1 Megabyte pour stocker toutes les variables qui définissent l&amp;rsquo; &amp;ldquo;état&amp;rdquo; du neurone à chaque instant, et une puissance de calcul de 1 Giga
, ce qui correspond:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;au super ordinateur
de 1985&lt;/li&gt;
&lt;li&gt;à un PC
de 1999&lt;/li&gt;
&lt;li&gt;(
) un bon smartphone actuel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Depuis 2006, le 
 de Markram a simulé non seulement le fonctionnement, mais aussi la croissance d&amp;rsquo;une
 (NCC), une structure d&amp;rsquo;environ 1mm³ comprenant environ 10'000 neurones fortement interconnectés, répartis sur 6 couches. Un superordinateur
 doté de 8192 processeurs pour un total d&amp;rsquo;environ 20 TeraFLOPS a été utilisé, ce qui fonde l&amp;rsquo;hypothèse de l&amp;rsquo;équipe selon laquelle la puissance et la mémoire nécessaires à la simulation augmentent linéairement avec le nombre de neurones, et heureusement pas avec le nombre de
 par exemple.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2013/images/6ea028259540cc1ff30e911eaa6eb4db_hu_ec5540172185c4ce.webp 320w, https://drgoulu.com/posts/2013/images/6ea028259540cc1ff30e911eaa6eb4db_hu_21435dec16d81e43.webp 480w, https://drgoulu.com/posts/2013/images/6ea028259540cc1ff30e911eaa6eb4db_hu_c1784fcf42c8ce6b.webp 666w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2013/images/6ea028259540cc1ff30e911eaa6eb4db_hu_ec5540172185c4ce.webp"
width="666"
height="500"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
En extrapolant cette tendance linéaire, Markram estime qu&amp;rsquo;un ordinateur d'1 ExaFLOPS (un milliard de milliards d&amp;rsquo;opérations par seconde) doté de 100 PetaBytes de mémoire devrait être capable de simuler un cerveau humain contenant 100 milliards de neurones environ. Et en extrapolant aussi la
, un tel superordinateur sera disponible en 2018.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;autres
comme
 
,
 
ou même
 qui simule 32'000 neurones sur votre PC confirment grosso-modo ces ordres de grandeur.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 600px; width: 100%;"&gt;&lt;a href="http://top500.org/statistics/perfdevel/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/3a2b6cf709d6fff3b048cdf55a897882_hu_c256babf7da5653c.webp" srcset="https://drgoulu.com/posts/2013/images/3a2b6cf709d6fff3b048cdf55a897882_hu_c256babf7da5653c.webp 320w, https://drgoulu.com/posts/2013/images/3a2b6cf709d6fff3b048cdf55a897882_hu_9b9fe69a00da89d8.webp 480w, https://drgoulu.com/posts/2013/images/3a2b6cf709d6fff3b048cdf55a897882_hu_989aae5e33742bc.webp 600w" sizes="(max-width: 640px) 100vw, 600px" alt="Performance du plus puissant ordinateur (en rouge) au cours du temps selon top500.org" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Performance du plus puissant ordinateur (en rouge) au cours du temps selon top500.org&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Le lecteur attentif aura remarqué qu&amp;rsquo;on a &amp;ldquo;perdu&amp;rdquo; deux ordres de grandeur en route : 100 milliards de neurones x 1 GigaFLOPS par neurone devraient donner 100 ExaFLOPS, pas 1. L&amp;rsquo;idée est que les étapes intermédiaires, mesocircuit, puis cerveau de rat, permettront de simplifier la simulation des neurones individuels, voire de la remplacer par un modèle des NCC. Markram considère en effet qu&amp;rsquo;une NCC est &amp;ldquo;est au cerveau ce qu&amp;rsquo;un microprocesseur est à un ordinateur&amp;rdquo;
. Si c&amp;rsquo;est le cas, alors un cerveau serait l&amp;rsquo;équivalent d&amp;rsquo;environ 10 millions de processeurs de 100 GigaFLOPS chacun &amp;ldquo;seulement&amp;rdquo; soit un bon PC actuelCependant, les marges d&amp;rsquo;erreur sont considérables comme on le voit dans la première figure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;il faudra peut-être une puissance 10x supérieure pour tenir compte de la
&lt;/li&gt;
&lt;li&gt;un autre facteur 10 pour tenir compte des
&lt;/li&gt;
&lt;li&gt;mais surtout un facteur pouvant atteindre 1000 pour simuler la croissance des neurones, leur
 par
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De plus, l&amp;rsquo;approche du &amp;ldquo;Human Brain Project&amp;rdquo; consiste à initialiser le simulateur avec un cerveau à l&amp;rsquo;état embryonnaire, puis à le &amp;ldquo;laisser pousser&amp;rdquo; en évoluant dans un monde virtuel sur lequel il peut agir par l&amp;rsquo;intermédiaire d&amp;rsquo;un corps virtuel
,
. Il faudra donc des années pour que la simulation converge vers un cerveau adulte si on ne parvient qu&amp;rsquo;à une simulation &amp;ldquo;temps réel&amp;rdquo;. Pour pouvoir effectuer plusieurs simulations de croissance en un délai raisonnable (en &amp;ldquo;tuant&amp;rdquo; le cerveau à la fin&amp;hellip;), il faudrait là encore gagner plusieurs ordres de grandeur.&lt;/p&gt;
&lt;p&gt;Cette approche pourrait nécessiter des millions d&amp;rsquo;ExaFLOPS (je viens d&amp;rsquo;apprendre que ça s&amp;rsquo;appelle des yotaFLOPS),  qui ne seraient disponibles que vers 2040. Ceci justifie le scepticisme de certains
et motive des projets concurrents qui pourraient se révéler complémentaires. Ainsi Obama vient de décider d&amp;rsquo;injecter 3 milliards de dollars sur 10 ans dans le
 qui consiste essentiellement à cartographier le cerveau en activité au niveau cellulaire.&lt;/p&gt;
&lt;p&gt;Si des appareils d&amp;rsquo;imagerie médicale devenaient capables de capturer les quelques 100 PetaBytes d&amp;rsquo;information correspondant à l&amp;rsquo;état instantané d&amp;rsquo;un cerveau vivant, on pourrait imaginer un
 vers un &amp;ldquo;Personal Cerveau&amp;rdquo; de bureau d'1 ExaFLOPS dès 2032
.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 640px; width: 100%;"&gt;&lt;a href="http://stripscience.cafe-sciences.org/articles/author/arnaudrafaelian/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/Dessin-Human-Brain-2_hu_48c80249ee16f48a.webp" srcset="https://drgoulu.com/posts/2013/images/Dessin-Human-Brain-2_hu_48c80249ee16f48a.webp 320w, https://drgoulu.com/posts/2013/images/Dessin-Human-Brain-2_hu_2e519a3678422ec2.webp 480w, https://drgoulu.com/posts/2013/images/Dessin-Human-Brain-2_hu_38939f66902cbbe1.webp 640w" sizes="(max-width: 640px) 100vw, 640px" alt="Dessin Human Brain-2" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;dessin: Arnaud Rafaelian, membre de Strip-Science (cliquer)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;En attendant, il y a toujours moyen de fabriquer un cerveau humain parfaitement fonctionnel, indépendant et consommant peu d&amp;rsquo;énergie électrique en quelques minutes de conception, 9 mois de montage et quelques années de programmation &amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Henry Markram &amp;ldquo;
&amp;quot;, Pour la Science N°425, mars 2013&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Lettvin, J.Y., Maturana, H.R., McCulloch, W.S., &amp;amp; Pitts, W.H. &amp;ldquo;
&amp;rdquo; , 1959 ; Proceedings of the IRE, Vol. 47, No. 11, pp. 1940-51.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Marco A. Herrera Valdez,
, Sandra D. Berger, Stefanie Ryglewski, Carsten Duch, Sharon Crook &amp;ldquo;
&amp;rdquo;  Journal of Computational Neuroscience August 2012, 
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;Henry Markram &amp;ldquo;Keynote lecture at Neuroinformatics 2008 in Stockholm, Sweden&amp;rdquo; (
)&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;Christian Clemençon &amp;ldquo;
&amp;rdquo;, EPFL, 2009&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;Nicolas Rougier &amp;ldquo;
 &amp;ldquo;, interstices, 2013 (audio 13:22).&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;&amp;quot;
&amp;rdquo;, Kurzweil AI, 2012&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-8"&gt;&lt;/span&gt;Ed Yong, &amp;ldquo;
&amp;rdquo;, Nature, 2012&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-9"&gt;&lt;/span&gt;Ed Yong &amp;ldquo;
&amp;quot; BBC Future, 8 février 2013&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-10"&gt;&lt;/span&gt;&lt;span class="openbook_template5"&gt;&lt;a href="http://openlibrary.org/authors/OL235116A/Ray_Kurzweil" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Ray Kurzweil&lt;/a&gt; (2012). &lt;a href="http://openlibrary.org/books/OL25423653M/How_to_Create_a_Mind" title="Click to view title in Open Library" target="_blank" rel="noopener"&gt;How to Create a Mind: The Secret of Human Thought Revealed&lt;/a&gt;. Viking Adult.&lt;span class="Z3988" title="ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=book&amp;amp;rft.btitle=How+to+Create+a+Mind%3A+The+Secret+of+Human+Thought+Revealed&amp;amp;rft.isbn=9780670025299&amp;amp;rft.au=Ray+Kurzweil&amp;amp;rft.pub=Viking+Adult&amp;amp;rft.date=2012"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; (
)&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Alice, Bob et le coffre de XOR</title><link>https://drgoulu.com/2013/03/09/alice-bob-coffre-xor/</link><pubDate>Sat, 09 Mar 2013 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2013/03/09/alice-bob-coffre-xor/</guid><description>&lt;p&gt;Pendant des siècles, la
 a principalement consisté à inventer des systèmes de
 des messages rendant très difficile le
 du message par quelqu&amp;rsquo;un ne possédant pas la clé, et à trouver des moyens de transmettre la clé au destinataire.&lt;/p&gt;
&lt;p&gt;Aujourd&amp;rsquo;hui il existe des moyens de chiffrer des message de manière absolument indécryptable, et de les envoyer à un destinataire qui pourra les lire sans qu&amp;rsquo;on ait besoin de lui transmettre la clé ! Impossible ou très compliqué, pensez-vous ? Voici pourtant une méthode ultra-simple.&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 321px; width: 100%;"&gt;&lt;a href="https://drgoulu.com/wp-content/uploads/2013/03/alice-bob-coffre-xor-L-e5xUNf.jpeg" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/alice-bob-coffre-xor-L-e5xUNf_hu_952e60d543d2f78c.webp" srcset="https://drgoulu.com/posts/2013/images/alice-bob-coffre-xor-L-e5xUNf_hu_952e60d543d2f78c.webp 320w, https://drgoulu.com/posts/2013/images/alice-bob-coffre-xor-L-e5xUNf_hu_de8381b05eeac055.webp 480w, https://drgoulu.com/posts/2013/images/alice-bob-coffre-xor-L-e5xUNf_hu_f63ff40153a8ec7d.webp 760w" sizes="(max-width: 640px) 100vw, 321px" alt="Deux cadenas, c&amp;#39;est beaucoup mieux qu&amp;#39;un" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Deux cadenas, c&amp;rsquo;est beaucoup mieux qu&amp;rsquo;un&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Il y a très longtemps,
 ont trouvé un moyen pour s&amp;rsquo;envoyer des objets précieux dans des coffres fermés à clé sans jamais avoir besoin de se transmettre les clés, ni d&amp;rsquo;en faire des doubles. Tout ce dont ils ont besoin, c&amp;rsquo;est d&amp;rsquo;un coffre que l&amp;rsquo;on peut fermer avec deux cadenas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Alice envoie un précieux cadeau d&amp;rsquo;anniversaire à Bob dans le coffre qu&amp;rsquo;elle ferme avec un cadenas A dont elle garde la clé.&lt;/li&gt;
&lt;li&gt;Bob ne peut pas ouvrir le coffre, mais il peut y ajouter son propre cadenas B dont il garde la clé et renvoie le coffre fermé à double à Alice&lt;/li&gt;
&lt;li&gt;Alice ouvre son cadenas A et renvoie à Bob le coffre qui n&amp;rsquo;est plus fermé que par le cadenas B&lt;/li&gt;
&lt;li&gt;Bob peut enfin ouvrir le coffre en enlevant le cadenas B, mais son anniversaire est déjà passé parce qu&amp;rsquo;il a fallu trois trajets au messager au lieu d&amp;rsquo;un seul, et ce dernier a eu tellement peur en traversant trois fois la forêt des brigands qu&amp;rsquo;il a démissionné.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Au XXIème siècle, la vitesse des communications est telle qu&amp;rsquo;un coffre numérique à deux cadenas peut devenir utilisable, à condition de résoudre un problème qui n&amp;rsquo;existe pas avec le coffre:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Alice chiffre un bon d&amp;rsquo;achat pour un précieux cadeau d&amp;rsquo;anniversaire X avec une fonction utilisant la clé A. Elle transmet à Bob le message A(X) .&lt;/li&gt;
&lt;li&gt;Bob
 le message avec sa fonction clé B et envoie à Alice le message B(A(X))&lt;/li&gt;
&lt;li&gt;Alice déchiffre le message avec sa clé, ce qui produit un message qu&amp;rsquo;elle renvoie à Bob.&lt;/li&gt;
&lt;li&gt;Mais là, Bob ne pourra le déchiffrer correctement que si les fonctions A et B sont commutatives, c&amp;rsquo;est à dire que le résultat des deux chiffrements A et B est indépendant de leur ordre, donc que A(B(X)) = B(A(X). Dans ce cas seulement le message A-1(B(A(X))) transmis par Alice à l&amp;rsquo;étape 3 sera égal à B(A-1(A(X))), donc à à B(X) et Bob pourra alors déchiffrer son cadeau.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Alice et Bob ont donc besoin de créer des fonctions/clés de chiffrement A et B qui soient à la fois inviolables, et commutatives. Or il existe une fonction toute bête qui combine ces deux avantages : le
pour les intimes.&lt;/p&gt;
&lt;p&gt;Claude Shannon a démontré en 1949 quelque chose d&amp;rsquo;intuitivement évident : en effectuant un XOR bit a bit entre un message et une clé aléatoire de même longueur à usage unique, le message crypté est absolument inviolable.&lt;/p&gt;
&lt;p&gt;Illustrons ceci avec un message d&amp;rsquo;une seule lettre codé sur 8 bits selon le code ASCII:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Alice veut envoyer à Bob la lettre &amp;ldquo;x&amp;rdquo;, soit la séquence de bits  X=01111000
&lt;ul&gt;
&lt;li&gt;Elle utilise un générateur aléatoire, quantique tant qu&amp;rsquo;à faire, qui produit la clé A=11010001&lt;/li&gt;
&lt;li&gt;Alice calcule XOR(X,A) qui donne le message M1=10101001 et transmet ce message&lt;/li&gt;
&lt;li&gt;Eve la curieuse intercepte le message, mais ne peut y trouver aucune anomalie statistique lui permettant d&amp;rsquo;en déduire la clé. En effet le message peut tout aussi bien correspondre à la lettre &amp;ldquo;y&amp;rdquo; (01111001) codée avec la clé 11010000, ou n&amp;rsquo;importe quelle autre combinaison lettre/clé.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bob reçoit le message, génère une clé B aléatoire de même longueur B=00000101 et transmet le message M2=XOR(M1,B)=10101100&lt;/li&gt;
&lt;li&gt;Alice génère le message M3=XOR(M2,A)=01111101, ce qui &amp;ldquo;enlève le cadenas A&amp;rdquo; car XOR est sa propre réciproque : XOR(A,XOR(A,X))=X&lt;/li&gt;
&lt;li&gt;Bob calcule alors XOR(M3,B)=01111000 et obtient bien le code ASCII de la lettre &amp;ldquo;x&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Le seul problème, c&amp;rsquo;est qu&amp;rsquo;Eve a finalement aussi réussi à décrypter le message, Comment a-t-elle fait ?&lt;/p&gt;
&lt;p&gt;Vous le saurez en lisant les commentaires que d&amp;rsquo;autres ne manqueront pas d&amp;rsquo;écrire, et vous apprendrez comment Alice et Bob préserveront leur intimité dans la suite de leurs aventures, bientôt sur drgoulu.com.&lt;/p&gt;</description></item><item><title>Comment bien brasser les cartes</title><link>https://drgoulu.com/2013/01/19/comment-bien-brasser-les-cartes/</link><pubDate>Sat, 19 Jan 2013 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2013/01/19/comment-bien-brasser-les-cartes/</guid><description>&lt;p&gt;Les amateurs de jeux de cartes savent qu&amp;rsquo;il faut accorder beaucoup d&amp;rsquo;attention au brassage des cartes pour éviter la triche, mais qu&amp;rsquo;en est-il par exemple dans les jeux de poker en ligne ?&lt;/p&gt;
&lt;p&gt;Les informaticiens se sont beaucoup
, mais relativement peu sur les problèmes de brassage, moins fréquents et apparemment plus simples. Mais comme disait
 : &amp;ldquo;il faut se méfier des appâts rances&amp;rdquo; ©&amp;hellip;&lt;/p&gt;
&lt;p&gt;Examinons pour commencer un algorithme tout bête que j&amp;rsquo;avoue avoir utilisé plusieurs fois  : on échange la première carte (ou donnée) avec une autre choisie au hasard parmi les N cartes*, puis on fait de même pour la 2ème carte, la 3ème et ainsi de suite jusqu&amp;rsquo;à la N-ième. Cette méthode semble réunir toutes les caractéristiques d&amp;rsquo;un bon algorithme : simplicité, rapidité, et efficacité.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Si vous avez un vrai browser, 
. C&amp;rsquo;est ma première oeuvre faite avec
, fortement inspirée de
, et que j&amp;rsquo;essaie désespérément d&amp;rsquo;inclure directement dans cet article&amp;hellip;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Et pourtant, un tel brassage s&amp;rsquo;avère &amp;ldquo;biaisé&amp;rdquo; : toutes les
 possibles n&amp;rsquo;ont pas la même probabilité d&amp;rsquo;être produites. Déjà en ne brassant que N=3 cartes par cette méthode, 3 des 6 permutations possibles sont nettement moins probables que les 3 autres  
.&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 240px; width: 100%;"&gt;&lt;a href="http://bost.ocks.org/mike/shuffle/compare.html" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/fdd88ca55a8f211b9fc8f978d988744c_hu_42fde1d106c510f.webp" srcset="https://drgoulu.com/posts/2013/images/fdd88ca55a8f211b9fc8f978d988744c_hu_42fde1d106c510f.webp 240w" sizes="(max-width: 640px) 100vw, 240px" alt="biais naïve swap (i ↦ random)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;biais naïve swap (i ↦ random)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Avec N=60 cartes, ce biais est bien visible sur la figure ci-contre, produite par une autre 
  en ligne
. Elle effectue 10'000 mélanges avec le même algo, compte dans une matrice le nombre de fois ou la i-ième carte se retrouve à la j-ième position après le brassage, et représente les
 positifs en vert et les négatifs en rouge.&lt;/p&gt;
&lt;p&gt;La variante &amp;ldquo;swap (random ↦ random)&amp;rdquo; dans laquelle on échange N fois 2 cartes choisies au hasard n&amp;rsquo;est pas meilleure : elle présente un biais positif sur la diagonale (i=j) qui s&amp;rsquo;atténue si on effectue 2N échanges, et disparaît presque pour 3N échanges.&lt;/p&gt;
&lt;p&gt;Signifierait-ce qu&amp;rsquo;il faut plus de N opérations pour obtenir un &amp;ldquo;bon&amp;rdquo; brassage de N cartes ? On pourrait le penser car il existe un algorithme tout simple sans biais : extraire successivement des cartes prises au hasard dans le tas pour en constituer un deuxième, mais il nécessite N.log(N) opérations***, voire N² s&amp;rsquo;il est mal programmé
. Or N.log(N) est la complexité des algorithmes de tri, donc on pourrait avoir l&amp;rsquo;idée aussi surprenante que séduisante de se faire un brassage en utilisant
 auquel on passe une fonction aléatoire comme critère de tri.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est tellement beau que j&amp;rsquo;exhibe même ici le petit bout de code Javascript qui fait ça:&lt;/p&gt;
\[source language="javascript"\]&lt;p&gt; function shuffle(array) { array.sort(function() {return Math.random() - .5}); }&lt;/p&gt;
\[/source\]&lt;figure class="alignright" style="max-width: 240px; width: 100%;"&gt;&lt;a href="http://bost.ocks.org/mike/shuffle/compare.html" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/4515a7fe42f5229307c0f50570d991ca_hu_23c38f7925303819.webp" srcset="https://drgoulu.com/posts/2013/images/4515a7fe42f5229307c0f50570d991ca_hu_23c38f7925303819.webp 239w" sizes="(max-width: 640px) 100vw, 240px" alt="biais sort (random comparator)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;biais sort (random comparator)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;random() renvoie un nombre aléatoire entre 0 et 1, donc Math.random() - .5 tire à pile ou face si une carte est &amp;ldquo;plus grande&amp;rdquo; que l&amp;rsquo;autre lors du tri, ce qui est supposé mélanger au lieu de trier.&lt;/p&gt;
&lt;p&gt;Cette méthode produit la matrice de biais ci-contre, dont la non-trivialité me laisse pantois.&lt;/p&gt;
&lt;p&gt;Par contre, la variante dans laquelle on commence par générer un vecteur de nombres aléatoires, puis on &amp;ldquo;dé-trie&amp;rdquo; les données en utilisant ces nombres aléatoires pour les comparaisons donne un résultat non biaisé. (voir &amp;ldquo;sort (random order)&amp;rdquo; dans
)&lt;/p&gt;
&lt;p&gt;Et une fois qu&amp;rsquo;on est tout content d&amp;rsquo;avoir trouvé un algorithme de brassage non biaisé de complexité N.log(N), on découvre celui de
 datant de 1938, non biaisé, assez simple : &lt;/p&gt;
\[source language="javascript"\]&lt;p&gt; function shuffle(array) { var j = array.length, t, i; while (j) { i = Math.floor(Math.random() * j&amp;ndash;); t = array&lt;/p&gt;
\[j\]&lt;p&gt;; array&lt;/p&gt;
\[j\]&lt;p&gt; = array&lt;/p&gt;
\[i\]&lt;p&gt;; array&lt;/p&gt;
\[i\]&lt;p&gt; = t; } }&lt;/p&gt;
\[/source\]&lt;p&gt; Les 3 dernières lignes échangent les cartes en i-ième et en j-ième position tout comme dans notre premier algorithme naïf, mais ici on ne choisit la carte à échanger que parmi celles qui n&amp;rsquo;ont pas encore été traitées. Et pour des raisons de simplicité du code, on mélange le tableau &amp;ldquo;depuis la fin&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Et le plus beau est que sa
est proportionnelle à N, ce qui est in exemple de plus de l’universalité du principe de Murphy de la thermodynamique de la tartine beurrée qui dit qu&amp;rsquo;il est toujours plus facile de générer du désordre que de l&amp;rsquo;ordre.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;autre part, si vous devez brasser beaucoup de données de manière irréversible, je ne sais pas moi, pour une application de vote par internet par exemple, souvenez-vous de Fisher-Yates. Et utilisez un
 , car un
 peut non seulement souffrir de biais, mais surtout être reproductible à partir de la &amp;ldquo;graine&amp;rdquo; et permettre ainsi d&amp;rsquo;inverser le brassage.&lt;/p&gt;
&lt;p&gt;Bon, je voulais encore modéliser différentes techniques de brassage de vraies cartes en JavaScript pour déterminer combien d&amp;rsquo;opérations sont nécessaires pour obtenir un mélange sans biais, mais je préfère laisser ça en exercice pour ChipRaptor et d&amp;rsquo;autres.&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/UYmcmIgL1yA"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="notes"&gt;Notes:&lt;/h3&gt;
&lt;p&gt;Gag © Pierre-Alain de 
&lt;/p&gt;
&lt;p&gt;* et non N-1, car il faut garder une chance sur N que la carte soit &amp;ldquo;échangée avec elle même&amp;rdquo; et reste à sa place dans le tas.&lt;/p&gt;
&lt;p&gt;** félicitations au premier lecteur qui calculera les probabilités respectives de ces permutations et expliquera ainsi le biais&amp;hellip;&lt;/p&gt;
&lt;p&gt;*** parce qu&amp;rsquo;on doit alors forcément parcourir des
&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;
,  &amp;ldquo;
&amp;rdquo;, 14 janvier 2012&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Mike Bostock,  &amp;ldquo;
&amp;rdquo;, 21 janvier 2012&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Jeff Atwood &amp;ldquo;
&amp;rdquo;, 2007, Coding Horror&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>La pénible mort des données</title><link>https://drgoulu.com/2012/10/31/la-penible-mort-des-donnees/</link><pubDate>Wed, 31 Oct 2012 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2012/10/31/la-penible-mort-des-donnees/</guid><description>&lt;p&gt;&lt;em&gt;Article publié dans le cadre de la
, pour changer un peu de toute cette biologie.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Alors comme ça vous voulez enlever vos photos de biture de Facebook ou donner votre vieil ordi à votre maman sans les traces de vos visites à des sites olé-olé ? Pas simple de détruire des informations alors que le rôle des mémoires informatiques est précisément de les conserver.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;abord, les données sont défendues contre leur pire ennemi : l&amp;rsquo;homme. Il y a le distrait qui clique machinalement sur &amp;ldquo;oui&amp;rdquo; à la boite de dialogue &amp;ldquo;êtes-vous sur de vouloir effacer ce fichier très important sur lequel vous avez bossé 3 jours ?&amp;rdquo;; il y a le jaloux qui dit à son ex &amp;ldquo;mais c&amp;rsquo;est tout simple : fais click droit sur le disque dur et choisis Formater&amp;hellip;&amp;rdquo;; il y a le
 licencié qui fait un petit &amp;ldquo;drop database&amp;rdquo; avant de partir&amp;hellip; Il existe 3 stratégies pour éviter ça:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ne pas autoriser l&amp;rsquo;effacement des données&lt;/li&gt;
&lt;li&gt;faire semblant de les effacer, mais ne pas les effacer pour de vrai.&lt;/li&gt;
&lt;li&gt;faire des copies de sécurité pour les ressusciter, au cas où.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pour des raisons techniques que nous allons expliquer plus bas, l&amp;rsquo;informatique actuelle combine les 3 stratégies au point qu&amp;rsquo;effacer des données est devenu une opération redoutablement complexe.&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 240px; width: 100%;"&gt;&lt;a href="http://www.flickr.com/photos/martinlatter/299981441/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2012/images/0abc70ee659ffda517e3ff039cdf3bea_hu_c8e383bfb18b68eb.webp" srcset="https://drgoulu.com/posts/2012/images/0abc70ee659ffda517e3ff039cdf3bea_hu_c8e383bfb18b68eb.webp 240w" sizes="(max-width: 640px) 100vw, 240px" alt="Dead Data par Stinging Eyes sur Flickr" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;&amp;quot;Dead Data&amp;quot; par Stinging Eyes sur Flickr&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;D&amp;rsquo;abord, il faut réaliser que l&amp;rsquo;écrasement est la principale cause de mortalité des données. Il y en a un tout petit peu qui meurent d&amp;rsquo;inanition lorsque l&amp;rsquo;alimentation d&amp;rsquo;un PC flanche, un peu plus qui meurent dans un crash de disque dur mécanique ou magnétique, mais la plupart meurent écrasées par d&amp;rsquo;autres données écrites au même emplacement mémoire qu&amp;rsquo;elles.&lt;/p&gt;
&lt;p&gt;Donc &amp;ldquo;&lt;em&gt;1. ne pas autoriser l&amp;rsquo;effacement des données&lt;/em&gt;&amp;rdquo; revient à &amp;ldquo;&lt;em&gt;1. ne pas autoriser l&amp;rsquo;écriture de données là où il y en a déjà&lt;/em&gt;&amp;rdquo;. Cette fonction de police est aujourd&amp;rsquo;hui réalisée en partie dans les applications comme les bases de données, et à un niveau inférieur dans les
, qui peuvent même utiliser des circuits de
 présents dans les microprocesseurs récents.&lt;/p&gt;
&lt;p&gt;Que ce soit au niveau de la mémoire RAM, du disque dur ou d&amp;rsquo;une base de donnée répartie à travers la planète, le principe est le même : un programme n&amp;rsquo;a le droit d&amp;rsquo;écrire des données qu&amp;rsquo;aux emplacements mémoire marqués comme étant libres. Dès lors, pour effacer des données, &amp;ldquo;il suffit de&amp;rdquo; marquer leur emplacement en mémoire comme étant libre, ce qui permet de réutiliser la mémoire libérée. Mais ce n&amp;rsquo;est pas si simple, car 4 monstres rôdent:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;l&amp;rsquo;Hydre de Lerne&lt;/li&gt;
&lt;li&gt;Le Docteur Frankenstein&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;Ecran Bleu de la Mort&lt;/li&gt;
&lt;li&gt;La Fragmentation&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="lhydre-de-lerne"&gt;L&amp;rsquo;Hydre de Lerne&lt;/h2&gt;
&lt;p&gt;Les systèmes informatiques actuels utilisent une
 dans laquelle une donnée peut être présente simultanément à plusieurs niveaux. Elle ressemble alors à une
 dont il faut couper les têtes dans un certain ordre pour la tuer.&lt;/p&gt;
&lt;p&gt;Dans un système simple, il faut en principe attaquer le niveau le plus haut de la hiérarchie, et poursuivre vers le bas. C&amp;rsquo;est pour cela par exemple que Windows ne vous permet pas d&amp;rsquo;effacer un document Word (= marquer son emplacement comme libre sur le disque dur) tant qu&amp;rsquo;il est ouvert (= présent en mémoire RAM) sinon le fichier serait recréé à la prochaine sauvegarde.&lt;/p&gt;
&lt;p&gt;Çà se complique avec les systèmes multicœurs/multiprocesseurs ou répartis sur un réseau : là il faut utiliser une arme spéciale appelée
 pour qu&amp;rsquo;une donnée morte pourrisse si rapidement ses clones qu&amp;rsquo;ils ne puissent pas être ressuscités.&lt;/p&gt;
&lt;p&gt;Le niveau le plus bas de la hiérarchie mémoire pose le plus gros problème. A mon sens c&amp;rsquo;est actuellement internet, un disque dur de PC typique étant essentiellement rempli de gigabytes téléchargés. Mais la difficulté existe aussi pour ces bons vieux disques/bande/cartes perforées de sauvegarde : comment effacer des informations à ce niveau où il n&amp;rsquo;existe aucune &amp;ldquo;cohérence de cache&amp;rdquo; ? Il n&amp;rsquo;existe (heureusement?) aucun moyen d&amp;rsquo;effacer
du net.&lt;/p&gt;
&lt;h2 id="le-docteur-frankenstein"&gt;Le Docteur Frankenstein&lt;/h2&gt;
&lt;p&gt;Or tant que tous les clones d&amp;rsquo;une donnée n&amp;rsquo;ont pas été écrasés, voire broyés, elle peut ressusciter   :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En RAM, des programmes mal fichus peuvent continuer à utiliser des
vers des données tuées, voire les ressusciter en les copiant à un emplacement valide.&lt;/li&gt;
&lt;li&gt;Sur disque, des
 peuvent &amp;ldquo;dés-effacer&amp;rdquo; des fichiers.&lt;/li&gt;
&lt;li&gt;Sur internet, on peut retrouver une page effacée dans le
ou sur un
 par exemple. Et la republier.&lt;/li&gt;
&lt;li&gt;Et toute donnée ayant au moins une copie de sécurité (n&amp;rsquo;est-ce pas ?), une catastrophe peut paradoxalement rendre la vie à des données effacées après la création de la copie&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="lécran-bleu-de-la-mort"&gt;L&amp;rsquo;Écran Bleu de la Mort&lt;/h2&gt;
&lt;p&gt;Quand une donnée est tuée, il faut en informer ses proches: les références. Au sens large, ce sont toutes les autres données qui se réfèrent à la disparue et qui risquent l&amp;rsquo;équivalent informatique de la gaffe &amp;ldquo;ah, et bien des choses à ta femme de ma part !&amp;rdquo; - &amp;ldquo;&amp;hellip; elle est morte la semaine passée&amp;hellip;&amp;rdquo; :  le crash.&lt;/p&gt;
&lt;p&gt;En RAM, les 
 vers la donnée effacée indiquent désormais une tombe. Les suivre invoque l&amp;rsquo;
 ainsi nommé en raison de son apparence sous Windows, mais il se présente aussi sous forme 
 et
, entre autres. Dans tous les cas, vous allez perdre un peu de temps à redémarrer votre machine, et parfois beaucoup de données saines&amp;hellip;&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 648px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2012/images/72ba586f15ac6d1b1a168cebae92cd41_hu_ca1f9604df61332e.webp" srcset="https://drgoulu.com/posts/2012/images/72ba586f15ac6d1b1a168cebae92cd41_hu_ca1f9604df61332e.webp 320w, https://drgoulu.com/posts/2012/images/72ba586f15ac6d1b1a168cebae92cd41_hu_34e1294d4c7d183a.webp 480w, https://drgoulu.com/posts/2012/images/72ba586f15ac6d1b1a168cebae92cd41_hu_39b2bf6baad1efbe.webp 648w" sizes="(max-width: 640px) 100vw, 648px" alt="Ne vous laissez pas distraire : ceci est l&amp;#39;Écran Bleu de la MORT !" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Ne vous laissez pas distraire : ceci est l&amp;rsquo;Écran Bleu de la MORT !&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Sur disque, les noms de fichiers disparus provoquent des variantes moins létales de l&amp;rsquo;Écran Bleu de la Mort,  les bien connus messages  &amp;ldquo;File not found&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Mais l&amp;rsquo;Écran Bleu de la Mort envahit aussi internet, le niveau le plus bas de la hiérarchie mémoire. D&amp;rsquo;
 l&amp;rsquo;
n&amp;rsquo;en est pas moins redoutable, et beaucoup moins bavarde. Les données à cet
 ont-elles été effacées, déplacées ou n&amp;rsquo;ont-elles même jamais existé ? Est-ce temporaire ou définitif ? Aucun moyen de le savoir sans investigations poussées.&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 320px; width: 100%;"&gt;&lt;a href="http://ozone3d.net/404" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2012/images/231b61becbccde73660ad28a61ca6cac_hu_6e8dd24fc16f399f.webp" srcset="https://drgoulu.com/posts/2012/images/231b61becbccde73660ad28a61ca6cac_hu_6e8dd24fc16f399f.webp 320w, https://drgoulu.com/posts/2012/images/231b61becbccde73660ad28a61ca6cac_hu_995bfda00ce1b8d3.webp 480w, https://drgoulu.com/posts/2012/images/231b61becbccde73660ad28a61ca6cac_hu_ca09e05be294ded.webp 640w" sizes="(max-width: 640px) 100vw, 320px" alt="Celui de JegX m&amp;#39;avait fait sursauter ..." loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Celui de JegX m&amp;rsquo;avait fait sursauter &amp;hellip;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Pour vous qui surfez, ce problème occasionnel peut souvent se résoudre en utilisant un moteur de recherche pour retrouver une autre page avec le même contenu. Sur drgoulu.com, ça devient embêtant : malgré l&amp;rsquo;utilisation d&amp;rsquo;un
 qui gère les redirections  425 liens sur 6110 se sont brisés au fil des ans. J&amp;rsquo;en répare manuellement quelques uns, parfois. Les autres apparaissent
. Mais il y a pire : de plus en plus de sites web utilisent du contenu, voire du code, stocké sur un
(CDN). Si de tels liens se cassent, ça peut rendre indisponible des sites entiers.&lt;/p&gt;
&lt;p&gt;Les informaticiens ont développé de nombreux et intenses efforts pour repousser l&amp;rsquo;Écran Bleu de la Mort, avec des succès variés. Ils ont assez bien réussi à remplacer les dangereux pointeurs par des
 en mémoire plus intelligentes, qui prennent une valeur précise (en général nulle) au moment même où la donnée qu&amp;rsquo;ils pointent meurt. Dans les bases de données, ils ont eu l&amp;rsquo;idée des contraintes d&amp;rsquo;
. C&amp;rsquo;est très bien, très rigoureux et tout, mais ça oblige à effacer en cascade tous les enregistrements liés aux enregistrements effacés par des
. Une petite mort naturelle peut ainsi causer un holocauste, donc si on l&amp;rsquo;utilise, on préfère désactiver la possibilité d&amp;rsquo;effacer les données&amp;hellip;&lt;/p&gt;
&lt;p&gt;Certains
 utilisent des concepts inspirés des bases de données, mais je n&amp;rsquo;en connais toujours aucun qui permette de déplacer ou de renommer un fichier système sans tout casser : les fichiers n&amp;rsquo;ont toujours pas une &amp;ldquo;adresse&amp;rdquo; unique.&lt;/p&gt;
&lt;p&gt;Les 
 d&amp;rsquo;internet peuvent être vues comme des adresses uniques, mais là ce sont les données correspondantes qui peuvent être modifiées ou supprimées sans contrôle&amp;hellip;&lt;/p&gt;
&lt;h2 id="la-fragmentation"&gt;La Fragmentation&lt;/h2&gt;
&lt;p&gt;Le quatrième monstre qui défend les données contre la mort porte un nom de grenade mortelle : la
.&lt;/p&gt;
&lt;p&gt;Commençons par parler de la mémoire RAM. Une donnée effacée y laisse un trou.  Cet emplacement libre est par la suite ré-alloué à une  donnée naissante, mais celle-ci ne peut pas être plus grande que le trou, donc il y a de fortes chances que le trou ne soit que partiellement rempli par une donnée plus petite, en laissant un reste de trou encore plus petit. Au bout d&amp;rsquo;un certain temps, la mémoire disponible sera fragmentée en beaucoup de petits trous dans lesquels les grosses données ne pourront plus se caser.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt=""
src="https://drgoulu.com/posts/2012/images/ba62079087cf8b5893d8b1094654597b.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;En RAM, l&amp;rsquo;utilisation de références adaptées et la vitesse de copie de la mémoire permet de
 de temps en temps, mais sur des supports plus lents comme les disques on préfère diviser au besoin un gros fichier en une chaîne de petits blocs remplissant exactement les trous laissés libres par les fichiers effacés. Mais cette fragmentation des fichiers ralentit l&amp;rsquo;accès aux données.&lt;/p&gt;
&lt;h2 id="les-données-doivent-elles-mourir-"&gt;Les données doivent-elles mourir ?&lt;/h2&gt;
&lt;p&gt;Supprimer des données est une opération dangereuse et complexe. Elle est à peu près maîtrisée en RAM, où elle est indispensable. Mais sur disque dur et dans le nuage internet où la mémoire est extrêmement bon marché, répliquée et difficilement réutilisable, la solution la plus simple, fiable et efficace consiste à ne pas tuer les données, ou du moins ne pas les écraser. En fait il suffit souvent de les laisser se momifier : lorsque toutes les références vers une donnée auront disparu ou seront elles aussi momifiées, la donnée sera perdue dans la gigantesque
 presque aussi surement que si elle avait été effacée : il n&amp;rsquo;y aura plus moyen de la retrouver.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est apparemment cette approche par momification qu&amp;rsquo;avaient choisi Facebook et Flickr pour &amp;ldquo;effacer&amp;rdquo; les photos. Selon
, il fallait entre quelques minutes et quatre mois environ pour que toutes (?) les références à une photo soient supprimées. C&amp;rsquo;est compréhensible si on considère qu&amp;rsquo;il peut y en avoir des centaines, voire des milliers sur les comptes Facebook des &amp;ldquo;amis&amp;rdquo; de l&amp;rsquo;auteur de la photo, mais aussi sur des sites externes. En supprimant une photo sur demande d&amp;rsquo;un utilisateur, Facebook ou Flickr modifient le contenu d&amp;rsquo;autres utilisateurs, voire d&amp;rsquo;autres sites, sans leur autorisation, ni même avertissement, ce qui pourrait soulever des problèmes légaux&amp;hellip;&lt;/p&gt;
&lt;p&gt;Avant d&amp;rsquo;appuyer sur &lt;/p&gt;
\[return\]&lt;p&gt; ou de clicker sur &lt;/p&gt;
\[ok\]&lt;p&gt;, il vaut mieux partir de l&amp;rsquo;idée que l&amp;rsquo;ajout de données est encore plus irréversible que leur suppression. Oups, je viens de remplacer tout cet article par un seul espace.. (authentique!). &lt;/p&gt;
\[Ctrl\]&lt;p&gt;-&lt;/p&gt;
\[Z\]&lt;p&gt; ouf, tout est récupéré ! Merci Undo ! Où en étais-je ? Ah oui : CQFD.&lt;/p&gt;</description></item><item><title>Comment dire 33 avec 3 cubes ?</title><link>https://drgoulu.com/2012/06/20/comment-dire-33-avec-3-cubes/</link><pubDate>Wed, 20 Jun 2012 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2012/06/20/comment-dire-33-avec-3-cubes/</guid><description>&lt;p&gt;Le gars qui m&amp;rsquo;a pourri ma dernière soirée du printemps s&amp;rsquo;appelle Mike Croucher.
 il a négligemment posé le problème suivant:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Il est possible d&amp;rsquo;écrire beaucoup d&amp;rsquo;entiers comme la somme des cubes de 3 entiers, par exemple: 99 = (-5)&lt;sup&gt;3 + 2&lt;/sup&gt;3+ 6^3 Un exemple plus compliqué est: 91 = (-67134)&lt;sup&gt;3 + (-65453)&lt;sup&gt;3+(83538)&lt;sup&gt;3 Votre tâche est de trouver les entiers x,y, et z tels que: 33 = x&lt;/sup&gt;3 + y&lt;/sup&gt;3 + z&lt;/sup&gt;3&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Comme j&amp;rsquo;ai bien vu que la solution pour 91 impliquait de grands entiers, je me suis dit que 33 demanderait probablement des nombres encore plus grands, mais j&amp;rsquo;ai quand même vite pondu le programme Python suivant pour voir:&lt;/p&gt;
\[sourcecode lang="Python"\]&lt;p&gt; res={} #dictionary of results def store(n,x,y,z): if n&amp;gt;=0 and n&amp;lt;100 and n not in res: res&lt;/p&gt;
\[n\]&lt;p&gt;=(x,y,z) print n,res&lt;/p&gt;
\[n\]&lt;p&gt;cube=[] x=0 while True: x3=x*x*x cube.append(x3) for y in range(x+1): y3=cube&lt;/p&gt;
\[y\]&lt;p&gt; for z in range(x+1): z3=cube&lt;/p&gt;
\[z\]&lt;p&gt; store(x3+y3+z3,x,y,z) store(x3-y3+z3,x,-y,z) store(x3+y3-z3,x,y,-z) store(x3-y3-z3,x,-y,-z) store(-x3+y3+z3,-x,y,z) store(-x3-y3+z3,-x,-y,z) store(-x3+y3-z3,-x,y,-z) # store(-x3-y3-z3,-x,-y,-z) #you&amp;rsquo;re right Neamar, it&amp;rsquo;s useless x+=1 if x==50: #show &amp;ldquo;small&amp;rdquo; results for n in range(100): if n in res: print n,res&lt;/p&gt;
\[n\]&lt;p&gt; else: print n,&amp;rsquo;?&amp;rsquo; &lt;/p&gt;
\[/sourcecode\]&lt;p&gt;En moins d&amp;rsquo;une seconde il trouve les 69 des 100 premiers entiers qui sont des sommes de cubes d&amp;rsquo;entiers inférieurs à 100. Le plus &amp;ldquo;compliqué&amp;rdquo; est 78=-55³+53³+26³ .&lt;/p&gt;
&lt;p&gt;Ensuite il mouline pendant des heures pour trouver 51=-796³+659³+602³ et 16=1626³-1609³-511³, et pendant ce temps j&amp;rsquo;ai exploré les liens émaillant les premiers commentaires 
.&lt;/p&gt;
&lt;p&gt;Il s&amp;rsquo;avère que le problème soumis par Mike Croucher est extrêmement difficile, voire impossible.
liste les solutions trouvées par mon programme, et d&amp;rsquo;autres qui ont nécessité des algorithmes beaucoup plus fûtés que le mien pour résoudre cette 
 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;87 = 4271³ - 4126³ - 1972³ , découvert en 1964
&lt;/li&gt;
&lt;li&gt;96 = -15250³ + 13139³ + 10853³&lt;/li&gt;
&lt;li&gt;91 = 83538³ - 67134³ - 65453³&lt;/li&gt;
&lt;li&gt;80 = -112969³ + 103532³ + 69241³&lt;/li&gt;
&lt;li&gt;39 = -159380³ + 134476³ + 117367³ découvert en 1991
&lt;/li&gt;
&lt;li&gt;75 = - 435203231³ + 435203083³ + 4381159³  découvert en 1993 
&lt;/li&gt;
&lt;li&gt;84 = 41639611³ - 41531726³ - 8241191³ découvert en 1994
&lt;/li&gt;
&lt;li&gt;30 =  2220422932³ - 2218888517³ - 283059965³ ainsi que 52 = -61922712865³ + 60702901317³ + 60702901317³ par la même équipe, qui a mis au point l&amp;rsquo;algo le plus performant du moment 
&lt;/li&gt;
&lt;li&gt;24 =15584139827³ - 15550555555³ - 2901096694³ a été découvert avec l&amp;rsquo;algo précédent en 2001 par D. J. Bernstein, dont la page
est consacrée à ce problème et son historique&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A part ça, les matheux démontrent (essayez&amp;hellip;) que les nombres de la forme 9n+4 et 9n+5 ne peuvent pas être la somme de trois cubes, ce qui règle le cas de 4,5,13,14,22,23 etc.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 412px; width: 100%;"&gt;&lt;a href="http://www.geluck.com/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2012/images/9b493f196263e591d63658b2997f5b5b_hu_ac819ab557304383.webp" srcset="https://drgoulu.com/posts/2012/images/9b493f196263e591d63658b2997f5b5b_hu_ac819ab557304383.webp 320w, https://drgoulu.com/posts/2012/images/9b493f196263e591d63658b2997f5b5b_hu_5216f8ac3ff226ad.webp 412w" sizes="(max-width: 640px) 100vw, 412px" alt="Bon... je n ai pas vraiment le droit d&amp;#39;utiliser ce dessin, mais il va tellement bien là que j espère que vous ne m en voudrez pas, cher Docteur G..." loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Bon&amp;hellip; je n ai pas vraiment le droit d&amp;rsquo;utiliser ce dessin, mais il va tellement bien là que j espère que vous ne m en voudrez pas, cher Docteur G&amp;hellip;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Reste 33 (et 42 et beaucoup d&amp;rsquo;autres), qui résistent effrontément aux informaticiens cherchant à les obtenir, ainsi qu&amp;rsquo;aux mathématiciens essayant de prouver que c&amp;rsquo;est peine perdue&amp;hellip;&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est énervant qu&amp;rsquo;un petit problème tout bête comme celui-ci puisse résister ainsi aux ordinateurs les plus puissants.  Et motivant de penser qu&amp;rsquo;une solution est peut-être à la portée d&amp;rsquo;amateurs éclairés. Des idées ?&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Gardiner, V. L., Lazarus, R. B., &amp;amp; Stein, P. R. &amp;ldquo;
. &amp;ldquo;, 1964, Mathematics of Computation, 18, 408-413&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Heath-Brown, D. R., Lioen, W. M., &amp;amp; te Riele, H. J. J.&amp;quot;
&amp;rdquo;, 1993, Mathematics of Computation, 61, 235-244&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Andrew Bremner, &amp;ldquo;
&amp;rdquo;, 1993&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;B. Conn and L. Vaserstein, &amp;ldquo;On sums of three integral cubes&amp;rdquo;, 1994, Contemp. Math. 166, 285-294.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;Eric Pine, Kim Yarbrough, Wayne Tarrant and Michael Beck, Noam D. Elkies, &amp;ldquo;
&amp;rdquo;, 2000, ANTS IV&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;Michael Beck, Eric Pine, Wayne Tarrant, Kim Yarbrough Jensen &amp;ldquo;New integer representations as the sum of three cubes&amp;rdquo;, 2007, Math. Comp. 76, 1683-1690 (
)&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;&lt;span class="openbook_template5"&gt;&lt;a href="http://openlibrary.org/authors/OL4281353A/Wacław_Sierpiński" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Wacław Sierpiński&lt;/a&gt; (1988). &lt;a href="http://openlibrary.org/books/OL2722939M/Elementary_theory_of_numbers" title="Click to view title in Open Library" target="_blank" rel="noopener"&gt;Elementary theory of numbers&lt;/a&gt;. North-Holland.&lt;span class="Z3988" title="ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=book&amp;amp;rft.btitle=Elementary+theory+of+numbers&amp;amp;rft.isbn=0444866620&amp;amp;rft.au=Wac%C5%82aw+Sierpi%C5%84ski&amp;amp;rft.pub=North-Holland&amp;amp;rft.date=1988"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; (
)&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Le spray de briques</title><link>https://drgoulu.com/2011/10/06/le-spray-de-briques/</link><pubDate>Thu, 06 Oct 2011 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2011/10/06/le-spray-de-briques/</guid><description>&lt;p&gt;Je dois à Steve Jobs ma découverte du marketing. Je m&amp;rsquo;en souviens comme si c&amp;rsquo;était hier, mais c&amp;rsquo;était en été 1984. Je bossais l&amp;rsquo;été dans la boutique d&amp;rsquo;informatique qui m&amp;rsquo;avait vendu un
 deux ans plus tôt, mais vendait surtout des
 comme machines &amp;ldquo;professionnelles&amp;rdquo;. Un matin juste à l&amp;rsquo;&amp;lsquo;ouverture entre une personne qui, comme beaucoup de clients à l&amp;rsquo;époque, n&amp;rsquo;avait pas une idée claire de ce qu&amp;rsquo;on pouvait faire avec un ordinateur. Mais après quelques questions il apparaît que le monsieur est un commerçant qui cherche plutôt un outil de travail qu&amp;rsquo;une machine à jeux. Donc je lui montre
,
 et un soft de compta au normes suisses, le tout sur l&amp;rsquo;Apple II, machine éprouvée depuis plusieurs années (1977) pour la modique somme d&amp;rsquo;environ 5000 Francs suisses de l&amp;rsquo;époque. Une fortune, mais ce n&amp;rsquo;est pas ce qui chicane le client.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Plusieurs années ???&amp;rdquo; demande-t-il étonné. &amp;ldquo;Vous n&amp;rsquo;avez rien de plus récent ? &amp;quot; - &amp;ldquo;Si Monsieur, nous venons de recevoir le nouvel ordinateur d&amp;rsquo;Apple ce matin même, ils l&amp;rsquo;ont appelé &amp;ldquo;
&amp;rdquo; Dieu sait pourquoi, nous n&amp;rsquo;avons pas encore eu le temps de le tester, mais je peux déjà vous dire qu&amp;rsquo;il faudra plusieurs mois avant qu&amp;rsquo;existent les logiciels qu&amp;rsquo;il vous faut&amp;hellip;&amp;rdquo; - &amp;ldquo;Je peux le voir quand même ?&amp;rdquo; - &amp;ldquo;Bien sur Monsieur, nous allons le découvrir ensemble&amp;rdquo; (en fait j&amp;rsquo;avais déjà lu pas mal à son sujet, notamment qu&amp;rsquo;il avait un processeur
, le rêve absolu à côté de mon 6502&amp;hellip;) Et me voilà donc en train de sortir &amp;ldquo;ça&amp;rdquo; d&amp;rsquo;un carton :&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2011/images/ab2c6c190e5c13051401764cf38a8d33_hu_93a833766f64e508.webp 320w, https://drgoulu.com/posts/2011/images/ab2c6c190e5c13051401764cf38a8d33_hu_ada9aeebf51e759c.webp 480w, https://drgoulu.com/posts/2011/images/ab2c6c190e5c13051401764cf38a8d33_hu_973ef914b6ffe497.webp 533w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2011/images/ab2c6c190e5c13051401764cf38a8d33_hu_93a833766f64e508.webp"
width="533"
height="625"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Comme je vous disais, il n&amp;rsquo;y a pas encore beaucoup de programmes pour cette machine, nous n&amp;rsquo;avons que ces 2 disquettes fournies avec le Macintosh :
, d&amp;rsquo;après le nom ça doit être un traitement de textes, et
, dont je n&amp;rsquo;ai aucune idée de ce que c&amp;rsquo;est, donc je vous propose de commencer par ça..&amp;rdquo; La disquette tourne pendant de longues secondes pendant lesquelles je vais chercher la liste de prix &amp;ldquo;Ah, et je dois vous prévenir : le Macintosh est bien plus cher que l&amp;rsquo;Apple II. Sans les logiciels, (mais peut-être avec l&amp;rsquo;imprimante, je me souviens plus) vous en aurez pour Frs 7000 au moins&amp;hellip;&amp;rdquo; Là dessus, l&amp;rsquo;écran affiche :&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt=""
src="https://drgoulu.com/posts/2011/images/b9054f55ed42a7ad6aa2bf26b7a1068f.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;La fin de l&amp;rsquo;histoire est incroyable, mais je vous jure qu&amp;rsquo;elle est vraie. Ca s&amp;rsquo;est passé exactement comme ça, quasiment dans le même délai qu&amp;rsquo;il vous faudra pour le lire. Je clique sur le spray, je clique sur la texture de briques, je spraie des briques sur la fenêtre et le client dit : &amp;ldquo;je prends celui là&amp;rdquo; !&lt;/p&gt;</description></item><item><title>Le &amp;quot;Sleep sort&amp;quot;</title><link>https://drgoulu.com/2011/06/19/le-sleep-sort/</link><pubDate>Sun, 19 Jun 2011 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2011/06/19/le-sleep-sort/</guid><description>&lt;p&gt;Tout a commencé* par un
: un anonyme propose un algorithme de tri en 2 lignes de code
:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;function f() {sleep &amp;quot;$1&amp;quot; echo &amp;quot;$1&amp;quot;} while [ -n &amp;quot;$1&amp;quot; ] do f &amp;quot;$1&amp;quot; &amp;amp; shift done wait&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Lorsqu&amp;rsquo;il est appelé avec une liste de N nombres comme dans &lt;code&gt;./sleepsort.bash 5 3 6 3 6 3 1 4 7 ,&lt;/code&gt; ce code lance un processus pour chacun des nombres n. Chaque processus effectue la fonction f, qui utilise la fonction
pour attendre n secondes avant d&amp;rsquo;afficher le nombre n. Dans l&amp;rsquo;exemple, le 7ème processus n&amp;rsquo;attendra qu&amp;rsquo;une seconde avant d&amp;rsquo;afficher &amp;ldquo;1&amp;rdquo;, le 4ème et le 6ème attendront 3 secondes avant d&amp;rsquo;afficher &amp;ldquo;3&amp;rdquo; dans un ordre qui n&amp;rsquo;a aucune importance et ainsi de suite jusqu&amp;rsquo;au dernier processus qui affichera &amp;ldquo;7&amp;rdquo; après 7 secondes. L&amp;rsquo;utilisateur verra ainsi s&amp;rsquo;afficher progressivement les N nombres triés dans l&amp;rsquo;ordre croissant.&lt;/p&gt;
&lt;p&gt;Depuis ce message on voit des implémentations de &amp;ldquo;Sleep sort&amp;rdquo; fleurir dans
programmation en utilisant
, et des
, anglophones surtout pour l&amp;rsquo;instant.&lt;/p&gt;
&lt;p&gt;Prétextant que ce programme mettrait plus de 11 jours à trier les deux nombres 1000000 et 673, certains considèrent le &amp;ldquo;sleep sort&amp;rdquo; comme un bon gag, ce qu&amp;rsquo;il est certainement à l&amp;rsquo;origine. Pour ma part j&amp;rsquo;ai 
de la 
. Voici pourquoi.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;abord, ce code est simple et fait l&amp;rsquo;éloge d&amp;rsquo;une grande qualité du programmeur : la paresse. Faire quelque chose d&amp;rsquo;utile simplement en attendant, quoi de plus beau ? A ce titre il mérite amplement sa place à côté du 
dont 
en français, du
ou des 
et 
sans intérêt, mais qui ont leur page Wikipédia.&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 240px; width: 100%;"&gt;&lt;a href="http://www.flickr.com/photos/30271386@N04/3016524792/in/photostream/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2011/images/3016524792_cdb7edf4c8_m-1_hu_3d3e671f745d1e2e.webp" srcset="https://drgoulu.com/posts/2011/images/3016524792_cdb7edf4c8_m-1_hu_3d3e671f745d1e2e.webp 240w" sizes="(max-width: 640px) 100vw, 240px" alt="Photo par Eben Regis sur flickr" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Photo par Eben Regis sur flickr&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Plus sérieusement, &amp;ldquo;Sleep sort&amp;rdquo; exploite de manière active l&amp;rsquo;écoulement du temps au lieu de le subir, ce qui est déjà intéressant en soi, mais pose également des questions intéressantes sur la
.&lt;/p&gt;
&lt;p&gt;Car le &amp;ldquo;génie&amp;rdquo; de cet algorithme, s&amp;rsquo;il vous avait échappé, est qu&amp;rsquo;il prend en apparence un temps proportionnel à max(n), le plus grand des nombres à trier, pour s&amp;rsquo;exécuter, plus un temps proportionnel à N pour créer les processus. Or les 
existants prennent un temps proportionnel à N.log(N). Il pourrait donc exister des cas où le &amp;ldquo;sleep sort&amp;rdquo; serait plus rapide. Mais est-ce vraiment le cas ?&lt;/p&gt;
&lt;p&gt;Traitons d&amp;rsquo;abord de la partie la plus perceptible du temps d&amp;rsquo;exécution, l&amp;rsquo;attente de max(n) secondes. Sur les machines actuelles,
, et on pourrait probablement passer aux microsecondes. En fait il faut simplement garantir que deux processus associés à deux nombres x et x+1 se réveillent dans le bon ordre et aient le temps de produire leur sortie sans perturber le réveil des processus suivants. Déjà ceci soulève plein de problèmes intéressants au niveau des systèmes d&amp;rsquo;exploitation, de l&amp;rsquo;accès aux ressources critiques etc. Mais quelles que soient les solutions techniques, il reste qu&amp;rsquo;on ne sait pas bien exprimer théoriquement la complexité d&amp;rsquo;un tel algorithme : en principe, une durée d&amp;rsquo;exécution proportionnelle à l&amp;rsquo;une des données conduit à une complexité O(1) supposée largement inférieure à O(N), ce qui n&amp;rsquo;est pas le cas en pratique ici.&lt;/p&gt;
&lt;p&gt;Ensuite la partie &amp;ldquo;proportionnelle à N&amp;rdquo; dans laquelle on crée les N processus est elle vraiment O(N) ? En principe oui, mais il existe une partie invisible : la gestion interne de la fonction système &amp;ldquo;sleep&amp;rdquo;. Dans tous les systèmes d&amp;rsquo;exploitation que je connais (au moins deux&amp;hellip;), &amp;ldquo;sleep&amp;rdquo; provoque l&amp;rsquo;insertion du processus dans une liste de tous les processus suspendus en attente de l&amp;rsquo;échéance d&amp;rsquo;un certain temps. Et pour éviter de parcourir toute la liste à chaque interruption du timer pour trouver quels processus doivent être réveillés, on la maintient triée dans l&amp;rsquo;ordre des réveils programmés. &amp;ldquo;Triée&amp;rdquo; ? Et oui&amp;hellip; : à chaque instruction &amp;ldquo;sleep&amp;rdquo;, rencontrée le processus est inséré au bon endroit. &amp;ldquo;Inséré&amp;rdquo; ? Et re-oui&amp;hellip; : l&amp;rsquo;exécution des N &amp;ldquo;sleep&amp;rdquo; revient à un &amp;ldquo;
&amp;rdquo;, d&amp;rsquo;une complexité O(N²) rédhibitoire.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Sleep sort&amp;rdquo; n&amp;rsquo;est donc pas un tri linéaire, du moins sur un ordinateur ayant beaucoup moins de N processeurs. Mais il soulève plein de questions intéressantes sur les algorithmes, les systèmes d&amp;rsquo;exploitation, l&amp;rsquo;architecture des ordinateurs et la psychologie des programmeurs.
!&lt;/p&gt;
&lt;p&gt;Note* : en fait l&amp;rsquo;idée est plus ancienne comme le montre ce post &amp;ldquo;
&amp;rdquo; datant de 2006&lt;/p&gt;</description></item><item><title>Et un ordinateur quantique, un !</title><link>https://drgoulu.com/2011/05/19/et-un-ordinateur-quantique-un/</link><pubDate>Thu, 19 May 2011 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2011/05/19/et-un-ordinateur-quantique-un/</guid><description>&lt;figure class="alignright" style="max-width: 320px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2011/images/d_wave_one_system_hu_e27d5258535b305d.webp" srcset="https://drgoulu.com/posts/2011/images/d_wave_one_system_hu_e27d5258535b305d.webp 320w, https://drgoulu.com/posts/2011/images/d_wave_one_system_hu_300163d29539b717.webp 480w, https://drgoulu.com/posts/2011/images/d_wave_one_system_hu_193e93bb96200ff.webp 692w" sizes="(max-width: 640px) 100vw, 320px" alt="Et en plus il a de la gueule. Enfin, autant qu&amp;#39;une boite noire éclairée par des LED bleues..." loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Et en plus il a de la gueule. Enfin, autant qu&amp;rsquo;une boite noire éclairée par des LED bleues&amp;hellip;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;La vague idée de l&amp;rsquo;
 est née dans les années 1970 à l&amp;rsquo;image d&amp;rsquo;une boutade de Richard Feynman:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;Nature is not classic, dammit, and if you want to make a simulation of nature you&amp;rsquo;d better make it quantum mechanical and by golly it is a wonderful problem.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ca paraissait être de la science-fiction pendant quelques décennies et voilà c&amp;rsquo;est fait : après quelques
et un partenariat avec Google, l&amp;rsquo;entreprise canadienne
le premier ordinateur quantique !&lt;/p&gt;
&lt;p&gt;Le D-Wave One est doté d&amp;rsquo;un processeur à 128
 &amp;ldquo;
&amp;rdquo; baptisé &amp;ldquo;Rainier&amp;rdquo;, spécialisé dans la résolution de problèmes d&amp;rsquo;
discrète, une classe de problèmes &amp;ldquo;NP&amp;rdquo; (Non Polynomial), dont la résolution est très lente voire impossible sur un ordinateur classique.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Rainier&amp;rdquo; n&amp;rsquo;a pas grand chose à voir avec la puce de nos PC : il utilise des
supraconductrices pour générer les qubits et exploite le
pour accéder à leur état. Les qubits effectuent ensuite l&amp;rsquo;optimisation par une méthode de &amp;ldquo;
&amp;rdquo;. Toutes ces notions sont bien éloignées du pain quotidien des informaticiens d&amp;rsquo;aujourd&amp;rsquo;hui&amp;hellip;. D&amp;rsquo;ailleurs un ordinateur quantique ne se &amp;ldquo;programme&amp;rdquo; pas réellement, il doit plutôt être configuré pour résoudre un problème donné, un peu à la manière des bons vieux
.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 393px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2011/images/ordinateur-quantique-L-UAkw55_hu_69ec8e62fa5a1a2b.webp" srcset="https://drgoulu.com/posts/2011/images/ordinateur-quantique-L-UAkw55_hu_69ec8e62fa5a1a2b.webp 320w, https://drgoulu.com/posts/2011/images/ordinateur-quantique-L-UAkw55_hu_bd02be4a03c06d29.webp 480w, https://drgoulu.com/posts/2011/images/ordinateur-quantique-L-UAkw55_hu_9e79c07e45544e8c.webp 760w" sizes="(max-width: 640px) 100vw, 393px" alt="Vue de Rainier, le processeur du D-Wave One" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Vue de &amp;quot;Rainier&amp;quot;, le processeur du D-Wave One&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Avec un prix catalogue de 10 millions de dollars, le D-Wave One s&amp;rsquo;adresse aux entreprises ayant un problème très particulier à résoudre. Tellement particulier qu&amp;rsquo;un ordinateur à 10 millions de dollars n&amp;rsquo;y parvient pas. J&amp;rsquo;aurais tendance à dire que le marché me semble limité, mais je m&amp;rsquo;en voudrais de répéter une erreur célèbre:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;Je pense qu&amp;rsquo;il y a un marché mondial pour quelque chose comme 5 ordinateurs.&amp;rdquo; (Thomas Watson, président d&amp;rsquo;IBM, 1943)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;(Edit du 28.9.2012 suite au commentaire de Manu : cette phrase n&amp;rsquo;est
)&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;M. W. Johnson et al &amp;ldquo;
&amp;rdquo;, 2011, Nature R. 473, pp 194–198&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Newns &amp;amp; Tsuei, &amp;ldquo;
&amp;rdquo;, 2002, United States Patent 6495854&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;&amp;quot;
&amp;quot; sur &amp;ldquo;
&amp;rdquo;, le blog de D-Wave&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;&amp;ldquo;Catching quantum mechanics in the act…&amp;rdquo; sur &amp;ldquo;
&amp;rdquo;, le blog de D-Wave&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;Hartmut Neven, &amp;ldquo;
&amp;rdquo;, 2009, Google Research Blog&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;page &amp;ldquo;
&amp;rdquo; sur Wikipedia&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;&amp;quot;
&amp;quot; sur The Stony Brook Algorithm Repository&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>les décorateurs, ou pourquoi j'aime toujours la programmation</title><link>https://drgoulu.com/2010/12/04/les-decorateurs-python/</link><pubDate>Sat, 04 Dec 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/12/04/les-decorateurs-python/</guid><description>&lt;p&gt;Je programme des ordinateurs depuis 30 ans, et tous les 5 ans environ je me demande pourquoi je continue à aimer ça. Et à chaque fois je découvre quelque chose qui provoque un &amp;ldquo;éclair haha&amp;rdquo;, une de ces illuminations cérébrales où l&amp;rsquo;on entrevoit le Génie dans toute sa Pureté avant de retomber sur sa chaise motivé pour les 5 ans suivants.&lt;/p&gt;
&lt;p&gt;Le dernier a été provoqué cette semaine par les &amp;ldquo;décorateurs&amp;rdquo; de Python, dont je vous parlerai plus bas.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2010/images/1e6c2b5ad4fd77ee9c967945b326090c_hu_e001748075368d38.webp 320w, https://drgoulu.com/posts/2010/images/1e6c2b5ad4fd77ee9c967945b326090c_hu_a064c69313869d17.webp 350w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2010/images/1e6c2b5ad4fd77ee9c967945b326090c_hu_e001748075368d38.webp"
width="350"
height="311"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Ma première extase informatique date donc de 1980 environ, je m&amp;rsquo;en souviens comme si c&amp;rsquo;était hier. Mon
2001 se programmait en BASIC, un langage qu&amp;rsquo;on a bien fait d&amp;rsquo;oublier. Mais une astuce (ou plutôt une horreur) sur le PET permettait de faire en sorte que le programme s&amp;rsquo;ajoute des lignes de programme à lui-même ! J&amp;rsquo;avais ainsi modifié le jeu &amp;ldquo;
&amp;rdquo; de
pour qu&amp;rsquo;il &amp;ldquo;apprenne&amp;rdquo; de nouveaux animaux de façon permanente. Un programme qui s&amp;rsquo;améliore lui-même, ça me fait encore rêver, 30 ans après&amp;hellip;&lt;/p&gt;
&lt;p&gt;Le second flash date de 1985, la grande époque de
. Un jour j&amp;rsquo;ai vu quelque chose comme ça:&lt;/p&gt;
\[pascal\]&lt;p&gt;function factorielle(n: integer): integer; begin if n &amp;lt;= 1 then result := 1 else result := n*factorielle(n-1); end;&lt;/p&gt;
\[/pascal\]&lt;p&gt;Une fonction qui s&amp;rsquo;appelle elle même ! Merveilleuse
, chaque fois que je te revois, je me rappelle mon émoi à notre première rencontre.&lt;/p&gt;
&lt;p&gt;Les années 1990 sont riches en &amp;ldquo;haha&amp;quot;s plus rapprochés mais moins intenses pendant mes études à l&amp;rsquo;EPFL : la
 en LISP, le moteur d&amp;rsquo;inférence de
,  la
 en d&amp;rsquo;ADA, qui semblait à l&amp;rsquo;époque bien plus importante que la programmation orientée objet, juste entrevue.  Et
, précurseur de la programmation parallèle trop tôt disparu.&lt;/p&gt;
&lt;p&gt;Un peu avant 1995, je découvre
et le flash se produit lorsque je comprends que c&amp;rsquo;est un véritable langage de programmation complet&amp;hellip; sans code ! Ou plus exactement que le langage graphique de LabView permet de programmer directement au niveau sémantique. Adieu &amp;ldquo;syntax error&amp;rdquo; ! Quel dommage que
vende cette merveille si cher et l&amp;rsquo;aie blindé de brevets défendus avec vigueur : un des concepts les plus innovants en programmation reste confiné à un cercle d&amp;rsquo;initiés alors qu&amp;rsquo;il aurait pu révolutionner l&amp;rsquo;informatique.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 821px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/f364f53ba469dc47f8253d2c53b9d310_hu_686879f385f928bd.webp" srcset="https://drgoulu.com/posts/2010/images/f364f53ba469dc47f8253d2c53b9d310_hu_686879f385f928bd.webp 320w, https://drgoulu.com/posts/2010/images/f364f53ba469dc47f8253d2c53b9d310_hu_2452d5fa1fbd9acd.webp 480w, https://drgoulu.com/posts/2010/images/f364f53ba469dc47f8253d2c53b9d310_hu_379f97455f41ee57.webp 760w" sizes="(max-width: 640px) 100vw, 821px" alt="un programme LabView avec blocs concurrents, boucles, tests etc." loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;un &amp;quot;programme&amp;quot; LabView avec blocs concurrents, boucles, tests etc.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Vers 2000, je constate qu&amp;rsquo;on m&amp;rsquo;avait menti : C++ est beaucoup plus qu&amp;rsquo;un C amélioré. C&amp;rsquo;est un grand festival de &amp;ldquo;haha&amp;rdquo; en quelques jours : les
, la
, l&amp;rsquo;
, la
, les
, le
, mais surtout la
(STL). Java et .NET ont des librairies de classes et fonctions à tout faire, mais C++ a une &amp;ldquo;méta-librairie&amp;rdquo;, un système qui produit du code très optimisé pour chaque opération spécifique, en utilisant notamment le concept d&amp;rsquo;
.&lt;/p&gt;
&lt;p&gt;En 2005, je lis &lt;span class="openbook_template5"&gt;&lt;a href="http://openlibrary.org/authors/OL2670915A/Andrei_Alexandrescu" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Andrei Alexandrescu&lt;/a&gt; (2001). &lt;a href="http://openlibrary.org/books/OL22119374M/Modern_C_plus_plus_design" title="Click to view title in Open Library" target="_blank" rel="noopener"&gt;Modern C [plus plus] design: generic programming and design patterns applied&lt;/a&gt;. Addison-Wesley.&lt;span class="Z3988" title="ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=book&amp;amp;rft.btitle=Modern+C+%5Bplus+plus%5D+design%3A+generic+programming+and+design+patterns+applied&amp;amp;rft.isbn=0201704315&amp;amp;rft.au=Andrei+Alexandrescu&amp;amp;rft.pub=Addison-Wesley&amp;amp;rft.date=2001"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;. Flash d&amp;rsquo;illumination : c&amp;rsquo;est génial, mais j&amp;rsquo;ai pas tout compris. Je le relis: re-flash: c&amp;rsquo;est encore plus génial que je pensais. Je le lis une troisième fois (à part &amp;ldquo;Les Robots&amp;rdquo; d&amp;rsquo;Asimov je n&amp;rsquo;ai jamais lu un livre 3 fois) : ça y&amp;rsquo;est je suis converti au &amp;ldquo;
&amp;rdquo;, une approche révolutionnaire de la programmation autorisée par une exploitation transcendantale de la combinaison C++, STL, et #macros. Les C++istes trouveront un petit
qui les convaincra à la fois de la puissance de cette approche, et de sa lourdeur d&amp;rsquo;écriture&amp;hellip;&lt;/p&gt;
&lt;p&gt;Et nous voici donc en 2010 où, poursuivant
, je tombe sur ça:&lt;/p&gt;
\[python\]&lt;p&gt;@cache() def fib(n): if n &amp;lt; 2: return 1 return fib(n-1) + fib(n-2)&lt;/p&gt;
\[/python\]&lt;p&gt;Même ceux qui ne parlent pas Python reconnaîtront une fonction récursive calculant le n-ième terme de la suite de Fibonacci, mais il y a une astuce : le @cache().&lt;/p&gt;
&lt;p&gt;Ca s&amp;rsquo;appelle un &amp;ldquo;décorateur&amp;rdquo; et en l’occurrence, le @cache() ajoute un comportement de
 (déjà mentionné
) à la fonction : si on appelle la fonction fib pour un n déjà calculé précédemment, le @cache() va renvoyer le résultat mémorisé avec un gain de vitesse appréciable plutôt que de recalculer la fonction, et ceci sans rien changer à la fonction elle-même!&lt;/p&gt;
&lt;p&gt;Et bien sur, le décorateur est lui-même écrit en Python : c&amp;rsquo;est
, et c&amp;rsquo;est une version simplifiée d&amp;rsquo;un
avec la librairie Python. Une
très variés est en train de naître (voyez par exemple les
, chers collègues&amp;hellip;), mais il me semble que les décorateurs permettent surtout de réaliser des choses ressemblant beaucoup aux &amp;ldquo;politiques&amp;rdquo; d&amp;rsquo;Alexandrescu avec une syntaxe plus simple qu&amp;rsquo;en C++. (Pythonistes, voyez 
)&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est pour cela que j&amp;rsquo;aime toujours la programmation : les langages gagnent en pouvoir d&amp;rsquo;abstraction en même temps que moi, et vice-versa. Chaque fois que je programme dans un nouveau langage, tout est plus simple, plus clair et plus vite juste que dans le précédent, et, luxe suprême,  je dois presser moins de touches. Les ordinateurs sont restés des esclaves qui camouflent leur stupidité derrière une vitesse stupéfiante, mais les concepteurs de langages, eux sont devenus vraiment malins. Merci
, grâce à toi j&amp;rsquo;en reprends pour 5 ans.&lt;/p&gt;</description></item><item><title>Adieu focale, bonjour plenoptique !</title><link>https://drgoulu.com/2010/10/07/adieu-focale/</link><pubDate>Thu, 07 Oct 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/10/07/adieu-focale/</guid><description>&lt;p&gt;Avez-vous vu ça ?&lt;/p&gt;
&lt;p&gt;youtube &lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/9H7yx31yslM"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;entreprise &amp;ldquo;Refocus Imaging&amp;rdquo; a mis au point une technologie qui permet de ne plus mettre au point* les photos! Concrètement, on peut rendre nette une photo floue, en réglant la focale après que la photo ait été prise, comme dans &amp;ldquo;les Experts&amp;rdquo; &amp;hellip; 
&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-plenoptic"&gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="plenoptic"
srcset="https://drgoulu.com/posts/2010/images/bb12ceb0a242ba8e2fd27cdd35c546e2_hu_e91d6a673fb13d75.webp 320w, https://drgoulu.com/posts/2010/images/bb12ceb0a242ba8e2fd27cdd35c546e2_hu_4c288558f7f7a405.webp 320w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2010/images/bb12ceb0a242ba8e2fd27cdd35c546e2_hu_e91d6a673fb13d75.webp"
width="320"
height="323"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;figcaption&gt;
plenoptic
&lt;/figcaption&gt;&lt;/figure&gt;
A un détail près : le logiciel ne suffit pas, il faut un
, équipé d&amp;rsquo;une matrice de micro-lentilles avant le capteur CCD. L&amp;rsquo;optique fonctionne comme illustré ci-contre:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;tous les rayons arrivant sur un pixel donné passent par une seule micro-lentille, et proviennent d&amp;rsquo;une zone donnée appelée &amp;ldquo;sous-ouverture&amp;rdquo; de la lentille principale&lt;/li&gt;
&lt;li&gt;tous les rayons passant par une &amp;ldquo;sous ouverture&amp;rdquo; sont focalisés par les différentes micro-lentilles sur des pixels distincts.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;L&amp;rsquo;image ainsi capturée ressemble à une mosaïque de petites images partielles prises de points légèrement différents (en réalité, il y a plus de micro-lentilles : l&amp;rsquo;équipe de Stanford qui a mis au point la technologie de &amp;ldquo;Refocus Imaging&amp;rdquo; utilise une matrice de 296 x 296 micro-lentilles
) :&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2010/images/7e76f3e58ed8a20fbfe639967f4af18e_hu_3ebe43be3f511496.webp 320w, https://drgoulu.com/posts/2010/images/7e76f3e58ed8a20fbfe639967f4af18e_hu_3175354b67371a5f.webp 347w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2010/images/7e76f3e58ed8a20fbfe639967f4af18e_hu_3ebe43be3f511496.webp"
width="347"
height="383"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Le principe d&amp;rsquo;un appareil plénoptique est similaire à celui d&amp;rsquo;un 
produisant des &amp;ldquo;images 3D&amp;rdquo; ou du &amp;ldquo;
&amp;rdquo; célèbre depuis Matrix : en prenant plusieurs images simultanément, on capture le &amp;ldquo;
&amp;rdquo; en 4D. Quatre dimensions parce qu&amp;rsquo;on reconstitue non seulement le point d&amp;rsquo;arrivée (x,y) des rayons sur l&amp;rsquo;image, mais aussi leur direction  (définie par deux angles).&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est cette information supplémentaire qui permet de recalculer la photo comme si elle était prise avec une focale différente, parmi beaucoup d&amp;rsquo;autres effets possibles. Ca parait un peu compliqué
, mais en fait il s&amp;rsquo;agit d&amp;rsquo;utiliser de 
en 2D ou en 4D
, des choses que les processeurs actuels savent faire à toute vitesse  (
, tu étais décidément génial).&lt;/p&gt;
&lt;p&gt;Un appareil &amp;ldquo;plenoptique&amp;rdquo; n&amp;rsquo;est pas plus gros qu&amp;rsquo;un appareil normal, n&amp;rsquo;a pas besoin de mise au point, et présente un autre avantage inattendu : on peut ouvrir le diaphragme beaucoup plus qu&amp;rsquo;avec un appareil classique pour une même profondeur de champ. Donc on peut obtenir des profondeurs de champ exceptionnelles, ou alors réduire le temps de pose&amp;hellip; Le prix à payer, car il y en a quand même un, est une diminution assez nette ** de la résolution. Ca tombe bien, on ne trouvait pas vraiment d&amp;rsquo;utilité pratique aux capteurs de plus de 10 Megapixels au moment où
&amp;hellip; Mais il y a peut être des
.&lt;/p&gt;
&lt;p&gt;Jusqu&amp;rsquo;ici le numérique a surtout remplacé le film, mais quand le &amp;ldquo;plénoptique&amp;rdquo; supprimera les réglages dans quelques années, la révolution numérique prendra tout son sens.&lt;/p&gt;
&lt;p&gt;Notes: * sic ** et re-sic :-)&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;p&gt;(merci à P.-F. pour les links)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Ren Ng et al, &amp;ldquo;
&amp;rdquo;, April 2005, Stanford University Computer Science Tech Report CSTR 2005-02&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;&lt;span class="altmetric-embed" data-badge-type="donut" data-badge-popover="right" data-doi="10.1145/1073204.1073256" style="float: right; margin: 0 0 0.5rem 0.5rem;"&gt;&lt;/span&gt;
Ren Ng, &amp;ldquo;
&amp;quot;,  July 2005, ACM Transactions on Graphics,&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Sri Rama Prasanna Pavani &amp;ldquo;
&amp;rdquo;, 2005, présentation MO-ISL, CU Boulder&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Al-Khawarizmismes</title><link>https://drgoulu.com/2010/07/12/al-khawarizmismes/</link><pubDate>Mon, 12 Jul 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/07/12/al-khawarizmismes/</guid><description>&lt;figure class="alignright" style="max-width: 400px; width: 100%;"&gt;&lt;a href="http://www.flickr.com/photos/heathendawn/169138578/in/photostream/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/5_169138578_e50f81f93c_m_d_hu_450a81ee104f1190.webp" srcset="https://drgoulu.com/posts/2010/images/5_169138578_e50f81f93c_m_d_hu_450a81ee104f1190.webp 240w" sizes="(max-width: 640px) 100vw, 400px" alt="%image_alt%" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;statue d&amp;rsquo;Al-Khawarizmi en Ousbekistan, par Heathen Dawn sur Flickr&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Dans les années 800, le mathématicien perse
 introduit le zéro (indien) dans les chiffres arabes, décrit comment résoudre les équations du second degré, et propose de résoudre certains problèmes mathématiques en répétant une séquence d&amp;rsquo;opérations jusqu&amp;rsquo;à ce qu&amp;rsquo;un &amp;ldquo;critère d&amp;rsquo;arrêt&amp;rdquo; soit satisfait. Au XIIème siècle, les moines latins nomment &amp;ldquo;algorismus&amp;rdquo; cette méthode d&amp;rsquo;Al Khuwarizmi, qui devient &amp;ldquo;algorithme&amp;rdquo; en français en 1554.&lt;/p&gt;
&lt;p&gt;Pour cette idée fondamentale des mathématiques et indispensable en informatique, Al-Khwarizmi a reçu à titre posthume un
, et environ
commises par des ignares qui mettent un y grec à la place d&amp;rsquo;un  ī persan&amp;hellip;&lt;/p&gt;
&lt;p&gt;Après que des fous aient passé leur vie à calculer à la main des 
ou des
, c&amp;rsquo;est évidemment l&amp;rsquo;arrivée des ordinateurs qui a donné à l&amp;rsquo;algorithmique son importance actuelle. Aujourd&amp;rsquo;hui, vous utilisez des algorithmes tous les jours, sans le savoir. Par exemple lorsque vous cliquez sur le titre d&amp;rsquo;une colonne sur votre ordinateur, et que les lignes sont
. Ou lorsque vous
. A chaque fois que vous téléphonez ou utilisez votre carte de crédit, vous utilisez des algorithmes de cryptographie qui étaient de la science-fiction il y a 50 ans.&lt;/p&gt;
&lt;p&gt;Bon, ça c&amp;rsquo;était l&amp;rsquo;introduction. En fait cet article est motivé par la coïncidence de trois événements survenus la semaine passée :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mes collègues ont (enfin) réussi à faire fonctionner un algo que j&amp;rsquo;avais pondu pour optimiser les mouvements d&amp;rsquo;une machine. Un algo assez simple (optimisation 
, évidemment&amp;hellip;), bien testé, mais pas suffisamment documenté, donc pas bien utilisé, donc inspirant une certaine méfiance&amp;hellip; Mais là ça marche! Vidéo bientôt.&lt;/li&gt;
&lt;li&gt;La découverte de l&amp;rsquo;existence du
attribué tous les 4 ans aux auteurs d&amp;rsquo;un logiciel de calcul numérique particulièrement efficace, dont certains que je connaissais depuis peu (
et
) et d&amp;rsquo;autres à découvrir (
)&lt;/li&gt;
&lt;li&gt;Enfin, sur les
, un lien vers la page d&amp;rsquo;un chercheur listant
par ses collègues et lui. Il y en a 32, assez pour évaluer vos connaissances en la matière ou les rafraîchir, et apprendre éventuellement des choses:&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;l&amp;rsquo;
trouve le chemin &amp;ldquo;le plus court ou presque&amp;rdquo; entre deux nœuds d&amp;rsquo; un graphe. Il est 
et dans les jeux vidéo pour  les déplacements des personnages par &amp;ldquo;intelligence artificielle&amp;rdquo;&lt;/li&gt;
&lt;li&gt;
peut dans certains cas trouver un chemin meilleur qu&amp;rsquo;A*, mais nécessite plus de calculs.&lt;/li&gt;
&lt;li&gt;La
est la technique que les enfants utilisent pour chercher un mot dans le dictionnaire : on l&amp;rsquo;ouvre à la moitié, puis à la moitié de la moitié où se trouve le mot et ainsi de suite jusqu&amp;rsquo;à trouver la bonne page.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Branch and bound&amp;rdquo; :
est une méthode générique d&amp;rsquo;
permettant d&amp;rsquo;éviter d&amp;rsquo;évaluer toutes les possibilités.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;
est un truc de matheux datant de 1976, qui généralise à la fois le plus ancien algorithme connu, (l&amp;rsquo;
) et celui de l&amp;rsquo;
 (connue des Chinois déjà 1700 ans plus tôt&amp;hellip;)&lt;/li&gt;
&lt;li&gt;La
omniprésente dans nos fichiers informatiques. Il existe de nombreux algorithmes spécifiques, parmi lesquels la
me parait particulièrement géniale.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;
permet à deux personnes qui ne se connaissent pas d&amp;rsquo;échanger des informations confidentielles sur un canal non sécurisé. Indispensable en télécommunications.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;
détermine le chemin le plus court entre deux nœuds d&amp;rsquo;un graphe, sous certaines contraintes expliquées dans
encore.&lt;/li&gt;
&lt;li&gt;Les
permettent d&amp;rsquo;approximer des dérivées, comme dans la formule f&amp;rsquo;(x) = (f(x+h) - f(x-h)) / 2h. (Je les utilise tous les jours, mais est-ce vraiment des algorithmes ?)&lt;/li&gt;
&lt;li&gt;La
est une méthode d&amp;rsquo;optimisation sous contrainte. Elle permet d&amp;rsquo;obtenir une solution optimale à partir des solutions optimales de sous-problèmes. Curieusement, en 1976, on  a montré que les algorithmes de programmation dynamique sont équivalents à ceux de recherche d&amp;rsquo;un chemin optimal dans un graphe&amp;hellip;&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;
pour déterminer le plus grand diviseur commun (PGCD) de deux entiers est le plus ancien algorithme connu. Il est paru dans les &amp;ldquo;Eléments&amp;rdquo; d&amp;rsquo;Euclide autour de 300 av J.C et ne nécessite pas de factorisation des nombres.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;
 est très utilisé en traitement d&amp;rsquo;images.&lt;/li&gt;
&lt;li&gt;La
(FFT) est extrêmement utilisée en traitement du signal, et plein d&amp;rsquo;autres domaines, jusque dans
.&lt;/li&gt;
&lt;li&gt;La
est l&amp;rsquo;algorithme le plus connu pour obtenir le minimum d&amp;rsquo;une fonction à plusieurs variables.&lt;/li&gt;
&lt;li&gt;Les
 permettent de manipuler plus facilement de grosses données en les réduisant à des empreintes.
de manière spectaculairement efficace. Mais ici aussi, j&amp;rsquo;hésiterais à parler d&amp;rsquo;algorithme pour une &amp;ldquo;simple&amp;rdquo; fonction&amp;hellip;&lt;/li&gt;
&lt;li&gt;Le
 est une structure de données exploitée dans beaucoup d&amp;rsquo;algorithmes informatiques très efficaces comme le
. ( Il faut absolument que je trouve le temps d&amp;rsquo;étudier le &amp;ldquo;
&amp;rdquo;, une structure de données &amp;ldquo;miraculeuse&amp;rdquo; découverte en 2000 )&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;
permet de multiplier 2 (grands) nombres plus vite qu&amp;rsquo;avec la méthode que vous avez apprise à l&amp;rsquo;école.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;
détermine des vecteurs de base &amp;ldquo;presque&amp;rdquo; orthogonaux à partir d&amp;rsquo;un grand nombre de vecteurs. Il est utilisé en cryptographie.&lt;/li&gt;
&lt;li&gt;l&amp;rsquo;
permet de résoudre le
&lt;/li&gt;
&lt;li&gt;Le
permet de réarranger rapidement une liste dans un ordre spécifique&lt;/li&gt;
&lt;li&gt;La
permet de trouver une  approximation des zéros d&amp;rsquo;une fonction, des solutions d&amp;rsquo;une équation à plusieurs variables, ou les minima/maxima.&lt;/li&gt;
&lt;li&gt;
est une technique d&amp;rsquo;&amp;ldquo;apprentissage renforcé&amp;rdquo;&lt;/li&gt;
&lt;li&gt;le
est la meilleure méthode de factorisation d&amp;rsquo;un nombre, à part l&amp;rsquo;
qui est à peine meilleur mais beaucoup plus compliqué. Si vous voulez casser une clé RSA, c&amp;rsquo;est ce qu&amp;rsquo;il vous faut, en plus de beaucoup de gros ordinateurs&amp;hellip;&lt;/li&gt;
&lt;li&gt;
, pour &amp;ldquo;RANdom SAmple Consensus&amp;rdquo; est un algorithme d&amp;rsquo;ajustement de paramètres à des données qui ignore les données &amp;ldquo;visiblement complètement fausses&amp;rdquo;&lt;/li&gt;
&lt;li&gt;RSA, pour
, est le génial algorithme de cryptographie a clé révélée utilisé dans la plupart des systèmes de sécurité actuels : carte bancaire, commerce électronique etc.&lt;/li&gt;
&lt;li&gt;l&amp;rsquo;
effectue des multiplications de grands entiers en utilisant la FFT. Sacrés mathématiciens&amp;hellip;&lt;/li&gt;
&lt;li&gt;l&amp;rsquo;
permet de résoudre les problèmes dits de
, dans lesquels on cherche à optimiser la valeurs d&amp;rsquo;une fonction de plusieurs variables devant satisfaire des contraintes d&amp;rsquo;inégalités.&lt;/li&gt;
&lt;li&gt;La
permet de factoriser des matrices rectangulaires, donc de résoudre des systèmes linéaires surdéterminés (avec plus d&amp;rsquo;équations que d&amp;rsquo;inconnues). Elle est utilisée dans de nombreux domaines, de la robotique aux prévisions météo.&lt;/li&gt;
&lt;li&gt;Résoudre des systèmes d&amp;rsquo;équations linéaires par
ou
est l&amp;rsquo;une des opérations les plus communes en analyse numérique, utilisée dans pratiquement tous les domaines de l&amp;rsquo;ingénierie.&lt;/li&gt;
&lt;li&gt;les &amp;ldquo;tenseurs de structure&amp;rdquo; (
 en anglais) sont très utilisées en traitement d&amp;rsquo;image : ils permettent de quantifier l&amp;rsquo;appartenance d&amp;rsquo;un pixel à une région homogène. Méritent-ils de figurer dans les algorithmes ? la question est ouverte.&lt;/li&gt;
&lt;li&gt;
est une structure de données permettant de partitionner des données dans des ensembles disjoints, et de trouver rapidement à quel ensemble appartient une donnée ainsi que de réunir rapidement des ensembles.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;
, une
permettant de corriger les erreurs de transmission en télécommunication. Il est bien caché dans vos téléphones portables, mais il est là.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Connaissez-vous d&amp;rsquo;autres algorithmes dignes de figurer dans la liste ? les commentaires sont là pour les proposer.&lt;/p&gt;</description></item><item><title>La reconnaissance vocale est morte : pet à son âme.</title><link>https://drgoulu.com/2010/06/26/la-reconnaissance-vocale-est-morte/</link><pubDate>Sat, 26 Jun 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/06/26/la-reconnaissance-vocale-est-morte/</guid><description>&lt;p&gt;D&amp;rsquo;après &amp;ldquo;2001 l&amp;rsquo;Odyssée de l&amp;rsquo;Espace&amp;rdquo;, nos ordinateurs devraient comprendre notre voix depuis 9 ans. Depuis 1997, on trouve des logiciels de reconnaissance vocale pour PC, et depuis peu nos téléphones disposent de cette fonction. Mais on ne l&amp;rsquo;utilise pas. Je ne connais personne qui dicte ses e-mails, et vous ?&lt;/p&gt;
&lt;p&gt;Comme tous les geeks j&amp;rsquo;ai essayé de temps en temps, parfois passé une heure à lire des textes d&amp;rsquo;apprentissage de la voix la plus monocorde possible à la nouvelle version d&amp;rsquo;un soft, et puis abandonné devant ses piètres performances. Ca ne marche pas, ou pas assez bien.&lt;/p&gt;
&lt;p&gt;Robert Portner analyse cet échec dans  &amp;ldquo;
&amp;rdquo;, titre subtilement traduit en français dans le présent article.&lt;/p&gt;
&lt;p&gt;Le problème, c&amp;rsquo;est qu&amp;rsquo;après une phase de progrès rapides à la fin du siècle passé, le
plafonne à 10% depuis 2001 , soit environ le triple du taux d&amp;rsquo;erreur d&amp;rsquo;un être humain. Et encore, c&amp;rsquo;est pour l&amp;rsquo;anglais &amp;ldquo;standard&amp;rdquo;. Le taux d&amp;rsquo;erreur est bien plus élevé pour d&amp;rsquo;autres langues, et catastrophique pour une conversation entre supporters de foot à la sortie du match.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 480px; width: 100%;"&gt;&lt;a href="http://www.itl.nist.gov/iad/mig/publications/ASRhistory/index.html" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/892b91f37608e5959549c3c4a87512f4_hu_64785422f677e848.webp" srcset="https://drgoulu.com/posts/2010/images/892b91f37608e5959549c3c4a87512f4_hu_64785422f677e848.webp 320w, https://drgoulu.com/posts/2010/images/892b91f37608e5959549c3c4a87512f4_hu_eeca4fa1dd122403.webp 480w, https://drgoulu.com/posts/2010/images/892b91f37608e5959549c3c4a87512f4_hu_cf49fe6e16d99a07.webp 760w" sizes="(max-width: 640px) 100vw, 480px" alt="NIST_Benchmarks_revised.jpg.scaled1000" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Source: National Institute of Standards and Technology Benchmark Test History (1)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Pourtant dans les années 1990, des systèmes très fiables avaient été mis au point pour distinguer quelques mots bien choisis dans des cockpits d&amp;rsquo;avion ou des chiffres au téléphone, et on s&amp;rsquo;était légitimement attendus à ce que la Loi de Moore permette de traiter rapidement le langage naturel. Et effectivement, aujourd&amp;rsquo;hui on sait bien reconnaitre des mots isolés. On sait à peu près éliminer les absurdités non conformes à la grammaire dans des phrases simples comme &amp;ldquo;le chat ment je la sous rit.&amp;rdquo; Mais pour distinguer entre &amp;ldquo;le chas mange la souris&amp;rdquo;, &amp;ldquo;le chat mange là, sous l&amp;rsquo;riz&amp;rdquo; et  &amp;ldquo;le chaman gela, sourit&amp;rdquo; et , il faut comprendre le sens de la phrase, voire le contexte dans lequel elle est prononcée&amp;hellip;&lt;/p&gt;
&lt;p&gt;Si l&amp;rsquo;ordinateur doit connaitre la différence entre un quadrupède carnivore et le trou d&amp;rsquo;une aiguille pour traiter une phrase triviale, on imagine que ce n&amp;rsquo;est pas demain qu&amp;rsquo;on dictera des contrats* ou des rapports à une machine.  De gros projets ont été lancés par des poids lourds de l&amp;rsquo;informatique pour tenter de modéliser la connaissance humaine. Par exemple le projet MindNet de Microsoft
a analysé des millions de pages de textes existants pour construire un graphe sémantique gigantesque, duquel il ressort effectivement que dans une phrase comportant &amp;ldquo;chat&amp;rdquo; et &amp;ldquo;souris&amp;rdquo;,
. Un tel graphe peut certainement être utile en 
car on dispose d&amp;rsquo;un texte de départ, mais pour la reconnaissance vocale il faudrait étendre le graphe à la structure des phrases utilisées en conversation courante, qui peut être bien distincte du langage écrit. Et pour faire ça automatiquement, il faudrait la reconnaissance vocale&amp;hellip;&lt;/p&gt;
&lt;p&gt;Comme le note Portner, on pensait au début que la reconnaissance vocale était un premiers pas vers l&amp;rsquo;intelligence artificielle. Aujourd&amp;rsquo;hui de nombreux chercheurs estiment que l&amp;rsquo;intelligence artificielle est indispensable pour atteindre une reconnaissance vocale de qualité acceptable
. Les gros projets de recherche ont été abandonnés les uns après les autres, bloqués devant le mur si bien décrit par les
sur l&amp;rsquo;intelligence artificielle comme:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;Une année de travail sur l’intelligence artificielle est suffisante pour vous faire croire en Dieu&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Le nombre de recherches sur &amp;ldquo;reconnaissance vocale&amp;rdquo; ou &amp;ldquo;
&amp;rdquo; sur Google  baisse régulièrement depuis 2001. Comme aucune  idée fondamentalement nouvelle ne vient relancer la recherche, la reconnaissance vocale est morte, en toute discrétion.&lt;/p&gt;
&lt;p&gt;Note* : me rappelle l&amp;rsquo;histoire de la secrétaire d&amp;rsquo;un célèbre ingénieur de la génération disctaphone qui avait commandé &amp;ldquo;310 mètres d&amp;rsquo;isolation entre 2 étages&amp;rdquo; au lieu de &amp;ldquo;3 centimètres&amp;rdquo; . Ca c&amp;rsquo;est avec les 2% d&amp;rsquo;erreurs de transcription humaines&amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Microsoft Research :
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Janet M. Baker et al. &amp;quot; 
&amp;quot;, IEEE Signal Processing Magazine
\[75\]MAY 2009&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Optimisation de la Joconde</title><link>https://drgoulu.com/2010/06/14/optimisation-de-la-joconde/</link><pubDate>Mon, 14 Jun 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/06/14/optimisation-de-la-joconde/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2010/images/10c3a606506bb2299f7b51b61b0ea16f_hu_8bcd780715f0223d.webp 320w, https://drgoulu.com/posts/2010/images/10c3a606506bb2299f7b51b61b0ea16f_hu_315b0c3a1d12812b.webp 400w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2010/images/10c3a606506bb2299f7b51b61b0ea16f_hu_8bcd780715f0223d.webp"
width="400"
height="400"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Voici enfin l&amp;rsquo;occasion de consacrer un article marrant au célèbre mais barbant &amp;ldquo;
&amp;rdquo;. J&amp;rsquo;ai réalisé une applet en processing qui dessine Mona Lisa avec une seule ligne brisée zig-zaguant entre 100'000 points sans jamais s&amp;rsquo;entrecouper. De plus la ligne n&amp;rsquo;a ni début ni fin, elle forme un cycle. Autrement dit, on peut dessiner la Joconde comme un cercle déformé, sans lever le crayon&amp;hellip; Voici ce que ça donne ( c&amp;rsquo;est publié aussi 
:&lt;/p&gt;
\[processing\]&lt;p&gt;TSPart.pde&lt;/p&gt;
\[/processing\]&lt;p&gt;Le dessin a initialement été produit par 
, un prof de maths allemand qui étudie l&amp;rsquo; &amp;ldquo;Opt Art&amp;rdquo;, l&amp;rsquo;utilisation de techniques d&amp;rsquo;optimisation dans l&amp;rsquo;art. La
est assez simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;on prend une image en &amp;ldquo;niveaux de gris&amp;rdquo;&lt;/li&gt;
&lt;li&gt;on dispose un grand nombre N de points sur l&amp;rsquo;image, resserrés dans les zones sombres, plus espacés dans les zones claires. 
a eu l&amp;rsquo;idée d&amp;rsquo;utiliser l&amp;rsquo;algorithme &amp;ldquo;
&amp;rdquo;
qui fait ça de manière remarquable.&lt;/li&gt;
&lt;li&gt;Ensuite, il suffit de résoudre le problème du voyageur de commerce à N villes pour obtenir le circuit le plus court entre les N points, donc sans intersection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Quand vous lisez &amp;ldquo;il suffit de..&amp;rdquo;  , il faut vous méfier. C&amp;rsquo;est souvent sous cette formule lapidaire qu&amp;rsquo;on cache l&amp;rsquo;os. En réalité, le problème du voyageur de commerce (&amp;ldquo;Travelling Salesman Problem&amp;rdquo; en anglais, TSP dans la suite) est un problème &amp;ldquo;NP-complet&amp;rdquo;, un de ceux qui nécessite un nombre &amp;ldquo;non polynomial&amp;rdquo; d&amp;rsquo;opérations pour sa résolution, &amp;ldquo;non polynomial&amp;rdquo; étant un euphémisme. En l&amp;rsquo;occurence, il faut en principe mesurer la longueur des N! (N
&amp;hellip;)
possibles passant par les N points pour déterminer lequel est le plus court. Au delà de N=20, on oublie.&lt;/p&gt;
&lt;p&gt;Mais le TSP a un intérêt certain pour beaucoup d&amp;rsquo;applications pratiques dans lesquelles N est bien plus grand, ce qui justifie la recherche d&amp;rsquo;algorithmes efficaces mêmes s&amp;rsquo;ils ne fournissent pas la solution absolument optimale. Le site
est une mine d&amp;rsquo;exemples et d&amp;rsquo;infos sur les progrès de la résolution du TSP. On y trouve également
, un solveur de TSP open source très performant basé sur la
. Il détient le record du plus gros TSP résolu, pour N=85'500 calculé en  135 années de CPU, mais résout des problèmes raisonnables en un temps qui l&amp;rsquo;est aussi. J&amp;rsquo;ai eu l&amp;rsquo;occasion de m&amp;rsquo;en servir pour optimiser le parcours d&amp;rsquo;une perceuse de circuits imprimés où N valait autour de 1000: quelques minutes de calcul permettent d&amp;rsquo;économiser des secondes de travail par circuit. Il existe d&amp;rsquo;ailleurs un
pour résoudre vos (pas trop gros) problèmes de TSP.&lt;/p&gt;
&lt;p&gt;Pour revenir à la Joconde, elle fait l&amp;rsquo;objet d&amp;rsquo;un petit
car il n&amp;rsquo;est pas sur que le chemin affiché dans l&amp;rsquo;image soit le plus court possible entre les 100'000 points définis par R. Bosch. Ce chemin, calculé par Yuichi Nagata avec Concorde a une longueur de 5'757'191 unités, alors qu&amp;rsquo;on a pu déterminer que le chemin ne peut pas être plus court que 5'757'044 unités. Il est donc possible qu&amp;rsquo;il existe un chemin encore plus court de 0.0026% ! Tout ce qu&amp;rsquo;il vous faut pour le trouver, c&amp;rsquo;est le fichier 
, et touiller un peu le code de Concorde ou de son concurrent 
. Ah, et un superordinateur peut être utile aussi.  Si vous trouvez le chemin le plus court, vous gagnerez la somme mirobolante de $100 !&lt;/p&gt;
&lt;p&gt;&lt;em&gt;edit du 20/9/13&lt;/em&gt; : l&amp;rsquo;applet utilise maintenant Processing.js, mais le chargement des données est très lent&amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Robert Bosch, &amp;ldquo;
&amp;quot;, Math Horizons, February 2006, pages 6&amp;ndash;9.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Adrian Secord, &amp;ldquo;
&amp;rdquo;, 2002, Proceedings of 2nd
, Annecy, p 37-43&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Hardware, software, tabula ?</title><link>https://drgoulu.com/2010/04/10/hardware-software-tabula/</link><pubDate>Sat, 10 Apr 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/04/10/hardware-software-tabula/</guid><description>&lt;p&gt;Au début, tout était clair : un ordinateur était un assemblage de circuits électroniques formant le
, piloté par du
définissant la séquence d&amp;rsquo;opérations à effectuer. Et puis tout est devenu compliqué.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 340px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/5f191d5b335e83fb624df1763b405414_hu_f9aa2fba674af231.webp" srcset="https://drgoulu.com/posts/2010/images/5f191d5b335e83fb624df1763b405414_hu_f9aa2fba674af231.webp 320w, https://drgoulu.com/posts/2010/images/5f191d5b335e83fb624df1763b405414_hu_f87e8ac5ec04c4e8.webp 480w, https://drgoulu.com/posts/2010/images/5f191d5b335e83fb624df1763b405414_hu_cd0df948a08bb77c.webp 683w" sizes="(max-width: 640px) 100vw, 340px" alt="Charles Babbage, inventeur de la première machine programmable, et Ada Lovelace, auteur du premier logiciel" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Charles Babbage, inventeur de la première machine programmable, et Ada Lovelace, auteur du premier logiciel&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;D&amp;rsquo;une part, pour réaliser des opérations plus complexes, il est apparu plus simple de les &amp;ldquo;
&amp;rdquo; : les puces des processeurs incorporent du logiciel &amp;ldquo;figé&amp;rdquo; qui décompose chaque instruction du
en opérations encore plus simples.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;autre part, les
permettent désormais de réaliser des circuits électroniques très complexes par programmation. A l&amp;rsquo;aide d&amp;rsquo;un langage spécifique comme
, on décrit le fonctionnement du circuit, puis un compilateur génère des données que l&amp;rsquo;on écrit dans le circuit comme dans une mémoire afin de le configurer comme souhaité. De plus en plus de puces trônant dans vos téléphones portables, appareils photo, voitures ainsi que dans toutes les machines industrielles imaginables sont de ce type. On peut ainsi y implanter des fonctions spécifiques à l&amp;rsquo;application s&amp;rsquo;exécutant de façon extrêmement rapide, et au besoin adjoindre sur la même puce, par programmation toujours,  un &amp;ldquo;
&amp;rdquo; permettant d&amp;rsquo;exécuter un logiciel traditionnel. Bref, maintenant on peut programmer un circuit vierge pour qu&amp;rsquo;il se comporte comme un microprocesseur microprogrammé programmable, vous me suivez ?&lt;/p&gt;
&lt;p&gt;Les circuits &amp;ldquo;PLD&amp;rdquo; peuvent être programmés une fois pour toutes, éventuellement reprogrammés de temps en temps à l&amp;rsquo;instar d&amp;rsquo;une mémoire flash. Les
, plus récentes, se programment comme des mémoires RAM, et sont donc reprogrammables souvent et rapidement.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;étape suivante pourrait être de les reprogrammer en fonctionnement. C&amp;rsquo;est ce que propose l&amp;rsquo;entreprise
avec sa technologie &amp;ldquo;3D Spacetime&amp;rdquo; incarnée dans ses circuits
. Ces circuits peuvent être reprogrammés des milliers de fois par seconde et peuvent donc réaliser sur une seule puce des fonctions qui auraient nécessité plusieurs circuits très différents.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2010/images/59231ce74f91f545cd77ad5ea6c2f1cf_hu_f435884d854d846d.webp 320w, https://drgoulu.com/posts/2010/images/59231ce74f91f545cd77ad5ea6c2f1cf_hu_3623cda31062a958.webp 353w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2010/images/59231ce74f91f545cd77ad5ea6c2f1cf_hu_f435884d854d846d.webp"
width="353"
height="349"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
En quelque sort, Tabula réalise l&amp;rsquo;équivalent de puces &amp;ldquo;multicouches&amp;rdquo; en empilant des surfaces de silicium selon la dimension du temps.  On peut objecter que ceci réduit d&amp;rsquo;autant la vitesse des circuits, mais d&amp;rsquo;autre part, on peut optimiser la surface de silicium réellement utilisée à chaque étape, par exemple pour traiter plus de données en parallèle. Point non négligeable, cette technologie réduit aussi beaucoup le coût de l&amp;rsquo;interconnexion des puces : on remplace des connecteurs en or et du circuit imprimés multicouches par des bits de données. Bientôt un PC au format d&amp;rsquo;une boite d&amp;rsquo;allumette, voire au même prix ?&lt;/p&gt;
&lt;p&gt;Plus ça avance, plus la
me semble avoir encore de beaux jours devant elle. Merci à Malcolm pour avoir renforcé mon optimisme en me parlant de Tabula. Et peut-être bien que j&amp;rsquo;achèterai quelques actions quand ils seront cotés&amp;hellip;&lt;/p&gt;</description></item><item><title>Echelle interactive de l'Univers</title><link>https://drgoulu.com/2010/01/30/echelle-interactive-de-lunivers/</link><pubDate>Sat, 30 Jan 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/01/30/echelle-interactive-de-lunivers/</guid><description>&lt;p&gt;
indique une très jolie réalisation graphique en Flash permettant de zoomer dans les ordres de grandeur de l&amp;rsquo;Univers, sur le modèle des impérissables &amp;ldquo;
&amp;rdquo;, mais en interactif :&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 507px; width: 100%;"&gt;&lt;a href="http://www.newgrounds.com/portal/view/525347" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/365235cc413ae32a534a49db86b47f23_hu_e3100180b5f0a4d1.webp" srcset="https://drgoulu.com/posts/2010/images/365235cc413ae32a534a49db86b47f23_hu_e3100180b5f0a4d1.webp 320w, https://drgoulu.com/posts/2010/images/365235cc413ae32a534a49db86b47f23_hu_6bc5706d6f2b2c96.webp 480w, https://drgoulu.com/posts/2010/images/365235cc413ae32a534a49db86b47f23_hu_5c45b1f144b4536.webp 634w" sizes="(max-width: 640px) 100vw, 507px" alt="newsground" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;cliquez sur l&amp;rsquo;image pour la version interactive&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Il y a décidément encore un trou de plusieurs ordres de grandeur entre le &amp;ldquo;diamètre&amp;rdquo; du neutrino et la
&amp;hellip;&lt;/p&gt;</description></item><item><title>Tri réversible ?</title><link>https://drgoulu.com/2010/01/30/tri-reversible/</link><pubDate>Sat, 30 Jan 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/01/30/tri-reversible/</guid><description>&lt;figure class="alignright" style="max-width: 280px; width: 100%;"&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Sorting_quicksort_anim.gif" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/d4e5d0a778dba725091d8317e6bac939.gif" alt="animation de l&amp;#39;algorithme Quick Sort" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" /&gt;&lt;/a&gt;&lt;figcaption&gt;animation de l&amp;rsquo;algorithme Quick Sort&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;En informatique, le tri est une opération incontournable car il est beaucoup plus rapide de rechercher une information dans une liste triée que dans un fouillis. C&amp;rsquo;est pourquoi j&amp;rsquo;ai longtemps cru qu&amp;rsquo;une liste triée contenait plus d&amp;rsquo;information qu&amp;rsquo;une liste non triée, car je voyais le tri comme un pré-traitement permettant d&amp;rsquo;accélérer les opérations suivantes, donc un &amp;ldquo;plus&amp;rdquo; par rapport à une situation &amp;ldquo;moins&amp;rdquo; performante.&lt;/p&gt;
&lt;p&gt;Pris d&amp;rsquo;un doute il y a quelques années, j&amp;rsquo;avais posé la question sur un forum consacré à l&amp;rsquo;informatique théorique :&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;est-ce qu’une liste triée contient vraiment plus d’information qu’une liste non triée ?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Un érudit professeur m’avait répondu simplement ceci :&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;ce contient d’ est- information liste liste? non plus qu&amp;rsquo; qu&amp;rsquo; triée triée une une vraiment&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J’ai mis un moment à comprendre la profondeur de cette réponse : ma question, une fois les mots triés par ordre alphabétique, était devenue incompréhensible, et contenait donc moins d’information que la phrase originale ! Depuis je sais que
.&lt;/p&gt;
&lt;p&gt;
a reposé la question sous un angle intéressant : est-il possible de programmer un algorithme de tri &amp;ldquo;réversible&amp;rdquo;, permettant de remettre une liste triée dans son état initial ? Évidemment oui : il suffit de stocker en plus l&amp;rsquo;information perdue lors du tri, le plus simple étant de mémoriser l&amp;rsquo;état initial de la liste par exemple en ajoutant à chaque élément trié son numéro d&amp;rsquo;ordre :&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;ce2 contient7 d’10 est-1 information11 liste5 liste14 non15 plus9 qu'3 qu'12 triée6 triée?16 une4 une13 vraiment8 ”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour une liste contenant n éléments, on a besoin de log(n) bits* pour stocker chaque numéro, donc de n.log(n) bits au total.&lt;/p&gt;
&lt;p&gt;Peut-on faire mieux? On pourrait se dire que beaucoup d&amp;rsquo;
comme
permutent des éléments après les avoir comparés, et qu&amp;rsquo;il suffirait donc de stocker le résultat des comparaisons effectuées, soit un bit par test, pour pouvoir ensuite &amp;ldquo;défaire le tri&amp;rdquo; en parcourant la liste des bits à l&amp;rsquo;envers. Combien faut-ils de bits ? ben &amp;hellip; au moins n.log(n) aussi puisque c&amp;rsquo;est justement le nombre de comparaisons qui détermine la &amp;ldquo;complexité&amp;rdquo; des algorithmes de tri, et que les bons algorithmes ont une complexité de n.log(n).&lt;/p&gt;
&lt;p&gt;Rien ne sert de se casser la tête sur &amp;ldquo;algorithme de tri réversible&amp;rdquo;, il ne peut pas être plus efficace que de simplement stocker l&amp;rsquo;ordre initial des données. Etonnant non ?&lt;/p&gt;
&lt;p&gt;Le problème, c&amp;rsquo;est que la donnée du concours spécifie qu&amp;rsquo;on n&amp;rsquo;a le droit de stocker que 50% d&amp;rsquo;information supplémentaire par rapport à la taille des données : si on trie 4K octets, on n&amp;rsquo;a droit qu&amp;rsquo;à 2K de données supplémentaires. Or en fonction de ce qui précède on a besoin de 4096*log(4096) bits, soit 6K, plus que les données! En passant, ça signifie qu&amp;rsquo;en
de petites données, on peut perdre plus de la moitié de l&amp;rsquo;information contenu dans la liste initiale !&lt;/p&gt;
&lt;p&gt;Bref, personne n&amp;rsquo;a gagné le petit concours parce que ce n&amp;rsquo;était tout simplement pas possible.,&lt;/p&gt;
&lt;p&gt;Note* : en informatique, log(n) dénote évidemment le
binaire ou base 2&lt;/p&gt;</description></item><item><title>Das System</title><link>https://drgoulu.com/2010/01/13/das-system/</link><pubDate>Wed, 13 Jan 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/01/13/das-system/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="7010262-L"
srcset="https://drgoulu.com/posts/2010/images/7010262-L_hu_53ddf10b499dda62.webp 320w, https://drgoulu.com/posts/2010/images/7010262-L_hu_58ff41c909e3f681.webp 321w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2010/images/7010262-L_hu_53ddf10b499dda62.webp"
width="321"
height="500"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Entre le foie gras et les flocons, j&amp;rsquo;ai dévoré &amp;ldquo;Das System&amp;rdquo;, un thriller technologique de l&amp;rsquo;allemand Karl Olsberg sur l&amp;rsquo;apparition d&amp;rsquo;une intelligence artificielle distribuée sur internet.&lt;/p&gt;
&lt;p&gt;Une startup (allemande) crée une sorte de
pour prévoir la météo en utilisant la puissance de calcul des PC disséminés sur internet. Mais le truc devient un virus (un BOINC viral&amp;hellip; idée à retenir &amp;hellip;), et le système devient intelligent, conscient, et dangereux&amp;hellip;&lt;/p&gt;
&lt;p&gt;Vous avez peur ? Science-fiction futuriste ? En fait, plusieurs penseurs et scientifiques soutiennent  que nous ne sommes qu&amp;rsquo;à quelques décennies de la
, le moment où les outils que nous avons crées n&amp;rsquo;auront plus besoin de nous pour fonctionner, ni pour produire d&amp;rsquo;autres outils. Aujourd&amp;rsquo;hui déjà, on estime que la puissance de
humain, et la
nous promet l&amp;rsquo;équivalent artificiel des cerveaux de toute l&amp;rsquo;humanité dans 35 ans maximum&amp;hellip;&lt;/p&gt;
&lt;p&gt;Comme le mentionne un prof dans le roman, les microprocesseurs se reproduisent désormais beaucoup plus vite que les humains. Ils &amp;ldquo;se&amp;rdquo; reproduisent, car la conception et la production de machines ne peut plus s&amp;rsquo;envisager sans machines. En même temps qu&amp;rsquo;une extinction d&amp;rsquo;espèces basées sur la chimie du carbone, sommes-nous en train de démarrer une biologie du silicium ? Pour l&amp;rsquo;instant nous sommes encore indispensables pour certaines opérations délicates, notamment programmer, mais pour combien de temps ? Si un jour un logiciel devient capable de s&amp;rsquo;auto-améliorer en modifiant son propre code, ce ne sera plus qu&amp;rsquo;une question de secondes avant qu&amp;rsquo;on doive devenir très polis avec nos ordinateurs, dans le meilleur des cas&amp;hellip;&lt;/p&gt;
&lt;p&gt;La force du roman est de rendre ce scénario assez vraisemblable malgré d&amp;rsquo;inévitables raccourcis réducteurs, ou du moins de susciter la réflexion. Un bon bouquin à la Crichton donc, mais vous pouvez aussi attendre le film qui ne devrait pas tarder&amp;hellip;&lt;/p&gt;
&lt;h3 id="référence-"&gt;Référence :&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="openbook_template5"&gt;&lt;a href="http://openlibrary.org/authors/OL7064805A/Karl_Olsberg" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Karl Olsberg&lt;/a&gt; (2009). &lt;a href="http://openlibrary.org/books/OL25167995M/Das_System" title="Click to view title in Open Library" target="_blank" rel="noopener"&gt;Das System&lt;/a&gt;. Actes Sud.&lt;span class="Z3988" title="ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=book&amp;amp;rft.btitle=Das+System&amp;amp;rft.isbn=9782742782581&amp;amp;rft.au=Karl+Olsberg&amp;amp;rft.pub=Actes+Sud&amp;amp;rft.date=2009"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="voir-aussi"&gt;Voir aussi:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
et
(en allemand)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;
sur La culotte à l&amp;rsquo;envers&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Atlas Digital de l'Univers</title><link>https://drgoulu.com/2009/12/20/atlas-digital-de-lunivers/</link><pubDate>Sun, 20 Dec 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/12/20/atlas-digital-de-lunivers/</guid><description>&lt;p&gt;le
a produit &amp;ldquo;L&amp;rsquo;Univers Connu&amp;rdquo;, une sorte de remake des &amp;ldquo;
&amp;rdquo; mais dans lequel la position des étoiles et des galaxies correspond aux mesures actuelles:&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 760px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/17jymDn0W6U"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;En prime, ils offrent l&amp;rsquo;
utilisé pour cette réalisation avec le logiciel de visualisation &amp;ldquo;PartiView&amp;rdquo; au
, ce qui vous permet d&amp;rsquo;explorer l&amp;rsquo;Univers connu sur votre propre ordinateur et de réaliser votre propre voyage intersidéral dans une qualité graphique assez spectaculaire.&lt;/p&gt;
&lt;p&gt;
est un visualiseur de données développé par le NCSA et distribué en open source. Outre l&amp;rsquo;Atlas Digital, il est utilisé dans de nombreux travaux scientifiques en astrophysique comme
qui montre la trajectoire des étoiles proches du
&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 400px; width: 100%;"&gt;&lt;a href="https://drgoulu.com/2007/06/26/le-trou-noir-central-de-la-voie-lactee-revele/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/3147d85aa10abf7b1ab15cfd988e2908_hu_94f7177610181246.webp" srcset="https://drgoulu.com/posts/2009/images/3147d85aa10abf7b1ab15cfd988e2908_hu_94f7177610181246.webp 320w, https://drgoulu.com/posts/2009/images/3147d85aa10abf7b1ab15cfd988e2908_hu_c77d35bda853aaa4.webp 480w, https://drgoulu.com/posts/2009/images/3147d85aa10abf7b1ab15cfd988e2908_hu_fafb3cf5dd384faa.webp 600w" sizes="(max-width: 640px) 100vw, 400px" alt="Trajectoires des étoiles proches du centre galactique. Cliquez pour comparer aux observations" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Trajectoires des étoiles proches du centre galactique. Cliquez pour comparer aux observations&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Sur la page de PartiView, on trouve de nombreuses données astronomiques et textures de planètes qui en font un planétarium très complet et puissant, quoique moins facile d&amp;rsquo;emploi que
ou
par exemple.&lt;/p&gt;
&lt;p&gt;source :
&lt;/p&gt;</description></item><item><title>reMap</title><link>https://drgoulu.com/2009/07/27/remap/</link><pubDate>Mon, 27 Jul 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/07/27/remap/</guid><description>&lt;p&gt;Le
s&amp;rsquo;accompagne de travaux intensifs sur la visualisation d&amp;rsquo;énorme quantités de données, un domaine qui combine maths (graphes, algorithmique &amp;hellip;) et art. Le site
répertorie des centaines de visualisation extrêmement variées réalisées pour des applications aussi diverses que la biologie, la
, la politique, internet et les réseaux sociaux etc.&lt;/p&gt;
&lt;p&gt;Avec toutes ces visualisations, il devenait utile de disposer d&amp;rsquo;un visualisateur de visualisations&amp;hellip; C&amp;rsquo;est ce qu&amp;rsquo;ont réalisé les infographistes de
dont j&amp;rsquo;avais déjà parlé
avec une nouvelle réalisation épatante :
.&lt;/p&gt;
&lt;p&gt;
ReMap permet de naviguer de façon interactive et animée dans
en mettant en évidence les relations entre les visualisations.&lt;/p&gt;
&lt;p&gt;Heures de navigation instructive et multicolore droit devant!&lt;/p&gt;
&lt;p&gt;source :
&lt;/p&gt;</description></item><item><title>Comment marche Shazam</title><link>https://drgoulu.com/2009/07/11/comment-marche-shazam/</link><pubDate>Sat, 11 Jul 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/07/11/comment-marche-shazam/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2009/images/e47ef30951dab1d02fbd45117ec61e0c_hu_a08e6b1033e5dc62.webp 260w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2009/images/e47ef30951dab1d02fbd45117ec61e0c_hu_a08e6b1033e5dc62.webp"
width="260"
height="232"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Si vous ne connaissez pas
, demandez à un propriétaire d&amp;rsquo;iPhone (eux) ou de Google Phone sous Androïd (
) de vous montrer cette application incroyable. Si personne dans votre entourage ne vit au 21ème siècle, vous  pouvez toujours regarder 
.&lt;/p&gt;
&lt;p&gt;Vous ne rêvez pas : Shazam est capable d&amp;rsquo;identifier en quelques secondes la musique que vous êtes en train d&amp;rsquo;écouter à la radio, dans un bar bruyant, ou le générique d&amp;rsquo;une émission TV ou que sais-je. On dirige le micro du téléphone vers un haut-parleur, on clique un seul bouton et Shazam! le titre du morceau apparait, avec les liens qu&amp;rsquo;il faut pour l&amp;rsquo;acheter, évidemment. Business is business.&lt;/p&gt;
&lt;p&gt;Ce qui nous intéresse ici, c&amp;rsquo;est de savoir comment diable Shazam fait pour reconnaitre quasi-instantanément 10 secondes de son parmi 8 millions de morceaux de musique de 3 minutes chacun, soit un total de 1.44 milliards de secondes, ou 45 ans de musique, et ceci même lorsque la musique est diffusée par une mauvaise sono et captée par un mauvais micro dans un environnement bruité. Ca ne vous épate peut être pas si vous n&amp;rsquo;êtes pas dans la technique, mais moi je suis resté coi d&amp;rsquo;une hébétude aussi stupéfaite qu&amp;rsquo;interloquée. Sur le cul, quoi.&lt;/p&gt;
&lt;p&gt;Pour comprendre, j&amp;rsquo;ai un peu fouillé et trouvé que la technologie appartient à
qui a notamment acquis la propriété intellectuelle de dénommés
et David Culbert. Leur brevet de 2003 &lt;/p&gt;
\[1\]&lt;p&gt; est un modèle du genre : il décrit le système en termes suffisamment généraux pour comprendre le principe, mais en évitant soigneusement de donner des informations précises sur comment ça marche vraiment. Mais voici tout de même ce que j&amp;rsquo;en ai compris.&lt;/p&gt;
&lt;p&gt;Shazam compare des &amp;ldquo;empreintes&amp;rdquo; calculées à des instants remarquables du morceau, par exemple lorsque des notes apparaissent nettement dans le diagramme temps/fréquence du morceau. Pour des raisons expliquées plus bas il faut comparer environ une centaine d&amp;rsquo;empreintes, et comme Shazam demande d&amp;rsquo;enregistrer une dizaine de secondes de musique, j&amp;rsquo;en déduis qu&amp;rsquo;ils prennent environ 10 empreintes par seconde, donc que chaque morceau est stocké chez eux sous la forme de 1800 empreintes environ.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 382px; width: 100%;"&gt;&lt;a href="http://www.rejc2.co.uk/programs/fft/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/a89524a9c5e8c9a9e2b18ea8e0ea116c_hu_7e5edd1d87d5e2fe.webp" srcset="https://drgoulu.com/posts/2009/images/a89524a9c5e8c9a9e2b18ea8e0ea116c_hu_7e5edd1d87d5e2fe.webp 320w, https://drgoulu.com/posts/2009/images/a89524a9c5e8c9a9e2b18ea8e0ea116c_hu_dffe0df684e6bd48.webp 480w, https://drgoulu.com/posts/2009/images/a89524a9c5e8c9a9e2b18ea8e0ea116c_hu_e287a51fba415566.webp 760w" sizes="(max-width: 640px) 100vw, 382px" alt="FFT est un joli petit programme qui affiche le diagramme temps/fréquence dun mp3" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;&amp;quot;FFT&amp;quot; est un joli petit programme qui affiche le diagramme temps/fréquence d&amp;rsquo;un mp3&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Le brevet est extrêmement vague sur le problème clé du calcul des empreintes. Il mentionne une liste de caractéristiques du son qui pourraient être utilisées, et indique qu&amp;rsquo;un choix judicieux permet de s&amp;rsquo;affranchir de diverses perturbations du son, en particulier de décalages fréquentiels, mais surtout que l&amp;rsquo;empreinte peut être ramenée à un nombre de 32 bits seulement. Avec ce qui précède, il en résulte que les empreintes d&amp;rsquo;un morceau complet ne nécessitent que 7K de mémoire, et que toute la base de données de Shazam tient sur 54 Gigabytes seulement, ce qui veut dire qu&amp;rsquo;elle peut tenir dans la mémoire RAM d&amp;rsquo;une vingtaine de PC actuels.&lt;/p&gt;
&lt;p&gt;Reste à retrouver dans cette masse d&amp;rsquo;empreintes la centaine d&amp;rsquo;empreintes obtenues à partir de la musique transmise depuis votre téléphone. Et là, la méthode est génialement simple : Pour chaque empreinte, Shazam regarde à quels morceaux elle pourrait appartenir en utilisant simplement l&amp;rsquo;empreinte comme une clé dans la base de données. En effet, comme 32 bits permettent de coder plus de 4 milliards de possibilités alors que la base ne contient &amp;ldquo;que&amp;rdquo; 14 milliards d&amp;rsquo;empreintes, une empreinte donnée se retrouve en moyenne dans 3 morceaux seulement. Puisque les empreintes tirées de l&amp;rsquo;échantillon sont bruitées, il faut comparer une centaine d&amp;rsquo;empreinte qui vont chacune correspondre à 3 morceaux, donc on se retrouvera avec 300 morceaux potentiellement candidats.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est là que le brevet de Shazam frappe fort : si 2 empreintes seulement correspondent à un même morceau, on considère que c&amp;rsquo;est celui-là ! En effet, il n&amp;rsquo;y a qu&amp;rsquo;environ un risque sur 25'000 que l&amp;rsquo;un des 300 morceaux suspecté à cause d&amp;rsquo;une empreinte bruitée corresponde à l&amp;rsquo;un des 3 morceaux identifié par une empreinte correcte.&lt;/p&gt;
&lt;p&gt;La technologie de Shazam/Landmark permet aussi d&amp;rsquo;autres applications, comme reconnaître la musique utilisée dans les bandes son des vidéos sur YouTube et la virer si elle est soumise à copyright, ou peut-être aussi identifier des mp3 échangés sur des réseaux p2p, des trucs comme ça &amp;hellip;&lt;/p&gt;
&lt;p&gt;Car pour la reconnaissance de la musique, il y a désormais encore plus fort que Shazam :
. Avec Midomi, il suffit de chantonner, siffloter ou hmmm-hmmm-er un air pour qu&amp;rsquo;il en retrouve le titre et l&amp;rsquo;auteur. Mais ça m&amp;rsquo;épate moins parce qu&amp;rsquo;avec moi, ça ne marche pas. Ni &amp;ldquo;Yellow Submarine&amp;rdquo;, ni &amp;ldquo;Frère Jacques&amp;rdquo;, ni même 
, rien.&lt;/p&gt;
&lt;h3 id="référence"&gt;Référence&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;WANG, Avery Li-Chun and CULBERT, Daniel, &amp;ldquo;Robust and invariant audio pattern matching&amp;rdquo;, 2003,
&lt;/li&gt;
&lt;li&gt;Avery Wang, &amp;ldquo;An Industrial-Strength Audio Search Algorithm&amp;rdquo;, 2003, ISMIR 2003, 4th International Conference on Music Information Retrieval, Baltimore, Maryland, USA  
\[article pdf](http://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf)\]
\[[slides pdf\](
]_[[slides_pdf)(http://ismir2003.ismir.net/presentations/Wang.pdf)&lt;/li&gt;
&lt;li&gt;
\[altmetric doi="10.1145/1145287.1145312" float="right"\]Avery Wang &amp;ldquo;The Shazam music recognition service&amp;rdquo;, 2006 , Communications of the ACM - Music information retrieval Volume 49 Issue 8, Pages 44-48  
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Il y a plein de place en bas</title><link>https://drgoulu.com/2009/06/11/il-y-a-plein-de-place-en-bas-2/</link><pubDate>Thu, 11 Jun 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/06/11/il-y-a-plein-de-place-en-bas-2/</guid><description>&lt;figure class="alignright" style="max-width: 320px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/3522581edbadc8634573a141f3d3829a_hu_faa37c91c76dc77a.webp" srcset="https://drgoulu.com/posts/2009/images/3522581edbadc8634573a141f3d3829a_hu_faa37c91c76dc77a.webp 320w, https://drgoulu.com/posts/2009/images/3522581edbadc8634573a141f3d3829a_hu_fafb5a7e49a323e.webp 480w, https://drgoulu.com/posts/2009/images/3522581edbadc8634573a141f3d3829a_hu_ada5abbeba887ab4.webp 760w" sizes="(max-width: 640px) 100vw, 320px" alt="What Would Richard Feynman Do ? Une tentative de modélisation de sa pensée." loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;tentative de modélisation de la pensée de Feynman&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;Traduction de la présentation que 
 a donné le 29 décembre 1959 à la réunion annuelle de l&amp;rsquo;American Physical Society à (Caltech). Intitulé &amp;ldquo;
&amp;rdquo;, ce discours visionnaire pose les bases de la course à la miniaturisation qui nous fournit chaque année des ordinateurs et autres gadgets plus puissants, plus fiables et moins chers, et qui nous amène vers les 
.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Traduit par Philippe Guglielmetti (
) et Maxence Dolle* en 2009 
&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;J&amp;rsquo;imagine que beaucoup de physiciens expérimentateurs doivent envier les hommes comme Kamerlingh Onnes, qui a découvert un domaine sans fond comme la basse température, dans lequel on peut creuser indéfiniment. Un tel homme est un chef de file et a un quasi monopole, temporaire, dans une aventure scientifique. Percy Bridgman, en concevant un moyen d&amp;rsquo;obtenir des pressions supérieures, a aussi ouvert un nouveau domaine pour lui et pour nous. La technique du vide de plus en plus poussé est un développement continu de même nature.&lt;/p&gt;
&lt;p&gt;Je voudrais décrire un domaine dans lequel peu a été fait, mais où d&amp;rsquo;énormes progrès peuvent en principe être fait. Ce domaine n&amp;rsquo;est pas tout à fait de la même nature que les autres dans la mesure où il nous apporte pas beaucoup sur la physique fondamentale (&amp;ldquo;Quelles sont les particules étranges?&amp;rsquo;&amp;rsquo;), mais il concerne plus l&amp;rsquo;état solide de la matière, et pourrait nous dire beaucoup de choses très intéressantes sur les phénomènes étranges qui se produisent dans des situations complexes. En outre, le point le plus important, c&amp;rsquo;est qu&amp;rsquo;il aurait un très grand nombre d&amp;rsquo;applications techniques.&lt;/p&gt;
&lt;p&gt;Ce dont je veux parler est le problème de la manipulation et le contrôle des choses à très petite échelle.&lt;/p&gt;
&lt;p&gt;Dès que je mentionne cela, les gens me parlent de la miniaturisation, et dans quelle mesure elle a déjà progressé aujourd&amp;rsquo;hui. Ils me parlent de moteurs électriques de la taille de l&amp;rsquo;ongle de votre petit doigt. Et il y a un appareil sur le marché, me disent-ils, avec lequel vous pouvez écrire la prière du Seigneur sur la tête d&amp;rsquo;une épingle. Mais ceci n&amp;rsquo;est rien, ce n&amp;rsquo;est que le premier arrêt dans la direction dont je veux parler. Le monde qui est en dessous est incroyablement petit. En l&amp;rsquo;an 2000, date à laquelle ils auront du recul sur notre époque, ils se demanderont pourquoi il a fallu attendre 1960 pour que le monde commence sérieusement à aller dans cette direction.&lt;/p&gt;
&lt;h3 id="pourquoi-ne-pourrions-nous-pas-écrire-lensemble-de-24-volumes-de-lencyclopedia-brittanica-sur-une-tête-dépingle"&gt;Pourquoi ne pourrions-nous pas écrire l&amp;rsquo;ensemble de 24 volumes de l&amp;rsquo;Encyclopedia Brittanica sur une tête d&amp;rsquo;épingle?&lt;/h3&gt;
&lt;p&gt;Voyons ce qui serait en cause. Une tête d&amp;rsquo;épingle a un diamètre de un seizième de pouce. Si vous agrandissez son diamètre d&amp;rsquo;un facteur 25'000, la surface de la tête est alors égale à la surface de toutes les pages de l&amp;rsquo;encyclopédie Brittanica. Par conséquent, tout ce qu&amp;rsquo;il serait nécessaire de faire serait de réduire la taille tous les textes de l&amp;rsquo;encyclopédie 25000 fois. Est-ce possible? Le pouvoir de résolution de l&amp;rsquo;œil est d&amp;rsquo;environ 1 / 120 de pouce, ce qui est à peu près le diamètre d&amp;rsquo;un des petits points sur la trame des illustrations en noir/blanc de l&amp;rsquo;Encyclopédie. Ceci, lorsque vous le réduisez 25'000 fois, a encore un diamètre de 80 angströms, soit 32 atomes d&amp;rsquo;un métal ordinaire. En d&amp;rsquo;autres termes, un de ces points couvrirait encore environ 1000 atomes. Ainsi, chaque point peut être réduit à cette taille comme l&amp;rsquo;exige la photogravure, et il ne fait aucun doute qu&amp;rsquo;il y a assez de place sur la tête d&amp;rsquo;une épingle pour contenir toute l&amp;rsquo;Encyclopédie Brittanica.&lt;/p&gt;
&lt;p&gt;En outre, si on peut l&amp;rsquo;écrire ainsi, elle pourra être lue. Imaginons qu&amp;rsquo;on écrive les lettre de métal en relief, en embossant le noir et les lettres réduites à 1 / 25'000ème de leur taille ordinaire. Comment pourrions-nous lire?&lt;/p&gt;
&lt;p&gt;Si nous avions quelque chose d&amp;rsquo;écrit ainsi, nous pourrions le lire à l&amp;rsquo;aide des techniques couramment utilisées aujourd&amp;rsquo;hui. (Il y aura sans doute de meilleures façons une fois que nous serons capables de l&amp;rsquo;écrire, mais pour rendre mon argument convaincant, je ne vais utiliser que des techniques connues aujourd&amp;rsquo;hui.) Nous presserions contre le métal un matériau plastique afin d&amp;rsquo;en faire un moule, puis pèlerions le plastique très délicatement et évaporerions de la silice dans le plastique pour obtenir un film très mince, puis masquerions par évaporation de l&amp;rsquo;or contre la silice de sorte que toutes les petites lettres apparaîtraient clairement, et nous pourrions les lire avec un microscope électronique une fois le plastique dissout!&lt;/p&gt;
&lt;p&gt;Il ne fait aucun doute que si le texte était réduit 25'000 fois sous forme de lettres gravées sur l&amp;rsquo;épingle, il serait facile pour nous de le lire aujourd&amp;rsquo;hui. De plus, il ne fait aucun doute que nous trouverons un moyen facile de faire des copies de l&amp;rsquo;original; nous suffirait d&amp;rsquo;appuyer sur la même surface de métal à nouveau du plastique et nous aurions une autre copie.&lt;/p&gt;
&lt;h3 id="comment-peut-on-écrire-petit"&gt;Comment peut-on écrire petit?&lt;/h3&gt;
&lt;p&gt;La question suivante est: Comment pouvons-nous écrire? Nous n&amp;rsquo;avons pas de moyen technique pour le faire maintenant. Mais permettez-moi de soutenir que ce n&amp;rsquo;est pas aussi difficile que ça semble l&amp;rsquo;être.Nous pouvons inverser les lentilles du microscope électronique afin de réduire plutôt que grossir. Une source d&amp;rsquo;ions traversant les objectifs du microscope en marche arrière pourrait être focalisée sur une très petite surface.Nous pourrions écrire à cet endroit comme nous écrivons sur l&amp;rsquo;écran d&amp;rsquo;une TV à rayons cathodiques, ligne par ligne, en ajustant la quantité de matière qui va être déposée pendant que nous balayons les lignes.&lt;/p&gt;
&lt;p&gt;Cette méthode pourrait être très lente en raison des limites de charge de l&amp;rsquo;espace. Il y aurait des méthodes plus rapides.Nous pourrions peut-être en premier lieu faire par technique photographique un écran avec des trous ayant la forme des lettres. Ensuite, nous pourrions créer un arc derrière les trous et tirer des ions métalliques à travers les trous, en utilisant à nouveau notre système de lentilles pour focaliser les ions, ce qui créerait le dépôt de métal sur la broche.&lt;/p&gt;
&lt;p&gt;Il y aurait peut être même un moyen plus simple que cela (même si je ne suis pas sûr que cela fonctionnerait): Prenons de la lumière et, à travers un microscope optique fonctionnant à l&amp;rsquo;envers, nous la concentrons sur un très petit écran photoélectrique. Donc des électrons sortent de l&amp;rsquo;écran où la lumière brille. Ces électrons sont concentrés à la bonne taille par le microscope électronique et éroderaient directement la surface du métal. Est-ce qu&amp;rsquo;un tel faisceau enlèverait du métal assez vite?Je ne sais pas. Si cela ne marche pas pour une surface métallique, il doit être possible de trouver une surface avec laquelle recouvrir les épingles qui, une fois bombardée par les électrons, est modifiée d&amp;rsquo;une façon que l&amp;rsquo;on pourrait reconnaître plus tard.&lt;/p&gt;
&lt;p&gt;Il n&amp;rsquo;y a pas de problème d&amp;rsquo;intensité avec ces dispositifs, rien de ce que vous connaissez avec le grossissement, où vous devez prendre un peu d&amp;rsquo;électrons pour les diffuser sur une plus grand écran, c&amp;rsquo;est tout le contraire. La lumière obtenue d&amp;rsquo;une page est concentrée sur une très petite zone, où elle est très intense. Les quelques électrons qui proviennent de l&amp;rsquo;écran photoélectrique sont réduits sur une très petite zone de sorte que, là encore, ils sont très intenses. Je ne sais pas pourquoi cela n&amp;rsquo;a pas encore été fait!&lt;/p&gt;
&lt;p&gt;Voilà pour l&amp;rsquo;encyclopédie Brittanica sur la tête d&amp;rsquo;une épingle, mais nous allons maintenant examiner tous les livres du monde. La Bibliothèque du Congrès possède environ 9 millions de volumes, la bibliothèque du British Museum a 5 millions de volumes, il y a aussi 5 millions de volumes de la Bibliothèque nationale de France. Il ne fait aucun doute qu&amp;rsquo;il y a des doublons, mais disons qu&amp;rsquo;il y a quelque 24 millions de volumes intéressants dans le monde.&lt;/p&gt;
&lt;p&gt;Que se passerait-il si je les imprimais tous à l&amp;rsquo;échelle dont nous avons discuté?Combien de place cela prendrait-il ?Il faudrait, bien sûr, la superficie d&amp;rsquo;environ un million de têtes d&amp;rsquo;épingle parce que, au lieu d&amp;rsquo;avoir juste les 24 volumes de l&amp;rsquo;Encyclopédie, il y a 24 millions de volumes. Le million de têtes d&amp;rsquo;épingle peut  être mis dans un carré d&amp;rsquo;un millier d&amp;rsquo;épingles de côté,  soit environ 3 mètres carrés. Ca signifie que la réplique en silicium avec la feuille de plastique mince utilisé pour effectuer les copies, avec l&amp;rsquo;ensemble de ces informations totalise une superficie d&amp;rsquo;environ 35 pages de l&amp;rsquo;Encyclopédie. C&amp;rsquo;est environ la moitié du nombre de pages de ce magazine. Toutes les informations que l&amp;rsquo;humanité tout entière a enregistré dans les livres peuvent être transportés dans une brochure tenant dans votre main, et pas seulement le texte, mais aussi la reproduction des photos, gravures, et tout le reste à une petite échelle sans perte de résolution.&lt;/p&gt;
&lt;p&gt;Que dirait notre bibliothécaire à Caltech, si je lui disais que dans dix ans à compter de maintenant toutes les informations dont elle a la charge, soit 120'000 volumes empilés du sol au plafond, les tiroirs plein de cartes, les locaux d&amp;rsquo;entreposage pleins d&amp;rsquo;anciens livres pourront être conservées sur une seule carte de bibliothèque! Si l&amp;rsquo;Université du Brésil, par exemple, constate que sa bibliothèque a brûlé, nous pourrions lui envoyer un exemplaire de chaque livre de notre bibliothèque en gravant une copie de notre plaque en quelques heures et en l&amp;rsquo;envoyant dans une enveloppe pas plus grosse ni plus lourde qu&amp;rsquo;une lettre ordinaire de poste aérienne.&lt;/p&gt;
&lt;p&gt;Mais le nom de cet exposé est &amp;ldquo;Il y a beaucoup de place en bas&amp;rdquo;, pas seulement &amp;ldquo;il y a de la place à la bas&amp;rdquo;. Ce que j&amp;rsquo;ai démontré est qu&amp;rsquo;il est possible que nous puissions réduire la taille de choses d&amp;rsquo;une manière pratique. Je vais maintenant montrer qu&amp;rsquo;il y a beaucoup de place. Je ne vais pas discuter maintenant comment nous allons le faire, mais seulement ce qui est possible en principe, en d&amp;rsquo;autres termes ce qui est possible selon les lois de la physique. Je ne suis pas en train d&amp;rsquo;inventer l&amp;rsquo;anti-gravité, ce qui ne sera possible un jour que si les lois ne sont pas ce que nous pensons. Je vous le dis ce qui pourrait être fait si les lois sont ce que nous pensons, nous ne le faisons pas déjà simplement parce que nous n&amp;rsquo;avons pas encore trouvé comment le faire.&lt;/p&gt;
&lt;h3 id="linformation-à-petite-échelle"&gt;L&amp;rsquo;information à petite échelle&lt;/h3&gt;
&lt;p&gt;Supposons que, au lieu d&amp;rsquo;essayer de reproduire les photos et toutes les informations directement dans leur forme actuelle, nous écrivons seulement le contenu de l&amp;rsquo;information dans un code de points et de tirets, ou quelque chose comme ça, qui représentent les diverses lettres. Chaque lettre représente six ou sept &amp;ldquo;bits&amp;rdquo; d&amp;rsquo;information, c&amp;rsquo;est-à-dire que vous n&amp;rsquo;avez besoin que d&amp;rsquo;environ six ou sept points ou des tirets pour chaque lettre. Maintenant, au lieu d&amp;rsquo;écrire tout sur la surface de la tête d&amp;rsquo;une épingle comme je l&amp;rsquo;ai fait auparavant, je vais aussi utiliser l&amp;rsquo;intérieur du matériau.&lt;/p&gt;
&lt;p&gt;Représentons un point par une petite tache de métal, le prochain point par une autre tache de métal, et ainsi de suite. Supposons, pour être large, qu&amp;rsquo;un bit d&amp;rsquo;information nécessite un petit cube d&amp;rsquo;atomes 5 fois 5 fois 5, soit 125 atomes.Nous avons probablement besoin d&amp;rsquo;une centaine d&amp;rsquo;atomes pour faire en sorte que l&amp;rsquo;information ne soit pas perdue par diffusion ou par tout autre effet.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai estimé combien de lettres il y a dans l&amp;rsquo;Encyclopédie, et j&amp;rsquo;ai supposé que chacun des 24 millions de livres est gros comme un volume d&amp;rsquo;encyclopédie volume, et j&amp;rsquo;ai calculé combien de bits d&amp;rsquo;information y sont stockés : 10^15.Pour chaque bit je consacre 100 atomes. Il s&amp;rsquo;avère que toutes les informations que l&amp;rsquo;homme a soigneusement accumulé dans tous les livres dans le monde peut tenir sous cette forme dans un cube de 0.127 mm de côté, soit le plus fin morceau de poussière visible à l&amp;rsquo;oeil humain. Donc, il y a beaucoup de place en bas! Et ne me parlez pas des microfilms!&lt;/p&gt;
&lt;p&gt;Ce fait, que d&amp;rsquo;énormes quantités d&amp;rsquo;information peuvent être transportées dans un très petit espace, est bien sur connu des biologistes et résout le mystère qui existait avant que nous comprenions tout clairement, à savoir la manière dont toutes les informations sur l&amp;rsquo;organisation d&amp;rsquo;une créature aussi complexe que nous puisse être stockées dans une minuscule cellule. Toutes ces informations, si nous avons les yeux bruns, ou si nous pouvons penser, ou que dans l&amp;rsquo;embryon le maxillaire devrait d&amp;rsquo;abord développer avec un petit trou sur le côté afin que plus tard, un nerf puisse se développer à travers lui, toutes ces informations figurent dans une très infime partie de la cellule sous la forme d&amp;rsquo;une longue chaîne de molécules d&amp;rsquo;ADN dans laquelle environ 50 atomes de la cellule sont utilisés pour un bit d&amp;rsquo;information.&lt;/p&gt;
&lt;h3 id="de-meilleurs-microscopes-électroniques"&gt;De meilleurs microscopes électroniques&lt;/h3&gt;
&lt;p&gt;Si j&amp;rsquo;avais un code écrit avec 5x5x5 atomes par bit, comment pourrais-je le lire aujourd&amp;rsquo;hui?Le microscope électronique n&amp;rsquo;est pas tout à fait assez bon : avec beaucoup de soin et d&amp;rsquo;effort, il n&amp;rsquo;a qu&amp;rsquo;une résolution d&amp;rsquo;environ 10 angströms. Je voudrais essayer de vous convaincre de l&amp;rsquo;importance d&amp;rsquo;améliorer le microscope électronique par un facteur cent. Ce n&amp;rsquo;est pas impossible : ce n&amp;rsquo;est pas contraire aux lois de la diffraction de l&amp;rsquo;électron. La longueur d&amp;rsquo;onde de l&amp;rsquo;électron dans un tel microscope est de seulement 1/20 d&amp;rsquo;angström. Donc, il devrait être possible de voir les atomes. Mais à quoi bon voir distinctement des atomes individuellement?&lt;/p&gt;
&lt;p&gt;Nous avons des amis dans d&amp;rsquo;autres domaines, en biologie, par exemple.Nous les physiciens, nous les regardons souvent en disant &amp;ldquo;vous savez pourquoi vos chercheurs font si peu de progrès?&amp;quot;(En fait je ne connais pas d&amp;rsquo;autre domaine où les progrès sont plus rapides qu&amp;rsquo;en biologie aujourd&amp;rsquo;hui).&amp;ldquo;Vous devriez utiliser plus les mathématiques, comme nous le faisons.&amp;ldquo;Ils pourraient nous répondre, mais ils sont polis, donc je vais répondre pour eux: &amp;ldquo;Ce que vous devriez faire pour que nous puissions faire des progrès plus rapides, c&amp;rsquo;est un microscope électronique 100 fois meilleur.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Quels sont les problèmes les plus centraux et fondamentaux de la biologie aujourd&amp;rsquo;hui?Ce sont des questions telles que: qu&amp;rsquo;est-ce que la séquence de bases dans l&amp;rsquo;ADN?Que se passe-t-il lors d&amp;rsquo;une mutation?Comment l&amp;rsquo;ordre des bases dans l&amp;rsquo;ADN est-il lié à l&amp;rsquo;ordre des acides aminés dans les protéines? Quelle est la structure de l&amp;rsquo;ARN, est-ce une chaîne unique ou double, et comment est-il lié à l&amp;rsquo;ordre des bases de l&amp;rsquo;ADN?Quelle est l&amp;rsquo;organisation des microsomes? Comment sont synthétisées les protéines ?Où va l&amp;rsquo;ARN ? Où réside-t-il ?Où résident les protéines? Où interviennent les acides aminés? Dans la photosynthèse, où est la chlorophylle, comment est-elle organisée, les caroténoïdes sont-ils impliqués dans ce processus? Quel est le mécanisme de la conversion de la lumière en énergie chimique?&lt;/p&gt;
&lt;p&gt;Il est très facile de répondre à bon nombre de ces questions biologiques fondamentales : il suffit regarder la chose! Vous verrez l&amp;rsquo;ordre de bases de la chaîne, vous verrez la structure des microsomes. Malheureusement, le microscope actuel voit à une échelle qui est juste un peu trop grossière.Faites un microscope une centaine de fois plus puissant, et de nombreux problèmes de la biologie seraient beaucoup plus faciles. J&amp;rsquo;exagère, bien sûr, mais les biologistes vous seraient certainement très reconnaissants et vous pardonneraient la critique selon laquelle ils doivent avoir recours à plus de mathématiques.&lt;/p&gt;
&lt;p&gt;La théorie des processus chimiques d&amp;rsquo;aujourd&amp;rsquo;hui est basée sur la physique théorique. En ce sens, la physique fournit la base de la chimie. Mais la chimie a également l&amp;rsquo;analyse. Si vous avez une substance étrange et vous voulez savoir ce que c&amp;rsquo;est, vous passez par le processus long et complexe de l&amp;rsquo;analyse chimique.Vous pouvez analyser presque tout aujourd&amp;rsquo;hui, je suis donc un peu en retard avec mon idée. Mais si les physiciens voulaient, ils pourraient également creuser le problème de l&amp;rsquo;analyse chimique. Il serait très facile de faire une analyse de toute substance chimique complexe, tout ce qu&amp;rsquo;il y aurait à faire serait de la regarder et de voir où sont les atomes. Le seul problème est que le microscope électronique est une centaine de fois trop mauvais. (Plus tard, je demanderai : qu&amp;rsquo;est-ce que les physiciens peuvent au sujet du troisième problème de la chimie, à savoir la synthèse?) Y&amp;rsquo;a-t-il un moyen physique de synthétiser n&amp;rsquo;importe quelle substance chimique?&lt;/p&gt;
&lt;p&gt;La raison pour laquelle le microscope électronique est si mauvais, c&amp;rsquo;est que la focale (f-value?) des lentilles n&amp;rsquo;est que de 1/1000. Vous n&amp;rsquo;avez pas une assez grande ouverture numérique. Et je sais qu&amp;rsquo;il ya des théorèmes qui prouvent qu&amp;rsquo;il est impossible, avec des lentilles a symétrie axiale à champ stationnaire, de produire une valeur f plus grande que tant, et donc que le pouvoir de résolution à l&amp;rsquo;heure actuelle est à son maximum théorique. Mais dans tous les théorème existent des hypothèses.Pourquoi le champ doit être symétrique?Je pose ceci comme un défi: n&amp;rsquo;existe-t-il aucun moyen de rendre le microscope électronique plus puissant?&lt;/p&gt;
&lt;h3 id="le-merveilleux-système-biologique"&gt;Le merveilleux système biologique&lt;/h3&gt;
&lt;p&gt;L&amp;rsquo;exemple biologique de l&amp;rsquo;écriture d&amp;rsquo;information informations à petite échelle m&amp;rsquo;a incité à penser à quelque chose qui devrait être possible. La biologie ne consiste pas simplement à écrire des informations, c&amp;rsquo;est faire quelque chose avec. Un système biologique peut être extrêmement petit.Bon nombre des cellules sont très petites, mais très actives, elles fabriquent des substances diverses, elles se promènent, se tortillent, et font toutes sortes de choses merveilleuses, tout ceci à une très petite échelle. En outre, elles stockent de l&amp;rsquo;information. Envisagez la possibilité que nous puissions également faire des chose très petites qui feraient ce que nous voulons, imaginez que l&amp;rsquo;on puisse fabriquer un objet qui manœuvre à cette échelle!&lt;/p&gt;
&lt;p&gt;Il y aurait peut-être même un intérêt économique de faire des choses très petites. Permettez-moi de vous rappeler quelques-uns des problèmes des machines à calculer. Dans les ordinateurs, nous devons stocker une énorme quantité d&amp;rsquo;informations. Le type d&amp;rsquo;écriture que j&amp;rsquo;ai mentionné précédemment, dans lequel tout serait gravé dans le métal, est permanente. Mais pour les ordinateurs il est beaucoup plus intéressant de pouvoir écrire, effacer et écrire autre chose. (C&amp;rsquo;est d&amp;rsquo;ailleurs parce que nous ne voulons pas gaspiller les éléments sur lesquels nous venons d&amp;rsquo;écrire.Pourtant, si nous pouvions écrire dans un très petit espace, cela ne ferait aucune différence, il pourrait simplement être jeté après avoir été lu, car le matériel ne couterait presque rien.)&lt;/p&gt;
&lt;h3 id="miniaturiser-lordinateur"&gt;Miniaturiser l&amp;rsquo;ordinateur&lt;/h3&gt;
&lt;p&gt;Je ne sais pas comment les rendre petites en pratique, mais je sais que les machines informatiques sont trop grandes, elles remplissent des pièces.Pourquoi ne pouvons-nous pas les rendre très petites, avec de petits fils et de petits composants, et par petits, je veux dire vraiment petits ? Par exemple, les fils devrait avoir 10 ou 100 atomes de diamètre, et les circuits ne devraient avoir que quelques milliers d&amp;rsquo;angströms. Tous ceux qui ont analysé la théorie logique des ordinateurs parvient à la conclusion que les possibilités des ordinateurs seraient très intéressants, s&amp;rsquo;ils pouvaient être rendus moins complexes de plusieurs ordres de grandeur. S&amp;rsquo;ils avaient des millions de fois plus d&amp;rsquo;éléments, ils pourraient émettre des jugements. Ils auraient le temps de calculer le meilleur moyen de faire le calcul qu&amp;rsquo;ils sont sur le point de faire. Ils pourraient choisir la méthode d&amp;rsquo;analyse qui, par leur expérience, serait meilleure que celle que nous leur fournirions. Et ils auraient plusieurs nouvelles caractéristiques qualitatives.&lt;/p&gt;
&lt;p&gt;Si je regarde votre visage, je sais immédiatement que je l&amp;rsquo;ai vu avant. (En fait, mes amis vont dire que j&amp;rsquo;ai choisi un exemple malheureux pour illustrer ce sujet. Mais au moins, je reconnais que c&amp;rsquo;est un homme et pas une pomme.)Pourtant, il n&amp;rsquo;existe pas de machine qui puisse aussi vite prendre une image d&amp;rsquo;un visage et dire qu&amp;rsquo;elle représente un homme, et encore moins que c&amp;rsquo;est le même homme que sur une précédente photo, à moins que ce ne soit exactement la même image. Si le visage est changé, si j&amp;rsquo;en suis plus proche, ou plus loin, si la lumière n&amp;rsquo;est pas la même, je le reconnais quand même. Mais ce petit ordinateur que je porte dans ma tête est capable de le faire facilement. Les ordinateurs que nous construisons ne sont pas en mesure de le faire. Le nombre d&amp;rsquo;éléments dans ma boîte osseuse est énormément plus élevé que le nombre d&amp;rsquo;éléments dans notre plus &amp;ldquo;merveilleux&amp;rdquo; ordinateur. Mais nos ordinateurs mécaniques sont trop gros; alors que les éléments dans cette boite sont microscopiques. Je veux en faire qui soient sub-microscopiques.&lt;/p&gt;
&lt;p&gt;Si nous voulions faire un ordinateur ayant tous ces merveilleuses capacités supplémentaires, il devrait avoir, peut-être, la taille du Pentagone. Ceci a plusieurs inconvénients. Tout d&amp;rsquo;abord, il faut trop de matériel: il n&amp;rsquo;y a pas assez de germanium dans le monde pour tous les transistors qui doivent être mis dans cette énorme chose. Il y a aussi le problème de la production de chaleur et de la consommation d&amp;rsquo;énergie; la TVA# serait nécessaire pour faire tourner l&amp;rsquo;ordinateur. Mais une difficulté plus importante est que l&amp;rsquo;ordinateur serait limité à une certaine vitesse. En raison de sa grande taille, il faut un certain temps pour transférer l&amp;rsquo;information d&amp;rsquo;un endroit à l&amp;rsquo;autre. L&amp;rsquo;information ne peut pas aller plus vite que la vitesse de la lumière, donc si, nous voulons obtenir des ordinateurs de plus en plus rapides et de plus en plus élaborés, nous aurons à les rendre de plus en plus petits. Mais il y a beaucoup de place pour les rendre plus petits. Il n&amp;rsquo;y a rien que je puisse voir dans les lois physiques qui dise que les composants des ordinateurs ne peuvent pas être considérablement plus petits qu&amp;rsquo;ils ne le sont maintenant. En fait, il y aurait même des avantages.&lt;/p&gt;
&lt;h3 id="la-miniaturisation-par-évaporation"&gt;La miniaturisation par évaporation&lt;/h3&gt;
&lt;p&gt;Comment pouvons-nous réaliser un tel dispositif? Quel genre de procédés de fabrication utiliserions-nous?Une possibilité que nous pourrions envisager, puisque nous avons parlé d&amp;rsquo;écrire en positionnant des atomes dans un certain arrangement, serait de faire évaporer le matériau, puis de faire évaporer l&amp;rsquo;isolant à côté. Ensuite, pour la couche suivante, faire évaporer une autre position du fil, un autre isolant, et ainsi de suite. Ainsi, il vous suffit de faire évaporer jusqu&amp;rsquo;à ce que vous ayez un bloc de choses qui contienne les éléments - bobines et condensateurs, transistors et ainsi de suite - de dimensions extrêmement fines.&lt;/p&gt;
&lt;p&gt;Mais je voudrais examiner, juste pour le divertissement, les autres possibilités.Pourquoi ne pouvons-nous pas fabriquer ces petits ordinateurs un peu comme nous fabriquons les plus gros?Pourquoi ne pouvons-nous pas percer des trous, couper, souder, ou emboutir des choses, modeler différentes formes à un niveau infinitésimal?Quelles sont les limites quant à la façon dont une chose doit être petite avant que vous ne puissiez plus la modeler?Combien de fois lorsque vous travaillez sur quelque chose de frustrant car très petit comme la montre-bracelet de votre femme, avez-vous dit à vous-même, &amp;ldquo;Si seulement je pouvais dresser une fourmi pour faire ça !&amp;rdquo;. Ce que je voudrais proposer est la possibilité de former une fourmi pour qu&amp;rsquo;elle forme un acarien qui fasse cela. Quelles sont les possibilités des machines petites mais mobiles? Elles pourraient être utiles ou non, mais elles seraient certainement plaisantes à réaliser.&lt;/p&gt;
&lt;p&gt;Pensez à n&amp;rsquo;importe quelle machine - par exemple, une automobile - et renseignez vous quant aux problèmes de réalisation d&amp;rsquo;une telle machine infinitésimale. Supposons, en particulier dans la conception d&amp;rsquo;une automobile, que nous ayons besoin d&amp;rsquo;une certaine précision des parties; nous avons besoin d&amp;rsquo;une précision, disons, de 10 microns. Si les choses sont plus imprécises que cela, tolérances cylindriques etc. , ça ne marchera pas très bien. Si je fais quelque chose de trop petit, je dois m&amp;rsquo;inquiéter de la taille des atomes; je ne peux pas réaliser un cercle de &amp;ldquo;balles&amp;rdquo; pour ainsi dire, si le cercle est trop petit. Donc, si je fais une erreur, correspondant à 10 microns, soit une erreur de 10 atomes, il vient que je peux réduire les dimensions d&amp;rsquo;une automobile 4.000 fois, approximativement, afin qu&amp;rsquo;elle fasse 1mm.Évidemment, si vous reconcevez la voiture afin qu&amp;rsquo;elle marche avec une tolérance plus grande, ce qui n&amp;rsquo;est pas complètement impossible, alors vous pouvez en réaliser une encore plus petite.&lt;/p&gt;
&lt;p&gt;Il est intéressant d&amp;rsquo;examiner quels sont les problèmes de telles petites machines.Premièrement, avec des contraintes sur les pièces proportionnelles, les forces diminuent d&amp;rsquo;autant que vous réduisez la surface, de sorte que les choses comme le poids et l&amp;rsquo;inertie sont relativement sans importance. En d&amp;rsquo;autres termes, la résistance du matériau est proportionnellement beaucoup plus grande. Les contraintes et la déformation du volant dûs à la force centrifuge, par exemple, seront dans les mêmes proportions seulement si la vitesse de rotation est augmentée dans la même proportion que la diminution de taille. D&amp;rsquo;un autre côté, les métaux que nous utilisons ont une structure en grain, et cela serait très ennuyeux à petite échelle car le matériau n&amp;rsquo;est pas homogène. Les plastiques, le verre et les choses de nature amorphe sont beaucoup plus homogènes, et donc nous pourrions avoir à réaliser nos machines avec de tels matériaux. Il y a des problèmes relatifs à la partie électrique du système avec les fils en cuivre et les parties magnétiques. Les propriétés magnétiques à très petite échelle ne sont pas les mêmes qu&amp;rsquo;à grande échelle; il y a le problème des &amp;ldquo;domaines&amp;rdquo; qui serait en cause. Un gros aimant constitué de millions de champs ne peut être fait à petite échelle qu&amp;rsquo;avec seulement un champ. L&amp;rsquo;équipement électrique ne sera pas simplement réduit; il doit être repensé. Mais je ne vois aucune raison pour laquelle il ne peut pas être reconçu pour fonctionner à nouveau.&lt;/p&gt;
&lt;h3 id="les-problèmes-de-lubrification"&gt;Les problèmes de lubrification&lt;/h3&gt;
&lt;p&gt;La lubrification soulève quelques points intéressants. La viscosité réelle de l&amp;rsquo;huile devrait être proportionnellement de plus en plus grande lorsque nous descendons vers le petit. (et si nous augmentons la vitesse autant que possible). Si nous n&amp;rsquo;augmentons pas autant la vitesse, et que nous passons de l&amp;rsquo;huile au kérosène, ou à quelque autre fluide, le problème est moindre. Mais en fait, nous pourrions ne pas avoir pas à lubrifier du tout!Nous avons beaucoup de force en réserve. Laissons les roulements tourner à sec; ils ne chaufferont pas parce que la chaleur s&amp;rsquo;échappe très, très rapidement d&amp;rsquo;un tel petit système. Cette perte rapide de chaleur devrait empêcher l&amp;rsquo;essence d&amp;rsquo;exploser, donc un moteur à combustion interne est impossible. D&amp;rsquo;autres réactions chimiques, libérant de l&amp;rsquo;énergie à froid, peuvent être utilisées. Un générateur électrique externe serait probablement plus approprié pour de telles petites machines.&lt;/p&gt;
&lt;p&gt;Quelle serait l&amp;rsquo;utilité de ces machines? Qui sait? Bien sûr, une petite automobile ne serait utile qu&amp;rsquo;aux mites pour conduire dans leur coin, et je suppose que nos motivations chrétiennes ne vont pas aussi loin. Cependant, nous avons noté la possibilité de fabriquer de petits éléments d&amp;rsquo;ordinateurs dans les usines complètement automatiques, qui contiennent des tours et autres machines-outils à très petite échelle. Le tour miniature n&amp;rsquo;aurait pas à être exactement comme nos gros tours. Je vous laisse imaginer l&amp;rsquo;amélioration de la conception à fin de tirer pleinement avantage des propriétés des choses à petite échelle, et de telle manière que l&amp;rsquo;aspect entièrement automatisé serait plus facile à gérer.&lt;/p&gt;
&lt;p&gt;Un de mes amis (Albert R. Hibbs) suggère une possibilité très intéressante pour les machines relativement petites. Il a dit que, bien qu&amp;rsquo;il s&amp;rsquo;agissait d&amp;rsquo;une idée extrême, il serait intéressant en chirurgie d&amp;rsquo;avaler le chirurgien. Introduisez le chirurgien mécanique dans un vaisseau sanguin, et il ira dans le cœur pour &amp;ldquo;regarder&amp;rdquo; autour. (Bien sûr, l&amp;rsquo;information doit être récupérée.) Il trouve quelle valvule est défectueuse, prend un petit couteau et la tranche. D&amp;rsquo;autres petites machines pourrait être incorporées de façon permanente dans le corps pour assister un organe fonctionnant inadéquatement.&lt;/p&gt;
&lt;p&gt;Maintenant vient la question intéressante : Comment réalise-on un si petit mécanisme?Je vous laisse l&amp;rsquo;imaginer. Cependant, permettez moi de suggérer une possibilité singulière. Vous savez que dans les centrales nucléaires ils ont des machines et du matériel qu&amp;rsquo;ils ne peuvent contrôler directement car ils sont devenus radioactifs.Pour dévisser des écrous et mettre des boulons, et ainsi de suite, ils ont un ensemble de mains maîtres et esclaves, de telle sorte qu&amp;rsquo;en opérant sur un jeu de leviers, vous contrôlez ces &amp;ldquo;mains&amp;rdquo;, et pouvez les utiliser de telle manière que vous puissiez gérer les choses correctement.&lt;/p&gt;
&lt;p&gt;La plupart de ces machines sont en fait réalisées plutôt facilement, dans la mesure où il y a un câble particulier, comme une ficelle de marionnette, qui va directement des contrôles aux &amp;ldquo;mains&amp;rdquo;. Mais, bien sûr, de telles choses ont également été réalisées en utilisant des servomoteurs, de sorte que la connexion entre un élément et l&amp;rsquo;autre soit électrique plutôt que mécanique. Lorsque vous manipulez les leviers, ceux-ci activent un servomoteur, et cela change les courants électriques dans les câbles, ce qui repositionne un moteur à l&amp;rsquo;autre bout.&lt;/p&gt;
&lt;p&gt;Maintenant, je veux construire à peu près le même dispositif -un système maître-esclave fonctionnant électriquement. Mais je veux que les esclaves soient réalisés soigneusement par des machinistes modernes à grande échelle, de sorte qu&amp;rsquo;ils soient à l&amp;rsquo;échelle un quart des &amp;ldquo;mains&amp;rdquo; que l&amp;rsquo;on manœuvre ordinairement.Vous avez donc un système par lequel vous pouvez faire faire des choses à une échelle un quart : les petits servomoteurs avec leurs petites mains dirigent de petits écrous et de petits boulons, ils percent de petits trous, ils sont un quart de fois plus petit. Aha! J&amp;rsquo;ai donc construit un tour à la taille un quart. Je construis des outils à l&amp;rsquo;échelle un quart; et je peux ainsi réaliser un autre jeu de mains é l&amp;rsquo;échelle relative d&amp;rsquo;un quart! Celui-ci a un seizième de la taille, depuis mon point de vue. Et après avoir fini de faire cela, je connecte directement mon système à grande échelle, peut-être par le biais de transformateurs, aux servomoteurs à l&amp;rsquo;échelle un seizième. Ainsi, je peux maintenant manipuler les mains à l&amp;rsquo;échelle un seizième.&lt;/p&gt;
&lt;p&gt;Bien, vous avez là le principe. C&amp;rsquo;est un programme plutôt difficile, mais c&amp;rsquo;est une possibilité.Vous pourriez dire que l&amp;rsquo;on peut aller beaucoup plus loin avec une seule étape que de un à quatre.Bien sûr, tout cela doit être conçu très soigneusement et il n&amp;rsquo;est pas forcément nécessaire de faire cela simplement comme des mains. Si vous réfléchissiez à cela très sérieusement, vous devriez probablement arriver à un bien meilleur système pour faire de telle choses.&lt;/p&gt;
&lt;p&gt;Si vous travaillez avec un pantographe, même aujourd&amp;rsquo;hui, vous pouvez obtenir beaucoup plus qu&amp;rsquo;un facteur quatre dans une seule étape. Mais vous ne pouvez travailler directement via un pantographe qui réalise un pantographe plus petit, qui alors en réalise un plus petit, à cause du jeu causé par les trous et les irrégularités de construction. Au final, le pantographe oscillera avec une irrégularité relativement plus grande que l&amp;rsquo;irrégularité avec laquelle vous déplacez vos mains. En descendant vers le petit, j&amp;rsquo;aurais le pantographe du pantographe du pantographe remuant tant et tant qu&amp;rsquo;il ne serait pas possible de faire quoi que ce soit de précis avec.&lt;/p&gt;
&lt;p&gt;A chaque étape, il est nécessaire d&amp;rsquo;améliorer la précision de l&amp;rsquo;appareil. Si, par exemple, ayant fait un tour miniature avec un pantographe, on voit que sa mèche est irrégulière -plus irrégulière que celle à large échelle- on pourrait faire chevaucher la mèche contre des écrous cassables pour lesquels vous pouvez inverser la procédure habituelle, jusqu&amp;rsquo;à ce que la mèche soit, a son échelle, aussi précise que notre mèche de départ, à notre échelle.&lt;/p&gt;
&lt;p&gt;Nous pouvons faire des replats en frottant trois surfaces non planes ensemble -en trois paires- et le replat deviendrait alors plus plat que ceux dont vous êtes parti. Ainsi, il n&amp;rsquo;est pas impossible d&amp;rsquo;améliorer la précision à petite échelle à l&amp;rsquo;aide d&amp;rsquo;opérations adéquates. Donc, lorsque nous avons construit cela, il est nécessaire d&amp;rsquo;améliorer la précision de l&amp;rsquo;équipement en travaillant quelque temps dessus, en réalisant des mèches précises, des &amp;ldquo;blocs de Johansen&amp;rdquo;#, et tous les autres matériaux que l&amp;rsquo;on utilise dans le travail de machines précises de haut de gamme.Nous devons nous arrêter à chaque niveau et fabriquer tout ce qu&amp;rsquo;il faut pour passer au niveau d&amp;rsquo;après; un programme très long et très difficile.Peut-être pouvez vous imaginer une meilleure façon pour aller vers le bas plus rapidement.&lt;/p&gt;
&lt;p&gt;Pourtant, après cela, vous avez un bébé tour quatre cent fois plus petit qu&amp;rsquo;habituellement. Mais nous étions en train de penser à la conception d&amp;rsquo;un ordinateur énorme, que nous allions construire en perçant des trous avec ce tour pour faire de petites rondelles pour l&amp;rsquo;ordinateur. Combien de rondelles peut on fabriquer avec ce tour?&lt;/p&gt;
&lt;h3 id="une-centaine-de-petites-mains"&gt;Une centaine de petites mains&lt;/h3&gt;
&lt;p&gt;Au lieu de construire mon premier jeu de &amp;ldquo;mains&amp;rdquo; esclaves à l&amp;rsquo;échelle un quart, j&amp;rsquo;en fais 10. Je construis dix jeux de &amp;ldquo;mains&amp;rdquo;, et je les connecte à mes leviers de départ de afin qu&amp;rsquo;elles fassent exactement la même chose au même moment, en parallèle. Maintenant, lorsque je construis mes nouveaux systèmes d&amp;rsquo;un quart d&amp;rsquo;échelle plus petits, je laisse chacun en fabriquer dix copies, de sorte que j&amp;rsquo;aurais une centaine de mains à la taille un seizième.&lt;/p&gt;
&lt;p&gt;Où vais-je mettre le millions de tours que je j&amp;rsquo;obtiendrai?Mais pourquoi cette question, il n&amp;rsquo;y a aucun problème : le volume total est beaucoup plus petit que celui du tour à pleine échelle.Par exemple, si je fais un milliard de petits tours, chacun à la taille 1/4000 d&amp;rsquo;un tour normal, il y reste beaucoup de matière et d&amp;rsquo;espace disponible, car dans le milliard de petits tours, il y a moins de 2 pour cent de la matière d&amp;rsquo;un gros tour.&lt;/p&gt;
&lt;p&gt;Cela ne coûte rien en matériaux, voyez-vous. Donc je veux construire un milliard de petites usines, modèles les unes des autres, qui sont en train de produire simultanément, perçant des trous, poinçonnant des parties, et ainsi de suite.&lt;/p&gt;
&lt;p&gt;En allant vers le petit, il y a de nombreux problèmes intéressants qui surviennent. Tout n&amp;rsquo;est pas simplement réduit de façon proportionnelle. Un problème est que les matériaux vont coller ensemble, par l&amp;rsquo;attraction moléculaire (de Van der Waals). Ainsi, après que vous ayez réalisé une pièce et que vous dévissez le boulon d&amp;rsquo;un écrou, il ne tombera pas parce que la gravité est négligeable; il sera même difficile de l&amp;rsquo;écarter de l&amp;rsquo;écrou. Ce sera comme dans ces vieux films, avec un homme avec les mains pleines de mélasse, essayant se débarrasser d&amp;rsquo;un verre d&amp;rsquo;eau. Il y aura plusieurs problèmes de ce genre que nous devons être prêts à résoudre.&lt;/p&gt;
&lt;h3 id="réarranger-les-atomes"&gt;Réarranger les atomes&lt;/h3&gt;
&lt;p&gt;Mais je n&amp;rsquo;ai pas peur d&amp;rsquo;attaquer la dernière question, qui est de savoir si en fin de compte, dans un futur lointain, on pourra réarranger les atomes comme on le veut, chaque atome, jusqu&amp;rsquo;au dernier!Que se passerait-il si l&amp;rsquo;on pouvait ordonner tous les atomes, un par un, comme nous le désirons (dans les limites du raisonnable, bien sûr; vous ne pouvez pas les mettre de sorte qu&amp;rsquo;ils soient chimiquement instables, par exemple).&lt;/p&gt;
&lt;p&gt;Jusqu&amp;rsquo;à maintenant, nous nous sommes contentés de creuser dans le sol pour trouver des minéraux.Nous les chauffons et nous faisons des choses à large échelle avec, et nous espérons obtenir une substance pure avec en fait plein d&amp;rsquo;impuretés, et ainsi de suite. Mais nous devons toujours accepter quelques arrangements atomiques que la nature nous donne.Nous n&amp;rsquo;avons rien, disons, avec une disposition en &amp;ldquo;damier&amp;rdquo;, avec les atomes impurs disposés exactement à 1000 angströms d&amp;rsquo;intervalle, ou en quelque autre motif particulier.&lt;/p&gt;
&lt;p&gt;Que pourrions-nous faire avec des structures en couches ayant juste les bonnes couches?Quelles seraient les propriétés des matériaux si nous pouvions arranger les atomes comme nous le voulons?IlIls seraient très intéressants à étudier théoriquement. Je ne vois pas exactement ce qui se passerait, mais je peux difficilement douter du fait que lorsque nous aurons quelque maitrise sur les arrangements des choses à petite échelle, nous aurons un éventail extrêmement large de propriétés possibles que les substances peuvent avoir, et des différentes choses que nous pouvons faire.&lt;/p&gt;
&lt;p&gt;Prenons, par exemple, un morceau de matériau dans lequel nous faisons des petites bobines et des petits condensateurs (ou l&amp;rsquo;équivalent de leur état solide), de 1000 ou 10000 angströms dans un circuit, l&amp;rsquo;un à côté de l&amp;rsquo;autre, sur une large zone, avec des petites antennes dépassant à l&amp;rsquo;autre bout, toute une série de circuit. Est-il possible, par exemple, d&amp;rsquo;émettre de la lumière avec une série entière d&amp;rsquo;antennes, comme nous émettons des ondes radios avec une série d&amp;rsquo;antennes organisée pour transmettre le programme radio en Europe? L&amp;rsquo;équivalent serait d&amp;rsquo;émettre un rayon de lumière dans une direction définie avec une très forte intensité. (Peut-être qu&amp;rsquo;un tel rayon n&amp;rsquo;est pas très utile techniquement ou économiquement.)&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai pensé à quelques problèmes de construction de circuits électriques à petite échelle, et le problème de la résistance est important. Si vous construisez un circuit équivalent à petite échelle, sa fréquence propre augmente, puisque la longueur d&amp;rsquo;onde diminue avec l&amp;rsquo;échelle; mais l&amp;rsquo;épaisseur de peau ne décroît que comme la racine carrée du rapport d&amp;rsquo;échelle, et ainsi les problèmes de résistance sont de difficulté croissante.Peut-être pouvons-nous lutter contre la résistance par l&amp;rsquo;utilisation de la supraconductivité si la fréquence n&amp;rsquo;est pas trop haute, ou par d&amp;rsquo;autres astuces.&lt;/p&gt;
&lt;h3 id="les-atomes-dans-un-monde-miniature"&gt;Les atomes dans un monde miniature&lt;/h3&gt;
&lt;p&gt;Lorsque nous allons vers le monde miniature des circuits de, disons, sept atomes- nous avons beaucoup de nouvelles choses qui se produisent et qui représentent de nouvelles opportunités pour la conception. Les atomes à petite échelle ne se comportent pas comme à grande échelle, afin de satisfaire les lois de la mécanique quantique. Ainsi, en descendant vers le bas, et en bidouillant les atomes, nous travaillons avec des lois différentes, et nous pouvons nous à attendre à faire des choses différentes.Nous pouvons les fabriquer de différentes manières. Nous pouvons utiliser non seulement des circuits, mais aussi des systèmes impliquant les niveaux d&amp;rsquo;énergie quantifiés, ou les interactions des spins quantifiés, etc.&lt;/p&gt;
&lt;p&gt;Une autre chose que nous remarquerons est que, si nous descendons suffisamment vers le bas, tous nos systèmes peuvent être produits massivement, de sorte qu&amp;rsquo;ils soient les copies exactes les uns des autres.Nous ne pouvons pas construire deux grandes machines telles que leurs dimensions soient exactement les mêmes. Mais si votre machine n&amp;rsquo;est haute que de 100 atomes, vous n&amp;rsquo;avez à l&amp;rsquo;avoir précise qu&amp;rsquo;au demi pourcent pour être sûr que l&amp;rsquo;autre machine est exactement de la même taille, à savoir 100 atomes de haut!&lt;/p&gt;
&lt;p&gt;Au niveau atomique, nous avons de nouvelles sortes de forces et de nouvelles sortes de possibilités, de nouvelles sortes d&amp;rsquo;effets. Le problème de la fabrication et de la reproduction des matériaux sera assez différent. Je me suis, comme je l&amp;rsquo;ai dit, inspiré par les les phénomènes biologiques dans lesquels les forces chimiques sont utilisées de façon répétitive pour produire toutes sortes d&amp;rsquo;effets bizarres (dont l&amp;rsquo;un est l&amp;rsquo;auteur).&lt;/p&gt;
&lt;p&gt;Les principes de la physique, autant que je suis puisse le voir, ne vont pas contre la possibilité de manier les choses atome par atome. Ce n&amp;rsquo;est pas une tentative de violer quelque loi que ce soit; c&amp;rsquo;est quelque chose qui peut en principe être fait, mais qui en pratique n&amp;rsquo;a pas été fait car nous sommes trop grands.&lt;/p&gt;
&lt;p&gt;En fin de compte, nous pouvons faire de la synthèse chimique. Un chimiste nous vient, et dit : &amp;ldquo;Regardez, je veux une molécule qui ait les atomes arrangés ainsi; faites moi cette molécule&amp;rdquo;. Le chimiste fait une mystérieuse chose quand il veut faire une molécule. Il voit que ça a un anneau, donc il mélange ceci et cela, et il le secoue, et il bidouille. Et, à la fin d&amp;rsquo;un processus difficile, il réussi souvent à synthétiser ce qu&amp;rsquo;il veut. Le temps que je j&amp;rsquo;obtienne mon système en train de fonctionner, de sorte que celui-ci puisse être fait par la physique, il aura trouvé comment synthétiser absolument tout, si bien que cela sera vraiment inutile.&lt;/p&gt;
&lt;p&gt;Mais ce qui intéressant, c&amp;rsquo;est que ce sera, en principe, possible (je pense) pour un physicien de synthétiser toute substance chimique que le chimiste noterait. Donnez les ordres et le physicien le synthétise. Comment? Placez les atomes là où le chimiste le dit, et ainsi vous réalisez la substance. Les problèmes de la chimie et de la biologie peuvent être grandement aidés si notre capacité à voir ce que nous faisons, et de faire des choses au niveau atomique, était enfin développée -un développement que je pense inévitable.&lt;/p&gt;
&lt;p&gt;Maintenant, vous devez vous dire, &amp;ldquo;Qui devrait faire cela, et pourquoi le ferait-on?&amp;ldquo;Eh bien, j&amp;rsquo;ai montré quelques applications économiques, mais je sais que la raison pour laquelle vous le feriez serait juste le plaisir. Mais amusez-nous! Organisons une compétition entre des laboratoires. Laissons un laboratoire faire un moteur minuscule, qui l&amp;rsquo;envoie à un autre laboratoire qui le renvoie avec quelque chose qui tienne à l&amp;rsquo;intérieur de l&amp;rsquo;axe du premier moteur.&lt;/p&gt;
&lt;h3 id="compétition-de-lycées"&gt;Compétition de lycées&lt;/h3&gt;
&lt;p&gt;Juste pour le plaisir, et afin d&amp;rsquo;intéresser les enfants à ce domaine, je suggérerais que quelqu&amp;rsquo;un qui a des contacts avec les lycées envisage de faire une sorte de compétition de lycées. Après tout, nous n&amp;rsquo;avons même pas débuté dans ce domaine, et même les enfants peuvent écrire plus petit que ce qui a pu être écrit auparavant. Les lycées pourraient participer à des défis. Le lycée de Los Angeles pourrait envoyer une épingle au lycée de Venise avec marqué &amp;ldquo;Que pensez-vous de ça?&amp;ldquo;Ils recevraient l&amp;rsquo;épingle en retour, et dans le point du &amp;ldquo;i&amp;rdquo;, il serait écrit &amp;ldquo;Pas si dur.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Peut-être que ça ne vous excite pas de le faire, et que seuls les aspects économiques vous intéressent. A ce propos, je veux faire quelque chose, mais je ne peux le faire en ce moment, car je n&amp;rsquo;ai pas préparé le terrain. Mon intention est d&amp;rsquo;offrir un prix de 1.000$ au premier capable de prendre les informations d&amp;rsquo;une page d&amp;rsquo;un livre et de les mettre sur une surface 1/25.000 fois plus petite avec une échelle linéaire de telle sorte que cela puisse être lu par un microscope électronique.&lt;/p&gt;
&lt;p&gt;Et je voudrais offrir un autre prix, si j&amp;rsquo;arrive à trouver comment formuler cela de sorte que je ne m&amp;rsquo;engage pas dans un tas de débats quant aux définitions, de 1.000$ au premier qui réalisera un moteur électrique opérationnel -un moteur électrique rotatif qui peut être contrôlé depuis l&amp;rsquo;extérieur et qui, sans compter les fils de connexion, aurait une taille de seulement 0.4 mm au cube.&lt;/p&gt;
&lt;p&gt;Je ne m&amp;rsquo;attends pas à ce que de tels prix aient à attendre longtemps avant d&amp;rsquo;être réclamés.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(le texte complet a été inséré dans cet article de blog le 28.12.2012, réédité pour l&amp;rsquo;occasion)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>la Résurrection du Jeu de la Vie</title><link>https://drgoulu.com/2009/03/29/la-resurrection-du-jeu-de-la-vie/</link><pubDate>Sun, 29 Mar 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/03/29/la-resurrection-du-jeu-de-la-vie/</guid><description>&lt;p&gt;Le
imaginé par
en 1970 est un automate cellulaire célébrissime pour au moins deux raisons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;figure class="alignright" style="max-width: 250px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/a470c29cf6c88b820cc608831b61f545.gif" alt="Un canon à planeurs" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" /&gt;&lt;figcaption&gt;Un &amp;quot;canon à planeurs&amp;quot;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;A partir de règles toutes simples, le jeu de la vie génère une &amp;ldquo;vie&amp;rdquo; artificielle étrangement complexe et imprévisible, posant toutes sortes de questions intéressantes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le Jeu de la Vie étant très facile à programmer, des générations d&amp;rsquo;étudiants ont codé des programmes &amp;ldquo;Life&amp;rdquo; dans tous les langages imaginables.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Après une flambée d&amp;rsquo;intérêt dans les années 1980 où on a même vu apparaitre des processeurs spécialisés dans l&amp;rsquo;exécution d&amp;rsquo;automates cellulaires, le soufflé est retombé dans la décennie suivante car la simulation de grands automates demandait beaucoup de puissance de calcul et de mémoire.&lt;/p&gt;
&lt;p&gt;Mais comme nous l&amp;rsquo;apprend Jean-Paul Delahaye dans le dernier &amp;ldquo;Pour la Science&amp;rdquo;
, il y a du nouveau. En 2005 est apparu &amp;ldquo;
&amp;rdquo;, un logiciel Open Source utilisant &amp;ldquo;
&amp;quot;, un algorithme accélérant le calcul des automates cellulaires d&amp;rsquo;une manière phénoménale. Hashlife a été imaginé en 1984 déjà par
, un des premiers &amp;ldquo;hacker&amp;rdquo; du Xerox Park de Palo Alto. Mais pour une étrange raison, ce n&amp;rsquo;est qu&amp;rsquo;en 2004 Tomas Rokicki l&amp;rsquo;a implanté en C et décrit dans un article intitulé &amp;ldquo;un algorithme pour compresser le temps et l&amp;rsquo;espace&amp;rdquo;
.&lt;/p&gt;
&lt;p&gt;Hashlife combine en effet deux techniques de programmation :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;une partition de l&amp;rsquo;espace qui permet d&amp;rsquo;une part d&amp;rsquo;ignorer les grandes zones de cellules vides et d&amp;rsquo;autre part de reconnaitre les copies identiques de groupes de cellules&lt;/li&gt;
&lt;li&gt;la &amp;ldquo;
&amp;rdquo;, qui consiste à mémoriser des résultats précédemment calculés afin de les restituer immédiatement lorsque la même situation se représente.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ainsi, hashlife ne calcule qu&amp;rsquo;une seule fois l&amp;rsquo;évolution d&amp;rsquo;un groupe de cellules qui serait présent à des milliers d&amp;rsquo;exemplaires dispersés sur un immense jeu de la vie, et n&amp;rsquo;a besoin de mémoire que pour stocker chacune des étapes d&amp;rsquo;un cycle au lieu de millions de cellules.&lt;/p&gt;
&lt;p&gt;Hashlife parvient ainsi à calculer des milliers de générations par seconde de &amp;ldquo;Jeux de la Vie&amp;rdquo; comportant 10&lt;sup&gt;50 cellules sur un PC ordinaire doté de 10&lt;/sup&gt;9 octets de mémoire !&lt;/p&gt;
&lt;p&gt;Voici par exemple &amp;ldquo;
&amp;rdquo; en action sur le &amp;ldquo;breeder&amp;rdquo;, la première structure générant un nombre de cellules augmentant comme le carré du nombre de générations :&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/FVP58qsG0MY"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;On voit comment un groupe de &amp;ldquo;fusées&amp;rdquo; se déplace vers la droite en générant des &amp;ldquo;canons à planeurs&amp;rdquo;. En quelques secondes, 400'000 générations ont été calculées (même pas à vitesse maximale) , générant 160 millions de cellules actives.&lt;/p&gt;
&lt;p&gt;Cette vitesse permet de visualiser confortablement d&amp;rsquo;autres structures extraordinaires découvertes récemment, comme les &amp;ldquo;métacellules&amp;rdquo;:&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/wkOEeQsKEvU"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;On voit ici un tableau de 15x15 métacellules, dont chacune se comporte comme une cellule du Jeu de la Vie ! En 30'000 générations environ, chaque métacellule compte le nombre de ses voisins &amp;ldquo;vivants&amp;rdquo; et devient elle-même vivante en se remplissant de planeurs en suivant la règle de Conway !&lt;/p&gt;
&lt;p&gt;Le &amp;ldquo;Jeu de la Vie&amp;rdquo; est donc capable d&amp;rsquo;exécuter un programme jouant au &amp;ldquo;Jeu de la Vie&amp;rdquo;. Mais quels autres programmes peut-il exécuter ? On connait depuis 1984 des structures calculant les nombres premiers, et d&amp;rsquo;autres &amp;ldquo;écrivant&amp;rdquo; en clair comme celle-ci :&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/Rj3va_5qcM4"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Mais en 2000, Paul Rendell a réussi a créer une  &amp;ldquo;
&amp;rdquo; en Jeu de la Vie
, ce qui signifie que ce petit jeu aux  règles extraordinairement simple est capable, avec une astucieuse programmation, de réaliser toutes les opérations d&amp;rsquo;un ordinateur usuel.&lt;/p&gt;
&lt;p&gt;Outre le jeu de la Vie, Golly peut exécuter d&amp;rsquo;autres automates cellulaires en utilisant le fantastique algorithme Hashlife, notamment
, un système simulant les circuits électroniques digitaux.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Hashlife&amp;rdquo; est bien un algorithme qui compresse l&amp;rsquo;espace et le temps, comme le dit Rokicki, et il  est même d&amp;rsquo;un usage assez général. Je ne serais pas étonné s&amp;rsquo;il trouvait prochainement des applications &amp;ldquo;sérieuses&amp;rdquo;, en simulation notamment.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;adore les rubriques de Jean-Paul Delahaye dans &amp;ldquo;Pour la Science&amp;rdquo;. Surtout celle du mois prochain&amp;hellip;&lt;/p&gt;
&lt;h2 id="références"&gt;Références:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Jean-Paul Delahaye &amp;ldquo;
&amp;rdquo;, Pour la Science, avril 2009, p. 86-91&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Tomas G. Rokicki &amp;ldquo;
&amp;rdquo;, Dr. Dobbs Journal, avril 2006&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;&lt;span class="altmetric-embed" data-badge-type="donut" data-badge-popover="right" data-doi="10.1016/0167-2789(84)90251-3" style="float: right; margin: 0 0 0.5rem 0.5rem;"&gt;&lt;/span&gt;
William Gosper &amp;ldquo;Exploiting Regularities in Large Cellular Spaces&amp;rdquo;, 1984, Physica D. Nonlinear Phenomena, Vol 10, pp. 75-80 
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;Paul Rendell &amp;quot; 
&amp;rdquo;, 2000&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;Paul Callahan &amp;ldquo;Wonders of Math : 
&amp;rdquo; sur Math.com&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;
, un blog dédié aux nouvelles découvertes sur le Jeu de la Vie&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;Un &amp;ldquo;
&amp;rdquo; en Java, utilisant l&amp;rsquo;algorithme Hashlife implanté dans ce langage, en open source.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-8"&gt;&lt;/span&gt;David Bau &amp;ldquo;
&amp;rdquo;, une implantation (simplifiée) de Hashlife en Python&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Superordinateurs de table</title><link>https://drgoulu.com/2009/03/13/superordinateurs-de-table/</link><pubDate>Fri, 13 Mar 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/03/13/superordinateurs-de-table/</guid><description>&lt;p&gt;Depuis de nombreuses années, les
sont formés de très nombreux processeurs calculant en parallèle. Le record actuel est tenu par le
qui comprend 6'948 Opteron bicœurs et 12'960 processeurs
d&amp;rsquo;IBM, contenant chacun
(&amp;quot;
Unit&amp;quot;, SPU).&lt;/p&gt;
&lt;h3 id="combien-"&gt;Combien ?&lt;/h3&gt;
&lt;p&gt;&amp;ldquo;Roadrunner&amp;rdquo; peut effectuer 1
, soit un million de milliards d&amp;rsquo;opérations arithmétiques par seconde et vaut des millions d&amp;rsquo;euros. Vous pouvez aujourd&amp;rsquo;hui assez facilement disposer dans votre PC du millième de cette puissance pour quelques centaines d&amp;rsquo;euros seulement.&lt;/p&gt;
&lt;p&gt;En effet, les
&amp;ldquo;GPU&amp;rdquo; récents sont formés de centaines d&amp;rsquo;
assez semblables aux 8 SPU du Cell. Initialement dédiés à la génération d&amp;rsquo;images réalistes en 3D temps réel et limités au calcul en virgule fixe, les GPU sont devenus capables d&amp;rsquo;exécuter certains programmes en virgule flottante beaucoup plus rapidement que sur les processeurs classiques : c&amp;rsquo;est le calcul générique sur GPU  (
).&lt;/p&gt;
&lt;p&gt;La
offrent désormais une puissance de l&amp;rsquo;ordre du teraflops, soit 200x plus que
. D&amp;rsquo;ailleurs nVidia commercialise désormais ses derniers processeurs sur des
dédiées au calcul, et dépourvues de sortie video, un comble pour des processeurs graphiques !&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 550px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/94026009fee5d5ba9d3a9574be8e5250_hu_ba559f086c58f9d1.webp" srcset="https://drgoulu.com/posts/2009/images/94026009fee5d5ba9d3a9574be8e5250_hu_ba559f086c58f9d1.webp 320w, https://drgoulu.com/posts/2009/images/94026009fee5d5ba9d3a9574be8e5250_hu_6db4e47bd048a25.webp 480w, https://drgoulu.com/posts/2009/images/94026009fee5d5ba9d3a9574be8e5250_hu_1283abfc1968a245.webp 550w" sizes="(max-width: 640px) 100vw, 550px" alt="ça ressemple à de la pub, mais ça n&amp;#39;en est pas (hélas)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;ça ressemple à de la pub, mais ça n&amp;rsquo;en est pas (hélas)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Ainsi, la science peut bénéficier de processeurs puissants à des prix très bas grâce aux
et de PC familiaux.&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 760px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/jUecNi222Fw"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Simulation d&amp;rsquo;écoulement d&amp;rsquo;un fluide par la méthode &amp;ldquo;Lattice Bolzmann&amp;rdquo; exécutée simultanément sur le CPU et sur le GPU&amp;hellip;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="comment-"&gt;Comment ?&lt;/h3&gt;
&lt;p&gt;La
limite beaucoup le gain de performances obtenu en répartissant un programme existant sur plusieurs processeurs (
). Dans un GPU, les centaines de processeurs travaillant en parallèle ne sont réellement efficaces que s&amp;rsquo;lorsqu&amp;rsquo;ils effectuent tous les mêmes opérations sur des données différentes (
).&lt;/p&gt;
&lt;p&gt;Pour exploiter la puissance des GPU il faut donc re-coder bon nombre d&amp;rsquo;algorithmes et de méthodes numériques en se basant sur une bonne connaissance de l&amp;rsquo;architecture des GPU, et en utilisant des langages de programmation spécifiques. nVidia a pris une longueur d&amp;rsquo;avance dès 2007 en proposant
, une extension du langage C et son compilateur pour les GPU de marque nVidia exclusivement. ATI/AMD a suivi fin 2008 en lançant
, une variante du langage
, lui même dérivé du C par l&amp;rsquo;Université de Stanford. Mais Stream ne fonctionne que sur les GPU d&amp;rsquo;AMD/ATI, évidemment.&lt;/p&gt;
&lt;p&gt;Là dessus, des entreprises comme
ont développé des plate-formes de développement permettant de compiler le même programme C++ pour CPU classiques, GPU nVidia ou ATI/AMD et aussi pour les
de &amp;ldquo;Roadrunner&amp;rdquo; et des consoles PlayStation 3 de Sony.&lt;/p&gt;
&lt;p&gt;Apple a annoncé une nouvelle étape avec
, une autre variante de C qui devrait être supportée par son prochain système d&amp;rsquo;exploitation OS X 10.6 &amp;ldquo;Snow Leopard&amp;rdquo; cette année. Microsoft suivra probablement avec quelque chose d&amp;rsquo;équivalent intégré au Direct X 11 qui accompagnera Windows Seven (si tout va bien&amp;hellip;)&lt;/p&gt;
&lt;p&gt;Resté bien silencieux sur le sujet des GPU, intel prépare sa revanche en 2010 avec son processeur
, qui contiendra quelques dizaines de coeurs de ses processeurs classiques x86, et donc sera en principe capable d&amp;rsquo;exécuter simultanément un grand nombre de programmes habituels, tout en offrant une puissance suffisante pour générer des images en 3D également.&lt;/p&gt;
&lt;h3 id="pour-quoi-"&gt;Pour quoi ?&lt;/h3&gt;
&lt;p&gt;&amp;quot; &lt;em&gt;le PowerXcell 8i s&amp;rsquo;adresse avant tout aux scientifiques et au marché des consoles&lt;/em&gt;&amp;quot;. Cette merveilleuse
s&amp;rsquo;applique également aux GPU : le marché porteur est celui des jeux video, toujours plus gourmands en qualité d&amp;rsquo;image et d&amp;rsquo;animation de scènes 3D complexes, mais aussi en capacité de simulation de phénomènes physiques. On veut de plus en plus de réalisme des chutes, collisions, explosions.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 500px; width: 100%;"&gt;&lt;a href="http://http.developer.nvidia.com/GPUGems3/gpugems3_part05.html" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/40dd712b15cbbfe9fbf94f84b24f89a7_hu_cce5c7dba7081f00.webp" srcset="https://drgoulu.com/posts/2009/images/40dd712b15cbbfe9fbf94f84b24f89a7_hu_cce5c7dba7081f00.webp 320w, https://drgoulu.com/posts/2009/images/40dd712b15cbbfe9fbf94f84b24f89a7_hu_d14508cbb7b8c296.webp 480w, https://drgoulu.com/posts/2009/images/40dd712b15cbbfe9fbf94f84b24f89a7_hu_e44eaf18908b5a5b.webp 500w" sizes="(max-width: 640px) 100vw, 500px" alt="un dinosaure s&amp;#39;effondre... : illustration du chapitre de GPU Gems 3 consacré à la simulation physique. Cliquez sur l&amp;#39;image pour accéder au texte" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;un dinosaure s&amp;rsquo;effondre&amp;hellip; : illustration du chapitre de GPU Gems 3 consacré à la simulation physique. Cliquez sur l&amp;rsquo;image pour accéder au texte&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Jusqu&amp;rsquo;ici les jeux intégraient la mécanique des corps rigides, mais désormais les cheveux et les habits de nos héros virtuels suivent leurs mouvements, car il est possible de simuler la déformation élastique et la rupture. La prochaine étape est de
, on y est presque.&lt;/p&gt;
&lt;p&gt;Or les méthodes nécessaires à ces applications ludiques sont très semblables à celles permettant de prévoir la météo, de simuler des galaxies ou de déterminer les propriétés de molécules chimiques, entre autres.&lt;/p&gt;
&lt;p&gt;Parmi les 200 applications listées sur la
, bon nombre sont des
et d&amp;rsquo;algèbre linéaire pouvant être appliquées dans de nombreux domaines, comme par exemple
qui nécessite d&amp;rsquo;effectuer chaque milliseconde un produit scalaire d&amp;rsquo;une matrice 3000 x 6000 par le vecteur des 6000 mesures pour obtenir les 3000 commandes (
)&lt;/p&gt;
&lt;p&gt;Les logiciels scientifiques usuels commencent à tirer parti de ces librairies de façon quasiment transparente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pour Matlab, il existe déjà un
et le l&amp;rsquo;environnement
&lt;/li&gt;
&lt;li&gt;LabView dispose d&amp;rsquo;un suport &amp;ldquo;multicore&amp;rdquo; intégrant Cuda, utilisé dans le projet
&lt;/li&gt;
&lt;li&gt;
 &lt;em&gt;(lien mis à jour le 13.3.12)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Python, mon langage préféré du moment, peut aussi accéder à la puissance de Cuda grâce à
(&lt;em&gt;faut que j&amp;rsquo;essaie ça asap!&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien d&amp;rsquo;autres applications spécifiques comme:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
, une librairie de
utilisée dans les
de
qui accélère les calculs jusqu&amp;rsquo;à 700x par rapport à un processeur normal.&lt;/li&gt;
&lt;li&gt;Différents solveurs en
.&lt;/li&gt;
&lt;li&gt;Des logiciels de
, appliqués à l&amp;rsquo;imagerie médicale ou au marché de la sécurité. Même l&amp;rsquo;encodage de films peut désormais profiter de la puissance des GPU :
, écrit spécialement pour GPU va extrêmement vite mais le résultat est d&amp;rsquo;une qualité inférieure à celui de 
qui va de 2 à 5 fois plus vite lorsque Cuda est activé.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quel que soit votre utilisation de l&amp;rsquo;ordinateur, souvenez-vous de faire bien attention au GPU qui équipera votre prochaine machine : ce sera lui qui fera de votre machine un superordinateur de table.&lt;/p&gt;
&lt;h3 id="liens"&gt;Liens:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
le site de référence de mon gourou sur ce sujet, JegX&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Damien Triolet, &amp;ldquo;
&amp;rdquo;, sur hardware.fr 2 Mars 2007&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Casse-tête binaire</title><link>https://drgoulu.com/2009/02/03/casse-tete-binaire/</link><pubDate>Tue, 03 Feb 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/02/03/casse-tete-binaire/</guid><description>&lt;p&gt;Je viens d&amp;rsquo;inventer le problème suivant, qui est en fait une variation informatique d&amp;rsquo;un
membre du C@fé des Sciences.&lt;/p&gt;
&lt;p&gt;Un registre de microprocesseur contient un mot de 32 bits quelconque, mais dont exactement 8 bits sont à 1, les autres à 0 (par exemple 01001000000000111000010000101000)&lt;/p&gt;
&lt;p&gt;Comment faire pour modifier les premiers 8 bits du mots de façon à ce qu&amp;rsquo;ils comportent autant de bits à &amp;lsquo;1&amp;rsquo; qu&amp;rsquo;il n&amp;rsquo;y en a au total dans les 24 bits suivant (soit 6 dans l&amp;rsquo;exemple ci-dessus), et ceci en une seule instruction du processeur ?&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 500px; width: 100%;"&gt;&lt;a href="http://www.flickr.com/photos/syntopia/2058406738/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/799b28c713fe0b24c23115571899f28f_hu_bb1e9f7a406c1523.webp" srcset="https://drgoulu.com/posts/2009/images/799b28c713fe0b24c23115571899f28f_hu_bb1e9f7a406c1523.webp 320w, https://drgoulu.com/posts/2009/images/799b28c713fe0b24c23115571899f28f_hu_559ba21440b75d8f.webp 480w, https://drgoulu.com/posts/2009/images/799b28c713fe0b24c23115571899f28f_hu_f553c71f9bfab4a7.webp 500w" sizes="(max-width: 640px) 100vw, 500px" alt="Binary Kite par Syntopia" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Si vous n&amp;rsquo;êtes pas familier avec l&amp;rsquo;
, disons que vous disposez des mêmes opérations qu&amp;rsquo;une calculatrice, mais en binaire : addition, soustraction, ansi que des
. Une instruction, c&amp;rsquo;est une de ces opérations suivie d&amp;rsquo;une
.&lt;/p&gt;</description></item><item><title>Les dimensions de La Machine</title><link>https://drgoulu.com/2008/11/29/les-dimensions-de-la-machine/</link><pubDate>Sat, 29 Nov 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/11/29/les-dimensions-de-la-machine/</guid><description>&lt;p&gt;Vu cette passionnante
, disponible aussi sur YouTube :&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 760px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/yDYCf4ONh5M"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Le début reprend des chiffres et notions de &amp;ldquo;
&amp;rdquo;, un article sur le blog de Kelly qui commence par ce postulat :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;La prochaine étape dans l&amp;rsquo;évolution technologique humaine est un unique ordinateur/réseau/pensant de dimension planétaire. Cet ordinateur planétaire sera la plus grande, complexe et chère machine jamais construite. Ce sera aussi la plateforme principale du monde des affaires et de la culture. Le web est l&amp;rsquo;OS (système d&amp;rsquo;exploitation) initial de cette nouvelle machine globale, et tous nos gadgets personnels seront des fenêtres (windows&amp;hellip;) donnant sur son coeur. Les gadgets futurs seront des portes sur la même machine unique. Concevoir des produits et des services pour cette nouvelle machine demande un état d&amp;rsquo;esprit unique.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Barilan Internet-Thumb"
srcset="https://drgoulu.com/posts/2008/images/e53c119c903b376dcfc13774fb184660_hu_5d34156b2baa20e2.webp 320w, https://drgoulu.com/posts/2008/images/e53c119c903b376dcfc13774fb184660_hu_2e3d951bed95c51e.webp 400w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/e53c119c903b376dcfc13774fb184660_hu_5d34156b2baa20e2.webp"
width="400"
height="393"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Puis il donne quelques dimensions de La Machine : aujourd&amp;rsquo;hui, elle contient environ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1.2 milliards d&amp;rsquo;ordinateurs personnels
,&lt;/li&gt;
&lt;li&gt;2.7 milliards de téléphones portables
,&lt;/li&gt;
&lt;li&gt;1.3 milliards de téléphones fixes
,&lt;/li&gt;
&lt;li&gt;27 millions de serveurs
,&lt;/li&gt;
&lt;li&gt;et 80 millions de PDA sans fil.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Au total, les microprocesseurs fournissant la puissance de calcul totalisent environ 1018 transistors ( un milliard de milliards de transistors). Kevin Jelly se risque ensuite, un peu trop à mon avis, à comparer ce nombre aux 100 milliards de neurones d&amp;rsquo;un cerveau humain
, où les quelque 55'000 milliards de liens du web (900 milliards de pages web
contenant en moyenne 62 liens
) seraient analogues à des synapses.&lt;/p&gt;
&lt;p&gt;Kelly évalue ensuite la bande passante de La Machine en comptant:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;196 milliards d&amp;rsquo;emails (y compris les spams&amp;hellip;.) envoyés chaque jour
. Soit 2.2 millions par seconde, ou une fréquence d&amp;rsquo;envoi de 2 megahertz.&lt;/li&gt;
&lt;li&gt;1012 sont envoyés par an
. Ca correspond à 31'000 per second, ou 31 kilohertz.&lt;/li&gt;
&lt;li&gt;14 milliards de messages instantanés sont échangés par jour
, soit 162 kilohertz.&lt;/li&gt;
&lt;li&gt;Le nombre de requêtes de recherche correspond à 14 kilohertz
.&lt;/li&gt;
&lt;li&gt;Les liens sont cliqués à la fréquence de 0.52 megahertz
.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En fin de compte, tout ceci donne environ 7 terabytes par seconde de bande passante internationale
&lt;/p&gt;
&lt;p&gt;Il y avait environ 5 exabytes (1018, ou 260) d&amp;rsquo;information stockée dans le monde en 2003
, mais la plupart était gardée hors-ligne, sur papier, film, CD et DVD. Depuis, le stockage en ligne a proliféré. Aujourd&amp;rsquo;hui, la mémoire totale de la machine contient environ 246 exabytes d&amp;rsquo;information (246 milliards de gigaoctets!). Cette capacité devrait atteindre 600 exabytes en 2010
.&lt;/p&gt;
&lt;p&gt;A cela on peut ajouter les flux audio et video  qui ne sont pas stockés de manière permanente. Ils sont estimés à 255 exabytes en 2007
, soit plus que le contenu stocké, et il est prévu que cet écart va s&amp;rsquo;accentuer de 20% par an.&lt;/p&gt;
&lt;p&gt;Pour son fonctionnement, La Machine consomme approximativement 800 milliards de kilowatt.heures par an, soit 5% de la production globale d&amp;rsquo;électricité
.&lt;/p&gt;
&lt;p&gt;Kevin Kelly insiste sur le fait qu&amp;rsquo; &amp;ldquo;&lt;em&gt;un problème que nous avons en parlant de La Machine est que ses dimensions excèdent de beaucoup celles auxquelles nous sommes habitués, donc nous n&amp;rsquo;arrivons pas à nous rendre compte de sa taille&lt;/em&gt;&amp;rdquo;. Par exemple, une bibliothèque très complète contient environ 10 terabytes d&amp;rsquo;information, un volume très faible pour La Machine. Ca tiendra sur votre iPod dans 10 ans et ca se transmet en une seconde à l&amp;rsquo;autre bout du monde. Comment mesurerons nous le traffic dans 15 ans ?&lt;/p&gt;
&lt;p&gt;Considérant que la puissance totale de La Machine actuelle est proche de celle d&amp;rsquo;UN cerveau humain ( et d&amp;rsquo;autres comparaisons
, Kelly propose d&amp;rsquo;utiliser le &amp;ldquo;HB&amp;rdquo; (human brain) comme unité de mesure pour les prochaines années. Si la croissance rapide imposée (ou mesurée&amp;hellip;) par la Loi de Moore se poursuit encore quelques décennies (
), entre 2020 et 2040, La Machine atteindra la puissance de calcul de l&amp;rsquo;Humanité.&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;&amp;quot;
&amp;quot; sur clickZ&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;&amp;quot;
&amp;quot;, Portio Research&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;&amp;quot;
&amp;quot;, CIA&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;Jonathan G. Koomey, &amp;ldquo;
&amp;rdquo;, AMD, February 15, 2007&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;&amp;quot;
&amp;quot;, 
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;
, &amp;ldquo;
&amp;rdquo;, December 17, 2006&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;Andrei Z. Broder, Marc Najork, Janet L. Wiener, &amp;ldquo;
&amp;rdquo;, WWW2003, May 20–24, 2003, Budapest, Hungary.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-8"&gt;&lt;/span&gt;&amp;quot;
&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-9"&gt;&lt;/span&gt;&amp;quot;
&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-10"&gt;&lt;/span&gt;
&amp;ldquo;
&amp;rdquo;, InternetNews.com, July 19, 2005&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-11"&gt;&lt;/span&gt;Kevin Kelly &amp;ldquo;
&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-12"&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-13"&gt;&lt;/span&gt;&amp;quot;
&amp;quot;, Primetrica, 2007&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-14"&gt;&lt;/span&gt;
et al. &amp;ldquo;
&amp;rdquo;, Université de Berkeley&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-15"&gt;&lt;/span&gt;&amp;quot;
- An Updated Forecast of Worldwide Information Growth Through 2011&amp;quot;, IDC&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-16"&gt;&lt;/span&gt;Kevin Kelly &amp;ldquo;
&amp;rdquo;, 17 octobre 2007&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="autres-articles-sur-ce-thème"&gt;Autres articles sur ce thème&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
(basé sur la référence
\[15\]ci dessus)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Google trie 1 PetaByte de données !</title><link>https://drgoulu.com/2008/11/22/tri/</link><pubDate>Sat, 22 Nov 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/11/22/tri/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/12217e99baa824ef61d7941a70ea03f7_hu_5f0929e09bf105c7.webp 240w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/12217e99baa824ef61d7941a70ea03f7_hu_5f0929e09bf105c7.webp"
width="240"
height="161"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Pour trier un jeu de 72 cartes, je prends une carte de mon jeu mélangé, et je la pose sur la table. J&amp;rsquo;en prends une seconde, et je la place sur la table avant ou après la première selon l&amp;rsquo;ordre que je souhaite. La troisième carte peut aller avant ou après les deux premières, ou être insérée entre les précédentes, et ainsi de suite jusqu&amp;rsquo;à ce que toutes les cartes soient triées dans l&amp;rsquo;ordre sur la table, ce qui me prend un peu plus d&amp;rsquo;une minute.&lt;/p&gt;
&lt;h3 id="un-terabyte-pour-commencer"&gt;Un TeraByte pour commencer&lt;/h3&gt;
&lt;p&gt;Dans le même temps de 68 secondes,
, améliorant d&amp;rsquo;un facteur 3 le
obtenu plus tôt cette année. Suivant les règles du  &amp;ldquo;
&amp;rdquo; proposé par
en 1998, les cartes contenaient 100 bytes, ce qui représente au total un TeraByte, l&amp;rsquo;équivalent, grosso-modo, d&amp;rsquo;un annuaire qui inclurait tous les habitants de la planète.&lt;/p&gt;
&lt;p&gt;Un TeraByte, c&amp;rsquo;est la capacité d&amp;rsquo;un gros disque dur actuel, mais on ne peut y lire ou écrire &amp;ldquo;que&amp;rdquo; 300 MegaByte par seconde : il faudrait au mieux une heure pour lire les donner à trier dans une mémoire de 1000 GigaByte (qui n&amp;rsquo;existe pas&amp;hellip;) et une autre heure pour réécrire la liste triée, sans compter le temps du tri proprement dit . Google a donc utilisé 1000 ordinateurs, et au moins autant de disques durs formant une partie du &amp;ldquo;Google File System&amp;rdquo;
, le gigantesque système de stockage de Google.&lt;/p&gt;
&lt;h3 id="trions-en-parallèle"&gt;Trions en parallèle&lt;/h3&gt;
&lt;p&gt;Mais comment trier les mêmes données à plusieurs? Reprenons le jeu de 72 cartes et divisions le en 2 tas de 36 cartes mélangées, un pour toi, un pour moi. Nous pourrions placer nos cartes sur une seule ligne sur la table et espérer le faire 2 fois plus vite, mais problème peut survenir si nous voulons simultanément insérer nos cartes au même endroit : comment les placer dans le bon ordre dans ce cas ?  Soit on doit alors comparer nos deux cartes et éventuellement les intervertir avant de les insérer, soit on doit convenir d&amp;rsquo;insérer les cartes à tour de rôle, ce qui ralentit considérablement l&amp;rsquo;opération. Avec 1000 ordinateurs, on ne va pas s&amp;rsquo;en sortir beaucoup mieux car c&amp;rsquo;est visiblement l&amp;rsquo;accès à la table (=mémoire), unique, qui forme un goulot d&amp;rsquo;étranglement : pas efficace.&lt;/p&gt;
&lt;p&gt;Une autre approche serait que je trie mes 36 cartes et toi tes 36 cartes indépendamment, puis que nous réunissions nos deux piles triées, ce qui est très rapide : je pose mes cartes une à une tant qu&amp;rsquo;elles viennent avant celle que je vois sur le haut de ta pile, et quand je ne peux plus en poser, tu poses les tiennes tant qu&amp;rsquo;elles viennent avant celle que je ne pouvais plus poser etc.&lt;/p&gt;
&lt;p&gt;On peut faire même mieux en échangeant astucieusement nos cartes plutôt que de reformer une seule pile. Si je trie les carreaux et coeur, et toi les trèfles et pique, plus besoin de reformer une pile unique à la fin : commençons par nous échanger les cartes qui n&amp;rsquo;ont pas la bonne couleur, puis trions nos tas chacun sur notre table, et voilà !&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 280px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2008/images/d4e5d0a778dba725091d8317e6bac939.gif" alt="Animation de lalgorithme de tri quicksort, nettement plus efficace sur un ordinateur que le tri par insertion" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" /&gt;&lt;figcaption&gt;Animation de l&amp;rsquo;algorithme de tri &amp;quot;quicksort&amp;quot;.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3 id="quicksort"&gt;QuickSort&lt;/h3&gt;
&lt;p&gt;Voilà qui ressemble furieusement à l&amp;rsquo;
illustré ci-contre : on commence par échanger les données plus grande qu&amp;rsquo;un pivot (seuil bleu) de la première moitié contre celles plus petites que le seuil de la 2ème moitié. Puis on peut répéter l&amp;rsquo;opération entre le premier quart et le second d&amp;rsquo;une part, et le 3ème et le 4ème d&amp;rsquo;autre part, et ainsi de suite. Si on a un nombre de données qui est une puissance de 2, on peut tout trier par simples échanges, et si on dispose aussi d&amp;rsquo;un nombre de processeurs qui soit une puissance de deux, on peut répartir le travail très efficacement. A quelques variations près, c&amp;rsquo;est cet algorithme
qui est utilisé pour trier de très grosses quantités de données.&lt;/p&gt;
&lt;h3 id="mapreduce"&gt;MapReduce&lt;/h3&gt;
&lt;p&gt;S&amp;rsquo;il y a un sujet sur lesquel j&amp;rsquo;aurais du me documenter avant d&amp;rsquo;
, c&amp;rsquo;est
. Le principe est tout simple :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le programmeur écrit :
&lt;ul&gt;
&lt;li&gt;une fonction &amp;ldquo;map&amp;rdquo; qui sera appliquée à chaque donnée et produira un résultat intermédiaire&lt;/li&gt;
&lt;li&gt;une fonction &amp;ldquo;reduce&amp;rdquo; qui regroupera les résultats intermédiaires de &amp;ldquo;map&amp;rdquo; pour produire le résultat final&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;on donne ces deux fonctions à MapReduce, qui se charge de les exécuter de façon efficace sur beaucoup de donnée sur beaucoup de disques durs et beaucoup d&amp;rsquo;ordinateurs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le MapReduce de Google contient en fait un algorithme de partitionnement qui répartir les résultats des &amp;ldquo;map&amp;rdquo; sur les &amp;ldquo;reduce&amp;rdquo;, et un algorithme de tri incorporé à la partie &amp;ldquo;Reduce&amp;rdquo;, car les fonctions &amp;ldquo;reduce&amp;rdquo; peuvent presque toujours être rendues plus efficaces si leurs données sont triées. De ce fait, il semblerait que le record du tri ait été obtenu avec une fonction &amp;ldquo;map&amp;rdquo; triviale, et une &amp;ldquo;reduce&amp;rdquo; qui ne l&amp;rsquo;est pas moins!&lt;/p&gt;
&lt;p&gt;MapReduce est probablement la plus géniale idée des ingénieurs de Google, et une contribution majeure à l&amp;rsquo;informatique du futur. Le code n&amp;rsquo;est pas public, mais
.  D&amp;rsquo;autre part la fondation Apache a un
, qui se base sur
, leur équivalent du Google File System. C&amp;rsquo;est en utilisant ce système + 1000 lignes de Java seulement que Yahoo! a pu trier le TeraByte en 209 secondes
. 3x moins bien que Google, c&amp;rsquo;est quand même pas mal du tout&amp;hellip;&lt;/p&gt;
&lt;p&gt;Pour en savoir plus sur MapReduce vous pouvez lire la référence
, et/ou :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;regarder cette vidéo &lt;div class="my-6 mx-auto" style="max-width: 760px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/NXCIItzkn3E"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;consulter ces
, plus techniques, avec exemple de code
et performances&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="et-un-petabyte-un-"&gt;Et un
, un !&lt;/h3&gt;
&lt;p&gt;Une fois qu&amp;rsquo;on a un stockage distribué (GFS), un système de traitement parallèle massif (MapReduce) et quelques milliers d&amp;rsquo;ordinateurs, pourquoi se limiter à trier un TeraByte ? Comme ils le disent dans
, Google était &amp;ldquo;curieux de voir ce qui arrive si on essaie avec un PetaByte&amp;rdquo;. 1000x plus quoi. Juste pour voir&amp;hellip;&lt;/p&gt;
&lt;p&gt;Ca a pris 6 heures et 2 minutes, soit 21720 secondes sur 4000 ordinateurs. Ramené au même nombre d&amp;rsquo;ordinateurs, ça a donc pris &amp;ldquo;seulement&amp;rdquo; 1277x plus de temps pour trier 1000x plus de données. C&amp;rsquo;est assez efficace si l&amp;rsquo;on considère que la complexité d&amp;rsquo;un algorithme comme QuickSort est O(N.log N) : sur un seul ordinateur, trier 1000x plus de données prend théoriquement 1000x10 = 10'000x plus de temps. Mais en répartissant le tri sur 4 fois plus d&amp;rsquo;ordinateurs, on divise ce temps par 4 et en plus on divise par 4 la taille des données : on devrait se retrouver avec 250x8/4 = environ 500x plus de temps. Un facteur 1277 c&amp;rsquo;peut sembler nettement plus, mais c&amp;rsquo;est normal en raison des communications supplémentaires entre les ordinateurs.&lt;/p&gt;
&lt;p&gt;Le tri du PetaByte pose une autre problème intéressant : les données étaient réparties sur 48'000 disques durs et statistiquement, en 6 heures de calcul, au moins un des disques tombe en panne
! Il faut donc que les données triées soient redondantes pour que l&amp;rsquo;on puisse remplacer le disque fautif sans interrompre l&amp;rsquo;exécution du tri, ce qui illustre une autre fonctionnalité remarquable du Google File System &amp;hellip;&lt;/p&gt;
&lt;h3 id="et-après-"&gt;Et après ?&lt;/h3&gt;
&lt;p&gt;Peu de groupes au monde disposent d&amp;rsquo;assez de ressources pour tenter de faire mieux que Google. Mais heureusement, les
sont ouverts à d&amp;rsquo;autres catégories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la catégorie &amp;ldquo;penny&amp;rdquo; consiste à trier le plus de nombres possibles pour un &amp;ldquo;cout&amp;rdquo; d&amp;rsquo;un penny, environ 1.3 centimes d&amp;rsquo;Euro. Le record actuel a été obtenu sur un PC doté d&amp;rsquo;un AMD 64 sous Linux, mais surtout de 4 disques dur SATA, qui a trié 1'812'000 enregistrements de 100 bytes en 2.408 secondes&lt;/li&gt;
&lt;li&gt;la catégorie &amp;ldquo;Minute&amp;rdquo; limite le temps de calcul à 60 secondes. Une machine parallèle du MIT a trié 2.140 Milliards d&amp;rsquo;enregistrements de 100 bytes toujours en 2007.&lt;/li&gt;
&lt;li&gt;la catégorie &amp;ldquo;
&amp;rdquo; me semble plus intéressante au niveau du matériel que du logiciel : il s&amp;rsquo;agit de trier un maximum de nombres par
d&amp;rsquo;énergie consommée par l&amp;rsquo;ordinateur. Le record appartient à un ordinateur portable utilisant un processeur intel Mobile Core 2 Duo doté de 13 (!) disques durs, et qui trie environ 11'300 enregistrements par Joule
. Si les machines de Google avaient la même efficacité énergiétique, le tri du PetyBytes aurait consommé 0.885 GigaJoule, soit 246KWh. Répartis sur 6 jours, ça donne une puissance de 1.7 KW seulement.
. Mais avec 4000 gros PC et 48'000 disques durs, Google est probablemet autour de 20x plus.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="et-les-spaghetti-dans-tout-ça-"&gt;Et les spaghetti dans tout ça ?&lt;/h3&gt;
&lt;p&gt;Je ne peux me résoudre à terminer un article sur le tri sans parler du
qui m&amp;rsquo;avait émerveillé il y a près de 25 ans déjà
.&lt;/p&gt;
&lt;p&gt;Comme on l&amp;rsquo;a vu plus haut, les meilleurs algorithmes de tri existant ont une complexité O(N.Log N) : le temps de calcul augmente plus vite que le nombre des données, et malgré quelques progrès dus à la parallélisation, il n&amp;rsquo;existe pas de tri informatique général* en O(N).&lt;/p&gt;
&lt;p&gt;Pourtant, des spaghettis pourraient réussir là où les
patinent :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;on coupe un spaghetti à une longueur représentant le premier enregistrement à trier ramené à un nombre. On coupe un autre spaghetti à la longueur du second nombre, et ainsi de suite pour tous les nombres, et en un temps O(N) on obtient N spaghettis.&lt;/li&gt;
&lt;li&gt;on pose verticalement la botte de spaghettis sur une table plane de façon à tasser tous les spaghettis contre la table. Ceci prend un temps constant, très court et indépendant de N et ne compte donc pas dans la complexité globale&lt;/li&gt;
&lt;li&gt;En posant une planche enduite de colle sur la botte, on extrait le spaghetti le plus long, on le mesure, on retransforme le nombre en une donnée qu&amp;rsquo;on écrit au bas de la liste triée et on recommence N fois, pour chaque spaghetti.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Voilà, les spaghettis permettent de trier nos enregistrements en un temps proportionnel à N ! Trier 1000x plus de spaghettis prendra exactement 1000x plus de temps. En fait, si on disposait d&amp;rsquo;une machine capable de couper puis de mesurer 150 millions de spaghetti à la seconde, elle aurait égalé la machine de Google sur le TeraByte, et l&amp;rsquo;aurait battu sur le PetaByte, en 18.8 heures seulement :-)&lt;/p&gt;
&lt;p&gt;Plus sérieusement, si on a besoin de trier des objets physiques (des grains de sable, des protéines, des ADN ?), il pourrait être intéressant de ne pas oublier la leçon des spaghetti : certains dispositifs physiques peuvent être plus rapides que les plus puissants ordinateurs
&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung &amp;ldquo;
&amp;rdquo;, 19th ACM Symposium on Operating Systems Principles, Lake George, NY, October, 2003.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Jeffrey Dean and Sanjay Ghemawat, &amp;ldquo;
&amp;rdquo; OSDI'04: Sixth Symposium on Operating System Design and Implementation, San Francisco, CA, December, 2004.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Jim Wyllie, &amp;ldquo;
&amp;rdquo;, IBM, February 4, 1999&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;Owen O’Malley, &amp;ldquo;
&amp;rdquo;, Yahoo!, May 2008&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;
: records de tri de données depuis 1987&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;“
“  Datamation, V 31.7, April 1985, pp 112-118.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;Eduardo Pinheiro, Wolf-Dietrich Weber and Luiz André Barroso, &amp;ldquo;
&amp;rdquo;, Google Inc. Proceedings of the 5th USENIX Conference on File and Storage Technologies (FAST’07), February 2007.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-8"&gt;&lt;/span&gt;Suzanne Rivoire et al. &amp;ldquo;
&amp;quot;,SIGMOD’07, June 11–14, 2007, Beijing, China&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-9"&gt;&lt;/span&gt;Dewdney, A. K.&amp;ldquo;On the spaghetti computer and other analog gadgets for problem solving&amp;rdquo;, Scientific American, (June 1984), 250 (6): 19-26&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-10"&gt;&lt;/span&gt;Niall Murphy et al. &amp;ldquo;
&amp;rdquo;,
,2008, Vol 4 nr 1, pages 3-12&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;Note* : il existe des algorithmes de tri de complexité linéaire sur des données satisfaisant certaines hypothèses, comme Hervé me l&amp;rsquo;a fait remarquer dans un commentaire&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Le Problème à N corps</title><link>https://drgoulu.com/2008/11/16/le-probleme-a-n-corps/</link><pubDate>Sun, 16 Nov 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/11/16/le-probleme-a-n-corps/</guid><description>&lt;p&gt;Le &amp;ldquo;problème à N corps&amp;rdquo; consiste à déterminer le mouvement de N masses sous l&amp;rsquo;effet des forces d&amp;rsquo;attraction gravitationnelles entre elles.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt=""
src="https://drgoulu.com/posts/2008/images/2aafbc7c07256efd594fb07d17ea858d.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Pour N=2, Newton savait déjà que les
décrivent des ellipses autour de leur centre de gravité commun.&lt;/p&gt;
&lt;p&gt;Pour N=3,
 : une toute petite différence dans les positions et vitesses initiales des corps pouvait causer de très importantes différences dans la trajectoire des corps. Cependant, malgré ce que beaucoup croient, il existe une solution analytique au problème des trois corps découverte en 1909 par
. Elle n&amp;rsquo;est cependant pas utilisable en pratique pour des calculs.&lt;/p&gt;
&lt;p&gt;Pour plus de 3 corps, il n&amp;rsquo;existe pas de solution analytique. Ceci signifie entre autres qu&amp;rsquo;il n&amp;rsquo;est pas possible de démontrer la stabilité d&amp;rsquo;un système avec quelques corps, comme le Système Solaire par exemple. Des mathématiciens comme
ou
s&amp;rsquo;y sont cassés les dents : rien ne prouve que les planètes suivront toujours leurs orbites actuelles dans quelques centaines de millions d&amp;rsquo;années. Encore moins qu&amp;rsquo;un astéroïde viennent percuter notre belle planète beaucoup plus tôt.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 430px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2008/images/f6524d761bd5b7f92d5262ab33448a77_hu_9e54bb6b15e3cc74.webp" srcset="https://drgoulu.com/posts/2008/images/f6524d761bd5b7f92d5262ab33448a77_hu_9e54bb6b15e3cc74.webp 320w, https://drgoulu.com/posts/2008/images/f6524d761bd5b7f92d5262ab33448a77_hu_a2ce086bf66faf75.webp 430w" sizes="(max-width: 640px) 100vw, 430px" alt="Simulation du Système Solaire sur Univers Sandbox, N~20" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Simulation du Système Solaire sur Univers Sandbox, N~20&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Il est aujourd&amp;rsquo;hui facile de simuler quelques millions d&amp;rsquo;années d&amp;rsquo;évolution du Système Solaire sur un PC, par exemple avec
, le chouette programme dont j&amp;rsquo;ai
. Comme on connait avec une très grande précision la position, la vitesse et la masse des planètes et de leurs principaux satellites, on estime que l&amp;rsquo;on peut calculer leur position dans 5 millions d&amp;rsquo;années à 150m près. Pour arriver à cette précision, mais aussi tout simplement pour réaliser une simulation réaliste, il faut tout particulièrement veiller à la
utilisée, pour garantir la conservation de l&amp;rsquo;énergie totale du système. Selon
, la méthode de
donne les meilleurs résultats.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;autre part, pour chacun des N corps, il faut calculer les N-1 forces exercées par les autres corps. Au total, il faudra calculer &lt;/p&gt;
\[N.(N-1)\]&lt;p&gt;/2 forces (le /2 vient du fait qu&amp;rsquo;il suffit de ne calculer qu&amp;rsquo;une fois la force entre deux corps). On dit que la complexité est O(N²) : il faut effectuer un nombre d&amp;rsquo;opérations proportionnel au carré de N. Pour quelques dizaines de corps, ça ne pose aucun problème, mais si l&amp;rsquo;on veut simuler des galaxies ou même la collision de galaxies avec N=1'000'000, on se retrouve avec mille milliards de forces à évaluer, ce qui nécessite beaucoup de temps de calcul.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 480px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2008/images/7d7300972c3b4db5108dd38e6d611c10_hu_42203dbb0daba09a.webp" srcset="https://drgoulu.com/posts/2008/images/7d7300972c3b4db5108dd38e6d611c10_hu_42203dbb0daba09a.webp 320w, https://drgoulu.com/posts/2008/images/7d7300972c3b4db5108dd38e6d611c10_hu_21ba598f0ae3132f.webp 480w, https://drgoulu.com/posts/2008/images/7d7300972c3b4db5108dd38e6d611c10_hu_1f031c8dd41f5e50.webp 480w" sizes="(max-width: 640px) 100vw, 480px" alt="Simulation de la future collision de la Voie Lactée et dAndromède, N=100000000" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Simulation de la future collision de la Voie Lactée et d&amp;rsquo;Andromède, N=100'000'000&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;On pourrait se dire qu&amp;rsquo;une petite étoile à un bout de la galaxie n&amp;rsquo;attire pratiquement pas une autre petite étoile très distante, mais négliger cette force n&amp;rsquo;est pas une bonne idée. D&amp;rsquo;une part, l&amp;rsquo;énergie totale du système ne serait plus conservée, et d&amp;rsquo;autre part il faudrait trouver un critère permettant de savoir quelles forces sont négligeables, sans les calculer.&lt;/p&gt;
&lt;p&gt;
ont proposé en 1986 un algorithme dont la complexité est O(N.log N). Pour N=1'000'000, il n&amp;rsquo;y a environ que 20'000'000 de forces à évaluer, ce qui rend le calcul possible. L&amp;rsquo;algorithme consiste à diviser l&amp;rsquo;espace en une structure arborescente appelée
 et à y répartir les corps. On ne calcule les forces qu&amp;rsquo;entre les corps situé dans la même zone de l&amp;rsquo;octree, puis l&amp;rsquo;algorithme calcule les interactions entre les zones. Reste une difficulté : en se déplaçant, les corps changent de zone, et l&amp;rsquo;algorithme nécessite d&amp;rsquo;adapter l&amp;rsquo;octree de l&amp;rsquo;adapter à la distribution des corps.&lt;/p&gt;
&lt;p&gt;&lt;div class="my-6 mx-auto" style="max-width: 760px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/0TuWDVB-V-E"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
interaction de 2 amas de 50 galaxies. N=160'000&lt;/p&gt;
&lt;p&gt;Dès 1987,
a développé un algorithme baptisé &amp;ldquo;
&amp;rdquo; (FMM), dont la complexité est O(N) seulement, et qui ne nécessite pas d&amp;rsquo;adaptation de la division de l&amp;rsquo;espace utilisée. Il est assez facile d&amp;rsquo;
, mais en 3D l&amp;rsquo;interaction entre zones est beaucoup plus complexe.&lt;/p&gt;
&lt;p&gt;La FMM est considérée par certains comme l&amp;rsquo;un des algorithmes les plus importants du XXième siècle, car il peut être appliqué à des problèmes beaucoup plus généraux que les N corps, comme certains problèmes de
ou de
. Inutile de dire que je vais regarder ça de plus près &amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
, le logiciel développé par Barnes et Hut, site avec énormément de liens sur le domaine&lt;/li&gt;
&lt;li&gt;Dossier &amp;ldquo;
&amp;rdquo; sur AstroSurf&lt;/li&gt;
&lt;li&gt;
 sur la Wikipedia&lt;/li&gt;
&lt;li&gt;
à Berkeley&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
: code VPython&lt;/li&gt;
&lt;li&gt;
 sur Wikipedia&lt;/li&gt;
&lt;li&gt;Guy Blelloch and Girija Narlikar &amp;ldquo;
&amp;rdquo; Parallel Algorithms. Series in Discrete Mathematics and Theoretical Computer Science, Volume 30, 1997.&lt;/li&gt;
&lt;li&gt;
, une librairie de simulation N corps parallélisée sur GPU (processeur graphique)&lt;/li&gt;
&lt;li&gt;
: comparaisons et implémentation sur super ordinateurs&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="logiciels-n-corps-sur-pc"&gt;Logiciels N corps sur PC:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
 : le plus beau et le plus fun&lt;/li&gt;
&lt;li&gt;
: utilise l&amp;rsquo;alogrithme de Barnes Hut&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
, un peu ancien&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Le GPS pour les nuls : Cartes et Routage</title><link>https://drgoulu.com/2008/09/27/le-gps-pour-les-nuls-cartes-et-routage/</link><pubDate>Sat, 27 Sep 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/09/27/le-gps-pour-les-nuls-cartes-et-routage/</guid><description>&lt;p&gt;Dans l&amp;rsquo;
, j&amp;rsquo;explique comment votre GPS peut déterminer la latitude et la longitude où vous vous trouvez à partir de satellites. C&amp;rsquo;est génial, mais c&amp;rsquo;est peu utile si vous n&amp;rsquo;êtes pas un marin.&lt;/p&gt;
&lt;p&gt;Ce qui fait l&amp;rsquo;intérêt du GPS de nos jours c&amp;rsquo;est qu&amp;rsquo;il vous dit que vous êtes sur la Route du Mandement en direction de Satigny, et qu&amp;rsquo;il faut tourner à droite 300m après le giratoire pour aller en direction de Bourdigny. Comment est-ce possible ?&lt;/p&gt;
&lt;p&gt;En plus du récepteur sophistiqué décrit dans
, un GPS contient une grosse mémoire pour stocker une carte géographique et un microprocesseur relativement puissant pour calculer votre itinéraire par une méthode qui fait l&amp;rsquo;objet de cet article.&lt;/p&gt;
&lt;p&gt;La carte routière stockée dans votre GPS est bien plus qu&amp;rsquo;une digitalisation d&amp;rsquo;une carte routière en papier : elle contient le &amp;ldquo;
&amp;rdquo; formé par le réseau routier, à savoir tous les carrefours (ou points, ou noeuds) reliés par un réseau de chemins (ou arcs, ou arêtes).&lt;/p&gt;
&lt;p&gt;Pour aller d&amp;rsquo;un point à un autre, le microprocesseur de votre GPS va déterminer le trajet le plus court entre deux lieux en parcourant ce graphe. Si vous utilisez un logiciel de cartographie comme
, vous vous êtes peut-être dit que Google a assez de gros ordinateurs pour le faire rapidement, et garde peut-être même en mémoire les requêtes les plus fréquentes (Paris - le Grau du Roi&amp;hellip;) pour les resservir plus vite. Mais si vous avez un petit GPS dans votre voiture ou dans la main, vous avez certainement remarqué qu&amp;rsquo;il lui fait plusieurs secondes avant de pouvoir commencer à vous indiquer la direction à prendre. En réalité, c&amp;rsquo;est plutôt le fait qu&amp;rsquo;il n&amp;rsquo;ait pas besoin de minutes, voire d&amp;rsquo;heures de calcul qui tient de l&amp;rsquo;exploit, tant il existe de routes possibles.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/dfffb52924ac4c0757d998edc886763a_hu_8a55d20120d5399b.webp 320w, https://drgoulu.com/posts/2008/images/dfffb52924ac4c0757d998edc886763a_hu_c9cda292743eddb5.webp 350w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/dfffb52924ac4c0757d998edc886763a_hu_8a55d20120d5399b.webp"
width="350"
height="296"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Tout d&amp;rsquo;abord, remarquons que la position géographique des noeuds n&amp;rsquo;est pas indispensable pour résoudre le problème; seules les informations sur la &amp;ldquo;longueur&amp;rdquo; des routes importe réellement si on cherche à minimiser le trajet. Ceci permet d&amp;rsquo;ailleurs de choisir ce que l&amp;rsquo;on veut minimiser :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;la distance parcourue. Dans ce cas seule la longueur de chaque route est utile&lt;/li&gt;
&lt;li&gt;le temps nécessaire. Si chaque route est caractérisée par une vitesse moyenne ou un temps de parcours habituel, le chemin optimal favorisera une autoroute de contournement qu&amp;rsquo;une traversée urbaine&lt;/li&gt;
&lt;li&gt;la consommation, le cout financier &amp;hellip; En fait, on peut attribuer à chaque route un &amp;ldquo;cout&amp;rdquo; selon un critère quelconque, voir même deux couts correspondant aux deux sens de parcours, ce qui permet de tenir compte des sens interdits par exemple.&lt;/li&gt;
&lt;li&gt;si une route n&amp;rsquo;existe pas, on peut même en inventer une de coût élevé pour faire de
.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ensuite, les trajets en voiture satisfont une hypothèse importante appellée &amp;ldquo;principe d&amp;rsquo;optimalité de Bellman&amp;rdquo; qui simplifie beaucoup la résolution du problème : si le trajet optimal de A à C passe par B, alors les trajets AB et BC sont aussi optimaux, et le cout pour aller de A à C est égal à la somme des couts AB+BC.&lt;/p&gt;
&lt;p&gt;Cette hypothèse appelée semble évidente, mais elle peut être invalide avec d&amp;rsquo;autres moyens de transport:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Marc, un ami (ingénieur) qui prit un vol Copenhague-Reykjavik pour visiter l&amp;rsquo;Islande eut la surprise de s&amp;rsquo;apercevoir qu&amp;rsquo;il payait son billet plus cher que les nombreux autres passagers de l&amp;rsquo;avion qui volaient de Copenhague à New-York. Ce viol du principe d&amp;rsquo;optimalité rend plus compliqué la recherche du vol le moins cher.&lt;/li&gt;
&lt;li&gt;Les transports publics partant à des heures déterminées par un horaire violent également le principe d&amp;rsquo;optimalité : il vaut parfois mieux choisir des trains avec de bonnes correspondances plutôt qu&amp;rsquo;un TGV qui nous obligera à perdre 1h dans une gare en attendant le train suivant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ces cas là, il faut tenter de modifier le problème pour le faire obéir au principe d&amp;rsquo;optimalité, soit se résigner à de très, très, très longs calculs.&lt;/p&gt;
&lt;p&gt;Mais si le &amp;ldquo;principe d&amp;rsquo;optimalité de Bellman&amp;rdquo; est satisfait, et c&amp;rsquo;est le cas en voiture, alors on peut utiliser des algorithmes très efficaces :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Le célèbre
publié en 1959 permet de trouver le chemin joignant deux noeuds d&amp;rsquo;un graphe en minimisant la somme des &amp;ldquo;couts&amp;rdquo; et donc de trouver le &amp;ldquo;
&amp;rdquo;. Son temps de calcul est proportionnel à (m+n).log(n), où n est le nombre de nœuds et m le nombre de routes, ce qui rend possible son application sur des graphes comportant des millions de noeuds et routes.&lt;/li&gt;
&lt;li&gt;En prenant en compte la position des villes, on peut utiliser des algorithmes heuristiques comme
qui fournissent plus rapidement un chemin très proche de l&amp;rsquo;optimum dans le cas d&amp;rsquo;une carte &amp;ldquo;normale&amp;rdquo;, mais peuvent être plus lents que Dijkstra dans des cas vicieux.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Une fois le trajet optimal déterminé, il suffit à votre GPS de vérifier que vous le suivez scrupuleusement à partir des mesures satellite, de vous diriger à gauche ou à droite, et si vous vous plantez ou si vous rencontrez un bouchon, de recalculer en vitesse un nouveau trajet optimal.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;étape suivante sera de remettre à jour les cartes embarquées dans les GPS par des signaux radio, genre Wifi ou téléphone 3G. En cas de bouchon ou de travaux, il suffit de modifier automatiquement le cout du trajet correspondant et hop, les voitures équipées conseilleront un nouveau trajet optimal à leur conducteur. Ca s&amp;rsquo;appelle le progrès et c&amp;rsquo;est pour bientôt.&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Moshe Sniedovich , &amp;ldquo;
&amp;rdquo;, Department of Mathematics and Statistics, The University of Melbourne, Parkville, VIC 3052, Australia&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Palindrome de 196</title><link>https://drgoulu.com/2008/09/14/palindrome-de-196/</link><pubDate>Sun, 14 Sep 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/09/14/palindrome-de-196/</guid><description>&lt;figure class="alignright" style="max-width: 240px; width: 100%;"&gt;&lt;a href="http://www.flickr.com/photos/puja/251008157/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2008/images/ba5485f7dc2d3ad49c29a5e809e73964_hu_a9217b2d24292c9e.webp" srcset="https://drgoulu.com/posts/2008/images/ba5485f7dc2d3ad49c29a5e809e73964_hu_a9217b2d24292c9e.webp 240w" sizes="(max-width: 640px) 100vw, 240px" alt="palindrome par puja (flickr)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;palindrome par puja (flickr)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Prenons un nombre au hasard : 1729. Ecrivons-le à l&amp;rsquo;envers : 9271 et additionnons les deux nombres : 1729+9271=11000. Recommençons avec ce nombre : 11000+00011 = 11011.&lt;/p&gt;
&lt;p&gt;Ce nombre est égal à lui même écrit à l&amp;rsquo;envers, c&amp;rsquo;est un nombre
, comme le mot &amp;ldquo;radar&amp;rdquo; ou la phrase &amp;ldquo;élu par cette crapule&amp;rdquo; si on ne tient pas compte des espaces, ou encore &amp;ldquo;
&amp;rdquo;, un texte de 5566 lettres écrit par Georges Perec en 1969.&lt;/p&gt;
&lt;p&gt;Tiens, refaisons le calcul avec 1969 pour voir : 1969+9691 = 11660 11660+06611 = 18271 18271+17281 = 35552 35552+25553 = 61105 61105+50116 = 111221 111221+122111 = 23332 : palindrome !&lt;/p&gt;
&lt;p&gt;Bizarre n&amp;rsquo;est-ce pas ? En fait on peut prendre n&amp;rsquo;importe quel nombre de départ, et la séquence d&amp;rsquo;opérations arrive inévitablement à un nombre palindrome en un nombre fini d&amp;rsquo;itérations. C&amp;rsquo;est du moins ce que l&amp;rsquo;on
, car il y a deux problèmes :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;nos amis mathématiciens n&amp;rsquo;ont aucune idée de la raison qui fait que ça marche, entre autre parce que &amp;ldquo;écrire un nombre en base 10 à l&amp;rsquo;envers&amp;rdquo; n&amp;rsquo;a pas de signification mathématique simple.&lt;/li&gt;
&lt;li&gt;il y a un gros hic. Si on commence avec 196, on n&amp;rsquo;arrive pas à un palindrome même après 300 millions d&amp;rsquo;itérations&amp;hellip;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;196 est le plus petit des &amp;ldquo;
&amp;rdquo; (en l&amp;rsquo;honneur de Cheryl, la petite amie du matheux qui a proposé cette propriété) : les nombres qui n&amp;rsquo;aboutissent apparemment pas à un palindrome &amp;hellip;
se trouvent évidemment
, mais aussi quelques autres.&lt;/p&gt;
&lt;p&gt;Ce qui est intéressant aussi, c&amp;rsquo;est la distribution du nombre d&amp;rsquo;itérations : très souvent, on atteint le palindrome en quelques étapes, même pour de très grands nombres, mais quelques rares nombres demandent quelques étapes de plus&lt;/p&gt;
&lt;p&gt;Par exemple pour les nombres de 1 à 99, on arrive à un palindrome en 4 itérations ou moins  pour 98 nombres, 79 et 97 ont besoin de 6 itérations, mais 89 et 98 nécessitent 24 itérations.&lt;/p&gt;
&lt;p&gt;Pour les nombres de 1 à 999, 929 atteignent le palindrome en 6 itérations ou moins, 13 sont des nombres de Lychrel et les 57 restant ont besoin de moins de 24 étapes : 89 et 98 sont toujours les plus gourmands en itérations&lt;/p&gt;
&lt;p&gt;Poussons jusqu&amp;rsquo;à 10'000 : à part les 249 (&lt;em&gt;edit du 6.1.14 : et non 246&lt;/em&gt;) nombres de Lychrel, il n&amp;rsquo;y a toujours pas d&amp;rsquo;autre nombre que 89 et 98 qui nécessite plus de 24 itérations.&lt;/p&gt;
&lt;p&gt;La quête du &amp;ldquo;
&amp;rdquo; a commencé par ces résultats :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Nombre&lt;/th&gt;
&lt;th&gt;Iterations&lt;/th&gt;
&lt;th&gt;Palindrome&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;10911 147996 150296 1000689 1005744 1017501 7008899 9008299&lt;/td&gt;
&lt;td&gt;55 58 64 78 79 80 82 96&lt;/td&gt;
&lt;td&gt;4668731596684224866951378664 8834453324841674761484233544388 682049569465550121055564965940286 796589884324966945646549669423488985697 796589884324966945646549669423488985697 14674443960143265333356234106934447641 68586378655656964999946965655687368586 555458774083726674580862268085476627380477854555&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;le record du monde actuel (2008) date de 2005 et concerne le nombre 1'186'060'307'891'929'990, qui produit un palindrome de 119 chiffres après 162 itérations.&lt;/p&gt;
&lt;p&gt;On voit que le nombre maximal d&amp;rsquo;itérations requises n&amp;rsquo;augmente que très lentement, ce qui rend les nombres de Lychrel encore plus intriguants et exceptionnels.&lt;/p&gt;
&lt;p&gt;A propos : j&amp;rsquo;ai commencé cet article par
est peu intéressant : 1548+8451 = 9999. Ou alors, 30 ans plus tard, je viens de découvrir une nouvelle propriété de ce nombre &amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
pour le calcul de palindromes&lt;/li&gt;
&lt;li&gt;
 sur MathWorld&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Loi de Moore ... toujours ?</title><link>https://drgoulu.com/2008/06/19/moore-toujours/</link><pubDate>Thu, 19 Jun 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/06/19/moore-toujours/</guid><description>&lt;p&gt;Le premier ordinateur capable d&amp;rsquo;effectuer un million de milliards d&amp;rsquo;opérations par seconde (un petaflop) fait &amp;ldquo;bip-bip&amp;rdquo; depuis quelques jours. Le
supplante ainsi le &amp;ldquo;BlueGene/L d&amp;rsquo;IBM aussi, vieux d&amp;rsquo;une année seulement et qui plafonnait à 0.476 petaflop.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/70678f9cf3d23156fce460be5fd5572c_hu_a6dcf5d7f2384423.webp 320w, https://drgoulu.com/posts/2008/images/70678f9cf3d23156fce460be5fd5572c_hu_d1303b7becf08938.webp 480w, https://drgoulu.com/posts/2008/images/70678f9cf3d23156fce460be5fd5572c_hu_b90d4e4048632fe8.webp 600w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/70678f9cf3d23156fce460be5fd5572c_hu_a6dcf5d7f2384423.webp"
width="600"
height="450"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;après les mesures de
qui répertorie les 500 plus puissants ordinateurs de la planète, leur puissance augmente avec une régularité de métronome depuis plus de 30 ans, décuplant en 4 ans, donc doublant en un peu moins de 18 mois.&lt;/p&gt;
&lt;p&gt;
En ce qui me concerne, c&amp;rsquo;est assez facile de me représenter cette fantastique croissance : mon PC de bureau actuel correspond assez bien au
alors que j&amp;rsquo;y étudiais en 1986. A l&amp;rsquo;époque c&amp;rsquo;était un honneur assez étroitement surveillé d&amp;rsquo;avoir le droit de faire tourner un programme dessus. Maintenant, il sert de siège dans un couloir.&lt;/p&gt;
&lt;p&gt;Selon top500.org et d&amp;rsquo;autres sources, la progression devrait se poursuivre en tout cas encore une décennie : on devrait avoir un ordinateur de 10 pétaflops en 2012 et un de 100 en 2016, en attendant un &amp;ldquo;roadrunner de bureau&amp;rdquo; aux alentours de 2028.&lt;/p&gt;
&lt;p&gt;La raison de cet optimisme tient au fait que la puissance des ordinateurs résulte de la combinaison favorable de plusieurs facteurs, et que lorsqu&amp;rsquo;on s&amp;rsquo;approche d&amp;rsquo;une limite sur l&amp;rsquo;un des facteurs, ça crée un potentiel d&amp;rsquo;amélioration sur un ou plusieurs autres&lt;/p&gt;
&lt;h3 id="la-loi-de-moore"&gt;La loi de Moore&lt;/h3&gt;
&lt;p&gt;L&amp;rsquo;un des facteurs essentiels est la miniaturisation de l&amp;rsquo;électronique. En 1965,
, un des fondateurs d&amp;rsquo;intel, postula qu&amp;rsquo;on serait capable de doubler chaque 2 ans le nombre de transistors d&amp;rsquo;un circuit électronique à prix constant. Sa prédiction s&amp;rsquo;est extraordinairement bien vérifiée non seulement pour les microprocesseurs, mais aussi pour les mémoires RAM :&lt;/p&gt;
&lt;p&gt;[&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 553px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2008/images/c3ded1f5fdbc8c362d185f208bfec178.gif" alt="](http://www.intel.com/content/www/us/en/silicon-innovations/moores-law-technology.html)Cliquer pour un site d&amp;#39;Intel consacré à la loi de Moore" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" /&gt;&lt;figcaption&gt;](
pour un site d&amp;rsquo;Intel consacré à la loi de Moore&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Il faut bien remarquer que l&amp;rsquo;on parle ici du nombre de transistors et pas de la puissance du processeur, qui d&amp;rsquo;ailleurs double en 18 mois, soit plus vite que le nombre de transistors ! Comment est-ce possible ?&lt;/p&gt;
&lt;h3 id="la-fréquence"&gt;La fréquence&lt;/h3&gt;
&lt;p&gt;Autour de 1986, j&amp;rsquo;ai assisté à une conférence de Cray à l&amp;rsquo;EPFL qui expliquait en substance : &amp;ldquo;nos ordinateurs sont ronds parce que les ordinateurs du futur devront être ronds. Dans le Cray XMP, à 100 MHz, le courant parcourt moins de 3m dans les fils entre 2 coups d&amp;rsquo;horloge. A 1GHz, si on y arrive un jour, ça ne sera que 30 cm. Pensez-y : les processeurs ne pourront pas être à plus de 30cm de la mémoire !&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Aujourd&amp;rsquo;hui, si les processeurs travaillent autour de 3 GHz et la mémoire autour de 1 GHz, c&amp;rsquo;est beaucoup parce que la miniaturisation a réduit la longueur des &amp;ldquo;cables&amp;rdquo;. gravés dans le silicium ou imprimés dans la résine, on connait leur longueur, leur section et la distance aux conducteurs voisins avec une précision extrême, ce qui permet de les optimiser en tenant compte de tous les effets électromagnétiques étranges survenant à ces fréquences.&lt;/p&gt;
&lt;p&gt;Petite anecdote à ce propos : il y a 20 ans on apprenait qu&amp;rsquo;il était assez facile de déboguer un circuit digital en ralentissant son horloge, éventuellement jusqu&amp;rsquo;à la commander à la main avec un petit switch&amp;hellip; On m&amp;rsquo;a dit que ce n&amp;rsquo;était plus possible actuellement : un Pentium ne fonctionne carrément pas du tout à 1 Hz, car ses circuits sont conçus pour la haute fréquence.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/eff0f91c64b5f70bbfbd37e7bdd18588_hu_b2907d28d12d349b.webp 320w, https://drgoulu.com/posts/2008/images/eff0f91c64b5f70bbfbd37e7bdd18588_hu_13defaeec6bc2ed3.webp 480w, https://drgoulu.com/posts/2008/images/eff0f91c64b5f70bbfbd37e7bdd18588_hu_207d454f9761056b.webp 495w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/eff0f91c64b5f70bbfbd37e7bdd18588_hu_b2907d28d12d349b.webp"
width="495"
height="317"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Malgré ceci, en 2003 la fréquence des processeurs qui croissait rapidement s&amp;rsquo;est retrouvée rapidement limitée en dessous de 4 GHz, entre autres pour des raisons thermiques.&lt;/p&gt;
&lt;p&gt;En effet, un circuit consomme d&amp;rsquo;autant plus d&amp;rsquo;électricité qu&amp;rsquo;il fonctionne vite, ce qui fait
, et ils n&amp;rsquo;aiment pas ça. Les Cray 1 et XMP étaient refroidis par une circulation de liquide entre les circuits imprimés, le Cray 2 était carrément immergé dans du réfrigérant liquide, et on se demandait bien quelle serait la prochaine étape. Mais là encore, la miniaturisation a permis de faire des machines tout aussi puissantes refroidies par de simples ventilateurs assistés éventuellement de
.&lt;/p&gt;
&lt;h3 id="gaas-optique-quantique-"&gt;GaAs, optique, quantique &amp;hellip;&lt;/h3&gt;
&lt;p&gt;Pour contourner les difficultés rencontrées avec l&amp;rsquo;augmentation des fréquences, on a parfois proposé des ruptures technologiques assez radicales. La plus ancienne et la moins radicale concernait l&amp;rsquo;utilisation d&amp;rsquo;
à place du silicium. En principe, les transistors à GaAs sont beaucoup plus rapides que ceux au silicium et auraient permis de fonctionner à des dizaines de GHz, mais ils souffrent aussi de problèmes tels que la mise au point de circuits GaAs pour le
a contribué à la faillite de l&amp;rsquo;entreprise Cray research.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;optique est aussi souvent citée comme une technologie de substitution possible à l&amp;rsquo;électronique. Certains circuits optiques spécialisés très rapides ont été réalisés, mais rien qui ne puisse prétendre concurrencer un ordinateur actuel.&lt;/p&gt;
&lt;p&gt;Même dans le domaine du stockage, et malgré les CD et le DVD, l&amp;rsquo;optique n&amp;rsquo;a pas réussi à s&amp;rsquo;imposer en informatique. En 1988, j&amp;rsquo;ai assisté à une présentation de Pinnacle à l&amp;rsquo;EPFL qui disait en substance : &amp;ldquo;voici le premier disque capable de stocker 1Gb sur un seul plateau. Oui mesdames et messieurs, il est optique car il est évident que jamais un disque magnétique n&amp;rsquo;arrivera a stocker une densité pareille d&amp;rsquo;information&amp;rdquo; &amp;hellip;&lt;/p&gt;
&lt;p&gt;De même, l&amp;rsquo;informatique &amp;ldquo;quantique&amp;rdquo; permet de rêver à des machines basées sur des principes totalement différents de ceux de Von Neumann, mais rien de concret ne laisse croire que cette technologie puisse jouer un rôle important en informatique dans les prochaines décennies.&lt;/p&gt;
&lt;h3 id="parallélisme-à-tous-les-étages"&gt;Parallélisme à tous les étages&lt;/h3&gt;
&lt;p&gt;Si la densité des transistors sur une puce augmente exponentiellement, le nombre de défauts sur une tranche de silicium limite toujours la taille maximale des puces pouvant être produites. A un certain point, il devient possible de mettre deux &amp;ldquo;coeurs&amp;rdquo; de processeur sur la même puce. Puis quatre (18 mois après&amp;hellip;). intel et AMD nous proposeront peut-être des Hexiums et des Octérons dans 1 an ou 2, mais ce n&amp;rsquo;est pas sur, car vous avez peut-être déjà un processeur équipé de 100 ou 200 unités de calcul dans votre PC, sans le savoir.&lt;/p&gt;
&lt;h4 id="lapport-des-gpus"&gt;L&amp;rsquo;apport des GPUs&lt;/h4&gt;
&lt;p&gt;Depuis quelques années on assiste à
(Graphics Processing Unit) : le processeur équipant une bonne carte graphique (nVidia ou ATI) effectue nettement plus de calculs que le processeur central (CPU) de votre PC :&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/92d9996311ff6934d737ff74313187d6_hu_5e8f21c0ed4dd39.webp 320w, https://drgoulu.com/posts/2008/images/92d9996311ff6934d737ff74313187d6_hu_dd5ef2d1cce7eb8.webp 480w, https://drgoulu.com/posts/2008/images/92d9996311ff6934d737ff74313187d6_hu_a5bc6d76c9befdfa.webp 542w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/92d9996311ff6934d737ff74313187d6_hu_5e8f21c0ed4dd39.webp"
width="542"
height="316"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Jusqu&amp;rsquo;à récemment, l&amp;rsquo;architecture des GPU était uniquement destinée à la production d&amp;rsquo;images de scènes 3D en temps réel. Mais désormais ces processeurs peuvent être utilisés pour le calcul scientifique, la simulation de phénomènes physiques et d&amp;rsquo;autres applications exigeant une grosse puissance de calcul (voir mon blog
à ce sujet)&lt;/p&gt;
&lt;p&gt;nVidia vient de
, doté de 1.4 milliards de transistors qui réalisent 240 coeurs fournissant 930 Gigaflops : l&amp;rsquo;ordinateur le plus puissant du monde de1992 est maintenant dans votre carte graphique !&lt;/p&gt;
&lt;p&gt;Les GPU ne sont cependant pas (encore?) capable de faire fonctionner des programmes &amp;ldquo;normaux&amp;rdquo; : il faut toujours un CPU pour faire tourner un système d&amp;rsquo;exploitation, Word, Firefox 3 et quelques autres logiciels simultanément, ce qui justifie 2 voire 4 coeurs, mais probablement pas 6 ou 8.&lt;/p&gt;
&lt;h4 id="vers-un-mix"&gt;Vers un mix&lt;/h4&gt;
&lt;p&gt;
Un des processeurs les plus puissants actuellement est le &amp;ldquo;
&amp;rdquo; d&amp;rsquo;IBM qui équipe la console PlayStation 3 (voir
) Il contient 1 coeur de processeur &amp;ldquo;classique&amp;rdquo; et 8 petits coeurs &amp;ldquo;SPE&amp;rdquo; plus inspirés de ce que l&amp;rsquo;on trouve dans les GPU. Le coeur classique fournit 20 GFlops avec des nombres en double précision, les 8 &amp;ldquo;SPE&amp;quot;s montent à 200 GFlop en simple précision, suffisante pour beaucoup d&amp;rsquo;applications&lt;/p&gt;
&lt;p&gt;Depuis qu&amp;rsquo;AMD a racheté ATI et qu&amp;rsquo;intel s&amp;rsquo;est mis à (essayer de) faire des processeurs graphiques, il n&amp;rsquo;y a plus guère de doute : les futurs processeurs combineront la flexibilité des CPU actuels et la puissance brute des GPU, et cette combinaison rendue possible par la Loi de Moore continuera à faire progresser la puissance de nos ordinateurs au rythme immuable du doublement chaque 18 mois encore de nombreuses années.&lt;/p&gt;
&lt;h3 id="et-après-"&gt;Et après ?&lt;/h3&gt;
&lt;p&gt;Il y a bien un moment où les limites physiques seront atteintes : un conducteur métallique doit tout de même avoir quelques atomes de diamètre, comme
. Actuellement les processeurs les plus fins ont des &amp;ldquo;fils&amp;rdquo; de 45nm, soit environ 200 atomes de large. Admettons qu&amp;rsquo;on peut les réduire encore d&amp;rsquo;un facteur 10, ce qui donne une densité 100x plus élevée que l&amp;rsquo;on atteindra, selon la Loi de Moore dans 13 ans environ. Que faire après ?&lt;/p&gt;
&lt;p&gt;La meilleure réponse à cette question que j&amp;rsquo;aie entendu est celle du prof.
lors de sa leçon terminale. En substance il disait &amp;ldquo;jusqu&amp;rsquo;à maintenant, on ne grave les puces que sur la surface du silicium, sur des fractions de micron d&amp;rsquo;épaisseur. On pourrait déjà simplement faire de la gravure sur les deux faces du wafer pour doubler le nombre de transistors. Et puis on pourrait faire des couches multiples. Sur une épaisseur de wafer de silicium, disons 1 mm, on a de la place pour 1000 couches de 1 micron, ça laisse encore 20 ans de plus de validité à la loi de Moore.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;On estime que la puissance d&amp;rsquo;un cerveau humain équivaut à 10 Petaflops, soit la puissance cumulée des 500 plus puissants ordinateurs actuels, qui occument au moins 500 salles actuellement. En 2012, l&amp;rsquo;ordinateur le plus puissant fournira la même puissance dans une seule salle, et en 2020 environ vous devriez l&amp;rsquo;avoir sur votre bureau, ou dans la console de jeu familiale. Si les programmeurs travaillent aussi bien que les fabricants de processeurs, peut-être qu&amp;rsquo;enfin,
, votre PC saura vous reconnaitre et vous appeler par votre prénom&amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;
avec
&lt;ol&gt;
&lt;li&gt;&amp;ldquo;
&amp;rdquo;&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;&amp;quot;
&amp;rdquo; sur Tom&amp;rsquo;s Hardware&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Jean-Michel Billaut &amp;ldquo;
&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>4 coeurs, c'est mieux que 2. parfois.</title><link>https://drgoulu.com/2008/04/19/4-coeurs-cest-mieux-que-2-parfois/</link><pubDate>Sat, 19 Apr 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/04/19/4-coeurs-cest-mieux-que-2-parfois/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/Cell-big2-1_hu_1b5e5eea0d0952e7.webp 320w, https://drgoulu.com/posts/2008/images/Cell-big2-1_hu_3cc402ab5d4b7f60.webp 480w, https://drgoulu.com/posts/2008/images/Cell-big2-1_hu_7ab0f837e2787b2e.webp 553w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/Cell-big2-1_hu_1b5e5eea0d0952e7.webp"
width="553"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
A peine s&amp;rsquo;est-on habitués à l&amp;rsquo;idée d&amp;rsquo;avoir des processeurs à double coeur dans nos PC que les quadruple coeurs (
ou 
) débarquent dans les PC haut de gamme, et bientôt sur nos bureaux.&lt;/p&gt;
&lt;p&gt;Si le double coeur apporte sans conteste un gain de confort (un coeur pour Windows, un autre pour l&amp;rsquo;application &amp;hellip;), il faut reconnaitre que très peu d&amp;rsquo;applications sont capables de tirer parti du gain de performance qu&amp;rsquo;apportent théoriquement deux unités de calcul. Que dire pour quatre ?&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;article &amp;ldquo;
&amp;rdquo; de Jeff Atwood donne une réponse simple après de nombreux tests : &amp;ldquo;ça dépend&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Certaines applications vont presque 2x plus vite avec 4 coeurs qu&amp;rsquo;avec 2 : elles sont parfaitement parallélisées, avec des processus très indépendants ne nécessitant que très peu de communication entre eux.
, certains benchmarks et des modules de jeux comme le
sont du nombre.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;autres logiciels sont moins &amp;ldquo;scalables&amp;rdquo;, essentiellement parce que les processus doivent s&amp;rsquo;échanger des données entre eux, et chaque synchronisation bloque l&amp;rsquo;utilisation simultanée des coeurs. Avec 4 coeurs, l&amp;rsquo;accélération n&amp;rsquo;est &amp;ldquo;que&amp;rdquo; d&amp;rsquo;environ 150%. Dans cette catégorie on trouve par exemple 
,
et d&amp;rsquo;autres programmes de traitement d&amp;rsquo;images notamment.&lt;/p&gt;
&lt;p&gt;Enfin, il y a tous les programmes qui ne sont pas parallélisés, ou qui n&amp;rsquo;ont été codés que pour 2 coeurs. Et il faut bien le reconnaitre, c&amp;rsquo;est le cas de la plupart des logiciels actuels.&lt;/p&gt;
&lt;p&gt;Reste que la tendance est lancée : les processeurs auront bientôt 4, 8, 16 coeurs (
qui équipe déjà la Playstation III a déjà 1+8 coeurs, on les voit bien sur la photo), et les programmeurs sont en train d&amp;rsquo;apprendre à en tirer parti.&lt;/p&gt;
&lt;p&gt;Pour l&amp;rsquo;instant, un Quad vous apportera donc peu de gain de performance sur des applications interactives. Mais si vous encodez des videos, faites du rendu réaliste ou autres applications fonctionnant pendant des heures en tâche de fond, les 4 coeurs vous apporteront un gain de vitesse tout en laissant la machine disponible pour du travail interactif, ça peut valoir le coup.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(article publié aussi
)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Perlisismes : les dictons informatiques d'Alan Perlis</title><link>https://drgoulu.com/2008/01/21/perlisismes-les-dictons-informatiques-dalan-perlis/</link><pubDate>Mon, 21 Jan 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/01/21/perlisismes-les-dictons-informatiques-dalan-perlis/</guid><description>&lt;figure class="alignright" style="max-width: 180px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2008/images/729d55b21652db629f4b0da141be7852.gif" alt="Alan Jay Perlis" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" /&gt;&lt;figcaption&gt;Alan Jay Perlis&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;En préparant un autre article, je suis tombé sur quelques citations d&amp;rsquo;
, un précurseur de la programmation et célèbre professeur à Carnegie Mellon et Yale. Les dictons informatiques dont il émaillait ses cours ont été publiés &lt;/p&gt;
\[1\]&lt;p&gt; et sont passés à la postérité sous le nom de &amp;ldquo;Perlisismes&amp;rdquo;, mais ne sont disponibles qu&amp;rsquo;en anglais. Ne les ayant pas trouvé en français, je me suis fendu (de rire) d&amp;rsquo;une traduction, en les reclassant par thèmes subjectifs et en les classant selon mes préférences. Régalez vous !&lt;/p&gt;
&lt;h2 id="philosophie"&gt;Philosophie&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;La constante d&amp;rsquo;une personne est la variable d&amp;rsquo;une autre.&lt;/li&gt;
&lt;li&gt;Les inconscients ignorent la complexité. Les pragmatistes en souffrent. Certains parviennent à l&amp;rsquo;éviter. Les génies la suppriment.&lt;/li&gt;
&lt;li&gt;En poursuivant l&amp;rsquo;inaccessible, la simplicité se trouve en travers du chemin.&lt;/li&gt;
&lt;li&gt;La simplicité ne précède pas la complexité, elle la suit.&lt;/li&gt;
&lt;li&gt;Vous ne pouvez pas communiquer la complexité, juste en faire prendre conscience.&lt;/li&gt;
&lt;li&gt;N&amp;rsquo;ayez pas de bonnes idées si vous n&amp;rsquo;êtes pas prêt à en être responsable.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;optimisation entrave l&amp;rsquo;évolution.&lt;/li&gt;
&lt;li&gt;Souvent les moyens justifient la fin : le but fait avancer la technique, et la technique survit même quand le but s&amp;rsquo;effondre.&lt;/li&gt;
&lt;li&gt;On ne peut pas aller de l&amp;rsquo;informel au formel par des moyens formels.&lt;/li&gt;
&lt;li&gt;Slogan pour un labo de recherche : Nous travaillons aujourd&amp;rsquo;hui sur ce à quoi d&amp;rsquo;autres vont penser demain (What we work on today, others will first think of tomorrow.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="informatique"&gt;Informatique&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Dans la symbiose homme-machine, c&amp;rsquo;est l&amp;rsquo;homme qui doit s&amp;rsquo;adapter parce que la machine ne peut pas.&lt;/li&gt;
&lt;li&gt;En informatique, les invariants sont éphémères.&lt;/li&gt;
&lt;li&gt;La preuve de la valeur d&amp;rsquo;un système informatique est son existence.&lt;/li&gt;
&lt;li&gt;Le contact prolongé avec les ordinateurs transforme les mathématiciens en comptables et vice versa.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;informatique (Computer Science) est gênée par les ordinateurs.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;ordinateur est le pollueur ultime : ses fèces sont indistinguables de la nourriture qu&amp;rsquo;il produit.&lt;/li&gt;
&lt;li&gt;Les systèmes ont des sous-systèmes, et les sous-systèmes ont des sous-sous-systèmes et ainsi de suite à l&amp;rsquo;infini. C&amp;rsquo;est la raison pour laquelle nous recommençons chaque fois de zéro.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="intelligence-artificielle"&gt;Intelligence artificielle&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Une année de travail sur l&amp;rsquo;intelligence artificielle est suffisante pour vous faire croire en Dieu.&lt;/li&gt;
&lt;li&gt;Dans un ordinateur, le langage naturel n&amp;rsquo;est pas naturel.&lt;/li&gt;
&lt;li&gt;Si votre ordinateur parle anglais, il a probablement été fabriqué au Japon.&lt;/li&gt;
&lt;li&gt;Quand nous écrivons des programmes qui &amp;ldquo;apprennent&amp;rdquo;, ce qui arrive c&amp;rsquo;est que nous apprenons, et eux pas.&lt;/li&gt;
&lt;li&gt;Il y aura toujours des choses que nous aimerions dire dans nos programmes, mais qui ne peuvent être que mal dites avec tous les langages connus.&lt;/li&gt;
&lt;li&gt;La seule théorie constructive liant les neurosciences et la psychologie surviendra de l&amp;rsquo;étude du logiciel.&lt;/li&gt;
&lt;li&gt;Le but de l&amp;rsquo;informatique est l&amp;rsquo;émulation de nos facultés de synthèse, pas la compréhension des facultés analytiques.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;ordinateur le plus important est celui qui bouillonne dans nos crânes et recherche de nouvelles satisfactions extérieures. La standardisation des ordinateurs serait un désastre, donc ça n&amp;rsquo;arrivera probablement pas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programmation"&gt;Programmation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Il y a deux manières d&amp;rsquo;écrire des programmes sans erreurs. Seule la troisième marche.&lt;/li&gt;
&lt;li&gt;Le 11ème commandement était &amp;ldquo;Tu programmeras&amp;rdquo; ou &amp;ldquo;Tu ne programmeras pas&amp;rdquo;, je ne me souviens plus au juste.&lt;/li&gt;
&lt;li&gt;Programmer est un acte contre nature.&lt;/li&gt;
&lt;li&gt;Tout programme a (au moins) deux buts : celui pour lequel il a été écrit, et celui pour lequel il ne l&amp;rsquo;a pas été.&lt;/li&gt;
&lt;li&gt;Il est plus facile de changer la spécification pour qu&amp;rsquo;elle corresponde au programme que le contraire.&lt;/li&gt;
&lt;li&gt;Adapter de vieux programmes à de nouvelles machines signifie habituellement adapter les nouvelles machines pour qu&amp;rsquo;elles se comportent comme les anciennes.&lt;/li&gt;
&lt;li&gt;En informatique, passer de l&amp;rsquo;évident à l&amp;rsquo;utile est une définition vivante du mot &amp;ldquo;frustration&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;La documentation est comme une assurance-vie : le bénéficiaire n&amp;rsquo;est presque jamais celui qui l&amp;rsquo;a signée.&lt;/li&gt;
&lt;li&gt;On ne manquera jamais de choses à programmer aussi longtemps qu&amp;rsquo;il y aura un seul programme.&lt;/li&gt;
&lt;li&gt;le meilleur livre grand public sur la programmation est &amp;ldquo;Alice au Pays des Merveilles&amp;rdquo;, parce que c&amp;rsquo;est le meilleur livre grand public sur tous les sujets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="code"&gt;Code&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Chaque programme est un bout d&amp;rsquo;un autre programme qui convenait mal.&lt;/li&gt;
&lt;li&gt;Tout doit être construit de haut en bas (top-down), sauf la première fois.&lt;/li&gt;
&lt;li&gt;Si vous avez une fonction avec 10 paramètres, vous en avez probablement oublié.&lt;/li&gt;
&lt;li&gt;Un programme sans boucle et sans structure de donnée ne vaut pas la peine d&amp;rsquo;être écrit.&lt;/li&gt;
&lt;li&gt;Rendre quelque chose variable est facile. Le problème, c&amp;rsquo;est de contrôler la durée de la constance.&lt;/li&gt;
&lt;li&gt;A long terme, tout programme devient
, puis des gravats.&lt;/li&gt;
&lt;li&gt;La récursion est la racine du calcul car elle échange la description contre du temps.&lt;/li&gt;
&lt;li&gt;Un programme qui manipule un grand nombre de données le fait d&amp;rsquo;un petit nombre de manières.&lt;/li&gt;
&lt;li&gt;C&amp;rsquo;est mieux d&amp;rsquo;avoir 100 fonctions travaillant sur une structure de données que 10 fonctions pour 10 structures.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programmeurs"&gt;Programmeurs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Une fois que vous comprenez comment écrire un programme, trouvez quelqu&amp;rsquo;un d&amp;rsquo;autre pour l&amp;rsquo;écrire.&lt;/li&gt;
&lt;li&gt;Pour comprendre un programme, vous devez devenir à la fois la machine et le programme.&lt;/li&gt;
&lt;li&gt;Il est plus facile d&amp;rsquo;écrire un programme incorrect que d&amp;rsquo;en comprendre un correct.&lt;/li&gt;
&lt;li&gt;Si votre interlocuteur hoche la tête pendant que vous lui expliquez votre programme, réveillez-le!&lt;/li&gt;
&lt;li&gt;Quand deux programmeurs se rencontrent pour critiquer leurs programmes, les deux sont silencieux.&lt;/li&gt;
&lt;li&gt;Peut-être que si nous écrivions des programmes depuis notre enfance, nous pourrions les lire à l&amp;rsquo;age adulte.&lt;/li&gt;
&lt;li&gt;En programmation, tout ce que nous faisons est un cas particulier de quelque chose de plus général, et souvent nous nous en apercevons très vite.&lt;/li&gt;
&lt;li&gt;Vous pouvez mesurer les perspectives d&amp;rsquo;avenir d&amp;rsquo;un programmeur par son attitude par rapport à la vitalité de FORTRAN.&lt;/li&gt;
&lt;li&gt;Il ne faut pas évaluer les programmeurs par leur ingéniosité ou leur logique, mais par l&amp;rsquo;étendue (completeness) de leur étude de cas (case analysis).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="langages"&gt;Langages&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Il ne vaut pas la peine de connaitre un langage qui ne modifie pas votre façon de penser la programmation.&lt;/li&gt;
&lt;li&gt;Certains langages de programmation arrivent à absorber des changements, mais résistent au progrès.&lt;/li&gt;
&lt;li&gt;Sur une période de 5 ans on trouve un superbe langage de programmation. Mais on ne sait pas quand cette période de 5 ans aura lieu.&lt;/li&gt;
&lt;li&gt;Un langage de programmation est &amp;ldquo;bas niveau&amp;rdquo; quand il nécessite de faire attention à ce qui n&amp;rsquo;a aucune importance.&lt;/li&gt;
&lt;li&gt;Un bon système ne peut pas avoir un langage de commande faible.&lt;/li&gt;
&lt;li&gt;Si quelqu&amp;rsquo;un dit &amp;ldquo;je veux un langage de programmation dans lequel je n&amp;rsquo;aurais qu&amp;rsquo;à dire ce qui doit être fait&amp;rdquo;, donnez lui une sucette.&lt;/li&gt;
&lt;li&gt;Alors que les chinois devraient adorer
, ils investissent dans FORTRAN.&lt;/li&gt;
&lt;li&gt;Un programmeur LISP connait la valeur de tout, mais le cout (cost) de rien.&lt;/li&gt;
&lt;li&gt;Au cours des siècles, les Indiens ont développé un langage de signes pour communiquer des phénomènes intéressants. les programmeurs des différentes tribus (FORTRAN, LISP, ALGOL, SNOBOL, etc.) auraient pu en utiliser un pour éviter de transporter un tableau noir sur leur poneys.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bons-conseils"&gt;Bons conseils:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;la symétrie est un concept réduisant la complexité : utilisez la partout.&lt;/li&gt;
&lt;li&gt;Entrez tôt dans une routine : faites la même chose de la même façon. Accumulez les tournures (idioms). Standardisez. la seule différence (!) entre Shakespeare et vous est la liste de ses tournures, pas la taille de son vocabulaire.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="enseignement"&gt;Enseignement&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Enseigner la programmation va à l&amp;rsquo;encontre de l&amp;rsquo;éducation moderne : Quel est le plaisir à planifier, se discipliner à organiser ses pensées, faire attention aux détails et apprendre à être autocritique ?&lt;/li&gt;
&lt;li&gt;On n&amp;rsquo;apprend pas l&amp;rsquo;informatique avec une calculatrice de poche, mais on peut oublier l&amp;rsquo;arithmétique.&lt;/li&gt;
&lt;li&gt;La plupart des gens trouvent le concept de la programmation évident, mais la réalisation impossible.&lt;/li&gt;
&lt;li&gt;Tout le monde peut apprendre à sculpter : on aurait du dire à
comment ne pas le faire.  C&amp;rsquo;est la même chose avec les grands programmeurs. &lt;em&gt;(édité le 23.11.11 à partir de WikiQuote)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Vous croyez savoir quand vous apprenez, vous en êtes sur quand vous écrivez, persuadé quand vous enseignez, mais certain seulement quand vous programmez.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="jeux-de-mots-intraduisibles"&gt;Jeux de mots intraduisibles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Syntactic sugar causes cancer of the semicolon. (Le
cause le cancer du point-virgule)&lt;/li&gt;
&lt;li&gt;Editing is a rewording activity. (L&amp;rsquo;édition est une activité de rephrasage (rewOrding) récompensante (rewArding))&lt;/li&gt;
&lt;li&gt;Like punning, programming is a play on words.&lt;/li&gt;
&lt;li&gt;In software systems, it is often the early bird that makes the worm.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous trouverez encore sur
que je n&amp;rsquo;ai pas traduits, soit parce que je ne les trouvais pas terribles, soit parce que je ne les ai pas compris &amp;hellip;&lt;/p&gt;
&lt;h2 id="référence-"&gt;Référence :&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
\[altmetric doi="10.1145/947955.1083808" float="right"\]Alan J. Perlis &amp;ldquo;
&amp;rdquo;, SIGPLAN Notices Vol. 17, No. 9, September 1982, pages 7 - 13 
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>le top 500 des supercalculateurs</title><link>https://drgoulu.com/2007/11/27/le-top-500-des-supercalculateurs/</link><pubDate>Tue, 27 Nov 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/11/27/le-top-500-des-supercalculateurs/</guid><description>&lt;p&gt;L&amp;rsquo;article &amp;ldquo;
&amp;rdquo; sur Futura-Sciences donne quelques infos intéressantes sur les
du monde actuellement :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;La puissance de calcul cumulée des 500 supercalculateurs les plus puissants du monde équivaut à 6,97 PFlops (pétaflops), soit pratiquement le double des 3,54 PFlops d&amp;rsquo;il y a un a. La Loi de Moore est donc toujours aussi remarquablement vraie :&lt;/p&gt;
&lt;p&gt;
puissance de calcul du plus puissant ordinateur du monde (#1), du 500ème et de la somme des 500 Attention : l&amp;rsquo;échelle vertical est logarithmique : chaque division correspond à 10x la puissance de celle d&amp;rsquo;en dessous !&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le BlueGene/L installé au &lt;em&gt;Lawrence Livermore National Laboratory&lt;/em&gt; est l&amp;rsquo;ordinateur le plus puissant du monde depuis 2004. Il dispose désormais de 32x32x64 =
, délivrant 478,2 TFlops (contre 280,6 TFlops en juin dernier)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Les Xeon double coeur d&amp;rsquo;Intel équipent 43% des supercalculateurs, et les quadruple coeur déjà 20% ! Mais les PowerPC d&amp;rsquo;IBM équipent toujours 34% des 50 machines les plus puissantes, dont le BlueGene/L, et AMD se maintient autour de 10% de parts de marché, notamment grâce à Cray qui va équiper son XT5 avec des AMD Opteron&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le projet
, qui utilise une &amp;ldquo;grille&amp;rdquo; formée par les machines mises à disposition sur internet par les particuliers lorsqu&amp;rsquo;is ne s&amp;rsquo;en servent pas, a disposé le 15 septembre d&amp;rsquo;une puissance de calcul de 1 Petaflop, soit le double du BlueGene/L ! Cette puissance a été fournie à 60% par des consoles de jeu
mues par le processur Cell d&amp;rsquo;IBM qui est en quelque sorte un PowerPC avec 8 coprocesseurs vectoriels.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tout ça doit
&amp;hellip;&lt;/p&gt;</description></item><item><title>Radiateurs à Téraflops ?</title><link>https://drgoulu.com/2007/11/17/radiateurs-a-teraflops/</link><pubDate>Sat, 17 Nov 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/11/17/radiateurs-a-teraflops/</guid><description>&lt;figure class="alignright" style="max-width: 240px; width: 100%;"&gt;&lt;a href="http://flickr.com/photos/94446676@N00/4144235691" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2007/images/f8ddbd206f9330c8aded99829d972930_hu_3505a282f4842073.webp" srcset="https://drgoulu.com/posts/2007/images/f8ddbd206f9330c8aded99829d972930_hu_3505a282f4842073.webp 240w" sizes="(max-width: 640px) 100vw, 240px" alt="Human Energy par Caneles" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;&amp;quot;Human Energy&amp;quot; par Caneles&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;En réfléchissant un peu sur le sujet des
, je me demande si je ne devrais pas également remplacer mes radiateurs électriques * par des appareils utilisant plus efficacement l&amp;rsquo;énergie.&lt;/p&gt;
&lt;p&gt;Le problème est que, par définition, un radiateur électrique a un rendement de 100% : 100% de l&amp;rsquo;électricité consommée est convertie en énergie considérée comme utile, soit de la chaleur. Apparemment on ne peut pas faire mieux.&lt;/p&gt;
&lt;p&gt;Heureusement, la chaleur a la particularité d&amp;rsquo;être l&amp;rsquo;énergie de &amp;ldquo;qualité&amp;rdquo; la plus basse, celle qui en définitive résulte de tous les processus physiques normaux (frottements, combustion et oxydation, résistance électrique, induction etc), alors que l&amp;rsquo;électricité est la forme d&amp;rsquo;énergie la plus noble : on peut en faire ce qu&amp;rsquo;on veut avec un excellent rendement. C&amp;rsquo;est-ce qu&amp;rsquo;on appelle l&amp;rsquo;
.&lt;/p&gt;
&lt;p&gt;Donc pourquoi faire de la chaleur directement en passant un courant électrique dans un corps de chauffe ? c&amp;rsquo;est un gaspillage inouï ! Autant en faire quelque chose de plus utile, qui lui-même produira de la chaleur par effet secondaire. C&amp;rsquo;est notamment le cas avec les
à incandescence, faites pour faire de la lumière, mais qui chauffent aussi.&lt;/p&gt;
&lt;p&gt;Mais le meilleur radiateur que l&amp;rsquo;on puisse faire actuellement, c&amp;rsquo;est sans doute l&amp;rsquo;ordinateur ! Une armoire renfermant quelques dizaines de processeurs chauffe autant qu&amp;rsquo;un radiateur de quelques kilowatts. Actuellement, les processeurs consomment environ 6W pour une puissance de calcul d&amp;rsquo;un gigaflop (un milliard d&amp;rsquo;opérations en virgule flottante par seconde), donc je devrais arriver à remplacer mon radiateur à accumulation de 6KW par un super-ordinateur fournissant 1 Teraflop !&lt;/p&gt;
&lt;p&gt;Avec toute cette puissance, tout en chauffant, je peux aider la recherche sur le cancer et de nombreux autres projets scientifiques (voir
), ou calculer les images de synthèse des prochains films à grand succès, ou
et autres projets inutiles. Je peux peut-être même revendre une partie de cette puissance de calcul au CERN voisin. Et tout ça en retrouvant les 100% de rendement thermique de mon radiateur !&lt;/p&gt;
&lt;p&gt;Bien sur, pour l&amp;rsquo;instant mon chauffage à processeurs coute encore un peu cher, mais un jour peut-être, un corps-de-chauffe en silicium viendra remplacer le bout de ferraille actuel pour un prix compétitif &amp;hellip;&lt;/p&gt;
&lt;p&gt;*Note: Oui, je chauffe à l&amp;rsquo;électrique, Non, j&amp;rsquo;ai pas le choix, c&amp;rsquo;est une maison du XVIIème siècle, pas excavée, et bientôt on chauffera tous par accumulation d&amp;rsquo;électricité nucléaire la nuit plutôt que de brûler du
(le prix où il est
)&lt;/p&gt;</description></item><item><title>La montée en puissance des GPUs</title><link>https://drgoulu.com/2007/11/02/la-montee-en-puissance-des-gpus/</link><pubDate>Fri, 02 Nov 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/11/02/la-montee-en-puissance-des-gpus/</guid><description>&lt;p&gt;Dans les ordinateurs vendus depuis 2003 environ, le microprocesseur (CPU) fourni par Intel ou AMD n&amp;rsquo;est plus le composant le plus puissant, et souvent plus le plus couteux non plus. Désormais c&amp;rsquo;est le GPU, le Graphics Processing Unit, qui détermine largement la puissance d&amp;rsquo;un PC. Strictement limités au graphisme il y a peu, ces processeurs sont désormais capables d&amp;rsquo;effectuer certains calculs nettement plus vite que les processeurs classiques. Actuellement, la puissance de calcul du G80 de nVidia est 5 à 6 fois supérieure à celle du Core 2 Duo d&amp;rsquo;Intel, voire plus (1, 2).&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img0019319.jpg"
srcset="https://drgoulu.com/posts/2007/images/92d9996311ff6934d737ff74313187d6_hu_5e8f21c0ed4dd39.webp 320w, https://drgoulu.com/posts/2007/images/92d9996311ff6934d737ff74313187d6_hu_dd5ef2d1cce7eb8.webp 480w, https://drgoulu.com/posts/2007/images/92d9996311ff6934d737ff74313187d6_hu_a5bc6d76c9befdfa.webp 542w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2007/images/92d9996311ff6934d737ff74313187d6_hu_5e8f21c0ed4dd39.webp"
width="542"
height="316"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;em&gt;puissance de calcul des GPU et CPU (
)&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="conséquence-immédiate-"&gt;Conséquence immédiate :&lt;/h3&gt;
&lt;p&gt;Si vous achetez un ordinateur pour y faire fonctionner les applications les plus exigeantes, c&amp;rsquo;est-à-dire les jeux vidéo, il faut faire plus attention au choix du GPU qu&amp;rsquo;au CPU. Vous ne gagnerez que quelques pourcents de performance avec un CPU plus rapide qui vous coûtera quelques centaines de francs, alors que la même somme investie dans une carte graphique basée sur un GPU plus récent ou puissant peut doubler le nombre d&amp;rsquo;images / seconde (fps) de vos applications favorites.&lt;/p&gt;
&lt;h3 id="un-peu-darchitecture-des-processeurs"&gt;Un peu d&amp;rsquo;architecture des processeurs&lt;/h3&gt;
&lt;p&gt;Cette situation est la conséquence de cahiers des charges différents assignés aux deux composants:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le CPU est &amp;ldquo;généraliste&amp;rdquo; : il doit être capable d&amp;rsquo;exécuter plusieurs programmes différents quasi simultanément, de réagir aux actions de l&amp;rsquo;utilisateur et de gérer les nombreux périphériques de l&amp;rsquo;ordinateur, fonctionnant à des vitesses différentes&lt;/li&gt;
&lt;li&gt;le GPU est historiquement spécialisé : sa tâche est de produire des images à une cadence régulière, ce qu&amp;rsquo;il peut faire en exécutant le même programme simple sur des données différentes, correspondant par exemple à des objets 3D distincts ou à des portions distinctes de l&amp;rsquo;écran.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ceci a conduit à des architectures différentes pour les deux types de processeurs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les CPU comportent aujourd&amp;rsquo;hui 2 ou 4 &amp;ldquo;coeurs&amp;rdquo; complexes accédant aux données à travers une grande mémoire cache, le tout synchronisé par une importante logique de contrôle&lt;/li&gt;
&lt;li&gt;Sur la même surface de silicium, un GPU moderne contient jusqu&amp;rsquo;à 128 unités de calcul simples, mais très peu de mémoire cache et de logique de contrôle.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img0019320.jpg"
srcset="https://drgoulu.com/posts/2007/images/5f8d34d07bdd8aff1ff47d09bf9b05a5_hu_a977ad561a2c0959.webp 320w, https://drgoulu.com/posts/2007/images/5f8d34d07bdd8aff1ff47d09bf9b05a5_hu_dd993cf6cd5c6a33.webp 477w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2007/images/5f8d34d07bdd8aff1ff47d09bf9b05a5_hu_a977ad561a2c0959.webp"
width="477"
height="186"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;architecture des GPU et CPU (
)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cette différence d&amp;rsquo;architecture fait qu&amp;rsquo;il n&amp;rsquo;est pas possible d&amp;rsquo;exécuter sur le GPU un programme &amp;ldquo;classique&amp;rdquo;, écrit pour le CPU car:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les unités de calcul (ALU) du GPU sont individuellement moins puissantes qu&amp;rsquo;un coeur de CPU.&lt;/li&gt;
&lt;li&gt;Un GPU est un processeur SIMD, ou &amp;ldquo;Single Instruction Multiple Data&amp;rdquo; : toutes les ALU d&amp;rsquo;un GPU doivent exécuter le même programme en même temps, alors que chaque coeur de CPU peut exécuter des programmes distincts de façon asynchrone (MIMD)&lt;/li&gt;
&lt;li&gt;les échanges de données entre les ALU de GPU sont beaucoup plus limités qu&amp;rsquo;entre des coeurs de CPU&lt;/li&gt;
&lt;li&gt;la structure &amp;ldquo;pipeline&amp;rdquo; des GPU fait que leurs performances sonttrès dégradées dès qu&amp;rsquo;il y a des tests dans le programme. Il faut programmer les GPU sans &amp;ldquo;if &amp;hellip; then .. &amp;quot; !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La principale conséquence de ces différences hardware est que les langages de programmation usuels ne sont pas adaptés à la programmation des GPU. Des langages spécifiques ont été définis, initialement pour la programmation des &amp;ldquo;shaders&amp;rdquo;, programmes réalisant tous les effets graphiques des cartes modernes. Mais ces langages permettent aussi la &amp;ldquo;programmation générale des GPU&amp;rdquo; (ou
), dont j&amp;rsquo;ai déjà parlé
,
, et
:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nVidia a défini le langage
comme &amp;ldquo;C pour graphiques&amp;rdquo;&lt;/li&gt;
&lt;li&gt;ATI a plutôt soutenu le standard
défini par le standard
&lt;/li&gt;
&lt;li&gt;Microsoft a encore une fois grandement contribué aux progrès de l&amp;rsquo;humanité en dotant son système maison Direct3D d&amp;rsquo;un langage de shader dont l&amp;rsquo;innovation essentielle consiste à changer une lettre au standard . C&amp;rsquo;est HLSL. (Non, pas de lien pour eux, z&amp;rsquo;avez qu&amp;rsquo;à chercher.)&lt;/li&gt;
&lt;li&gt;nVidia a par contre fait un réel pas en avant en proposant son système
 qui permet de développer directement ses GPU haut de gamme en C &amp;ldquo;classique&amp;rdquo; , à l&amp;rsquo;aide de librairies spécifiques.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="perspectives"&gt;Perspectives&lt;/h3&gt;
&lt;p&gt;Du point de vue matériel, les processeurs du futur combineront sans doute les avantages respectifs des GPU et des CPU. Voici la stratégie probable des principaux acteurs du marché :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Après le rachat d&amp;rsquo;ATI, AMD a tout en main pour combiner les deux types de processeurs de façon optimale&lt;/li&gt;
&lt;li&gt;intel, dont les GPUs ont des performances lamentables, essaie de multiplier le nombre de coeurs de ses CPU tout en s&amp;rsquo;inspirant de certaines techniques des GPU&lt;/li&gt;
&lt;li&gt;nVidia va logiquement tenter de généraliser ses GPU pour leur permettre d&amp;rsquo;exécuter du code de CPU&lt;/li&gt;
&lt;li&gt;On l&amp;rsquo;oublie souvent, mais le processeur
  d&amp;rsquo;IBM développé en collaboration avec Toshiba et Sony pour la Playstation 3 est probablement le précurseur de cette nouvelle génération de processeurs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Du point de vue logiciel, deux tendances s&amp;rsquo;affrontent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la définition de langages spécifiques comme GLSL, ou prenant en compte explicitement le parallélisme à la manière des librairies de multithreading existantes&lt;/li&gt;
&lt;li&gt;le développement de compilateurs capables de générer du code GPU optimisé à partir de sources en langages classiques, à la manière de CUDA&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il est probable que dans un premier temps les langages comme GLSL jouent le rôle d&amp;rsquo; &amp;ldquo;assembleur des GPU&amp;rdquo; utilisé pour la création de librairies, que des applications en C utiliseront de manière transparente.&lt;/p&gt;
&lt;h3 id="sources"&gt;Sources:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Damien Triolet &amp;ldquo;
&amp;rdquo;, BeHardware, March 21, 2007&lt;/li&gt;
&lt;li&gt;Jean Etienne, &amp;ldquo;
&amp;rdquo;, Futura-Sciences, 31 octobre 2007&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Vista Diaboli !</title><link>https://drgoulu.com/2007/05/13/vista-diaboli/</link><pubDate>Sun, 13 May 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/05/13/vista-diaboli/</guid><description>&lt;p&gt;Je croyais que &amp;ldquo;Vista Diboli&amp;rdquo; signifait &amp;ldquo;J&amp;rsquo;ai vu le Diable&amp;rdquo; en latin, mais ce n&amp;rsquo;est que le titre d&amp;rsquo;un épisode de Tanguy et Laverdure qui se passe en Suisse et qui signifie &amp;ldquo;ennemi en visuel&amp;rdquo; en
. Bon titre quand même donc.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2007/images/abef7949f5b377bd71120f8987193530_hu_94c6886bc6df38b8.webp 286w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2007/images/abef7949f5b377bd71120f8987193530_hu_94c6886bc6df38b8.webp"
width="286"
height="270"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Bref, je vais (enfin) vous donner mon avis sur le &amp;ldquo;nouveau&amp;rdquo; système d&amp;rsquo;exploitation&amp;quot; de Microsoft : Windows Vista.&lt;/p&gt;
&lt;p&gt;En résumé, Vista c&amp;rsquo;est Windows XP en plus joli et plus paranoïaque.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Windows XP&amp;rdquo;, parce que toutes les promesses de nouveautés fondamentales comme
sont passées à la trappe, et l&amp;rsquo;interface utilisateur à laquelle je n&amp;rsquo;avais rien compris dans les versions Beta de Vista a laissé la place à un truc dans lequel tout utilisateur de Windows retrouve ses petits sans douleur.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2007/images/5893f401518483456e1fc841078c40ee_hu_aa2ef6cd8bbb99d4.webp 200w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2007/images/5893f401518483456e1fc841078c40ee_hu_aa2ef6cd8bbb99d4.webp"
width="200"
height="137"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&amp;ldquo;En plus joli&amp;rdquo;, parce que que quand même, il fallait bien que Microsoft préserve sa réputation et continue à bouffer la moitié de la puissance de la machine pour son système. Avec des cartes graphiques puissantes et des processeurs multicoeurs, ça ouvre des perspectives :
fait s&amp;rsquo;illuminer les icônes quand la souris les survole, les fenêtres apparaissent avec un joli petit effet de zoom et peuvent même se mettre en travers pour faire un joli effet 3D totalement inutile. Dans le même temps, des trucs comme
vont beaucoup plus loin dans ce domaine.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;En plus paranoïaque&amp;rdquo; parce que les modifications internes de Vista par rapport à XP vont toutes dans le sens de la sécurisation du système. Sécurité est à prendre au sens large : Microsoft ne permet à plus personne de modifier le fonctionnement du coeur de Windows. Tout ce qui n&amp;rsquo;est pas signé Bill Gates tournera désormais en &amp;ldquo;user mode&amp;rdquo;. Même les drivers des cartes graphiques n&amp;rsquo;ont dorénavant pas plus de droits qu&amp;rsquo;un programme normal.&lt;/p&gt;
&lt;p&gt;Si cette parano ne touchait pas l&amp;rsquo;utilisateur, elle serait encore acceptable, mais la prise en main de Vista nous met le nez en plein dedans : chaque lancement de programme doit être re-confirmé &amp;ldquo;est-ce bien vous qui avez lancé le programme gnagnagna ?&amp;rdquo; alors qu&amp;rsquo;on vient de cliquer sur l&amp;rsquo;icône ! Rapidement insupportable de se faire chaperonner ainsi.&lt;/p&gt;
&lt;p&gt;Côté compatibilité, rien à signaler : tous les programmes XP tournent sous Vista, et il n&amp;rsquo;y a pour l&amp;rsquo;instant pas vraiment de logiciels ne fonctionnant pas sous XP, marché oblige.&lt;/p&gt;
&lt;p&gt;Bref, aucune raison de passer volontairement à Vista. Une mise à jour depuis Windows XP ne vous apportera aucun gain de productivité. Et pour vous en mettre plein les mirettes, n&amp;rsquo;importe quel jeu fera bien mieux que Aero. Si vous vous achetez un nouveau PC, vous n&amp;rsquo;aurez pas le choix : Vista sera dessus, ce sera bien assez tôt.&lt;/p&gt;</description></item><item><title>L’informatique détruit l’information !</title><link>https://drgoulu.com/2007/02/25/linformatique-detruit-linformation/</link><pubDate>Sun, 25 Feb 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/02/25/linformatique-detruit-linformation/</guid><description>&lt;p&gt;Ce titre peut sembler digne du &amp;ldquo;Matin&amp;rdquo;, mais c&amp;rsquo;est très sérieux!&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai réécrit la section 5.3 du Chapitre 5 d&amp;rsquo; &amp;ldquo;Ecologie Informatique&amp;quot;qui traite du fait peu connu que l&amp;rsquo;informatique détruit l&amp;rsquo;information, ou au mieux la conserve, mais n&amp;rsquo;en crée en aucun cas !&lt;/p&gt;
&lt;p&gt;Quelques découvertes récentes m&amp;rsquo;ont encouragé à clarifier ce passage :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;une réflexion sur les listes triées, mentionnée
&lt;/li&gt;
&lt;li&gt;
qui décrit bien le point de vue intuitif selon lequel l&amp;rsquo;information se détruit lentement,&lt;/li&gt;
&lt;li&gt;
qui n&amp;rsquo;aime pas les destructions plus rapides et propose une variante de la loi de la robotique d&amp;rsquo;Asimov pour l&amp;rsquo;interdire. Justement, les nouvelles d&amp;rsquo;Asimov sont basées sur les contradictions que les lois impliquent &amp;hellip;&lt;/li&gt;
&lt;li&gt;une info récente (que je n&amp;rsquo;arrive plus à retrouver&amp;hellip;) selon laquelle Microsoft étudierait des moyens de stocker l&amp;rsquo;information de manière éternelle. J&amp;rsquo;ai aussi ma petite idée à ce sujet, que je détaillerai plus loin dans le livre &amp;hellip;&lt;/li&gt;
&lt;li&gt;Un passage trouvé
et tiré de l&amp;rsquo;article &amp;ldquo;Des trous noirs en laboratoire&amp;rdquo;, Bernard Carr et Steven Giddings, Pour la Science, 332, juin 2005, qui montre que la notion d&amp;rsquo;information est devenue cruciale aussi en physique théorique :
&lt;em&gt;En particulier, la découverte de l&amp;rsquo;évaporation des trous noirs a mis en évidence un paradoxe situé au coeur des difficultés qui empêchent de concilier la relativité générale et la mécanique quantique. D&amp;rsquo;après la relativité générale, l&amp;rsquo;information contenue dans ce qui tombe sur un trou noir est perdue à jamais. Cependant, si le trou noir s&amp;rsquo;évapore qu&amp;rsquo;arrive-t-il à l&amp;rsquo;information qu&amp;rsquo;il referme ? S. Hawking a suggéré qu&amp;rsquo;un trou noir s&amp;rsquo;évapore totalement, en détruisant l&amp;rsquo;information. La destruction de l&amp;rsquo;information va à l&amp;rsquo;encontre des dogmes de la mécanique quantique, et viole en particulier la loi de conservation de l&amp;rsquo;énergie, ce qui la rend peu plausible. L&amp;rsquo;alternative selon laquelle les trous noirs laissent derrière eux des vestiges est tout aussi inacceptable. Pour que ces vestiges encodent toute l&amp;rsquo;information qui aurait pu tomber dans le trou noir, il faudrait qu&amp;rsquo;ils se présentent sous une variété infinie de types&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>U3 : les nouvelles clés USB</title><link>https://drgoulu.com/2007/02/23/u3-les-nouvelles-cles-usb/</link><pubDate>Fri, 23 Feb 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/02/23/u3-les-nouvelles-cles-usb/</guid><description>&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Why Software Will Run Faster</title><link>https://drgoulu.com/2006/12/28/why-software-will-run-faster/</link><pubDate>Thu, 28 Dec 2006 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2006/12/28/why-software-will-run-faster/</guid><description>&lt;p&gt;in &amp;ldquo;
&amp;rdquo;, Ralph Gabowski quotes 7 facts that look correct, but I think his conclusion isn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;Multicore (fact 3) is a hardware solution to implement multiprocessing at a &amp;ldquo;medium grain&amp;rdquo; level : it is efficient to run different programs, or processes, or threads that have little communication with others (to avoid problem mentioned in fact 5).&lt;/p&gt;
&lt;p&gt;However, there is no reason to &amp;ldquo;rewrite software for multicore&amp;rdquo; (fact 4). Compilers will soon integrate tools like
to generate optimized multithreaded code, perhaps with a little help from human preprocessing (with
for example).&lt;/p&gt;
&lt;p&gt;The reason why I&amp;rsquo;m confident about this is that compilers already handle very well &amp;ldquo;fine grain&amp;rdquo; parallelism, or &amp;ldquo;vectorization&amp;rdquo;, to execute independent operations (almost) simultaneously.&lt;/p&gt;
&lt;p&gt;GPUs are precisely &amp;ldquo;fine grain parallel&amp;rdquo; processors that were designed for graphics (fact 7), but this might change. Analysts think the purchase of ATI by AMD annouces a merge of CPUs and GPUs in the near future. We will likely see soon multicores CPUs with highly parallelized cores, each being able to work either as a GPU or as a CPU on demand. The
, used in Sony&amp;rsquo;s Playstation 3 might be considered as a first attempt in this direction. And true, few software can take advantage of its power for now.&lt;/p&gt;
&lt;p&gt;The fact that CPU clock speeds &amp;ldquo;stalled&amp;rdquo; (fact 1) doesn&amp;rsquo;t mean that processing power did so. Parallelism is a way to continue to increase Flops (FLoating Point Operations per Second) without increase in Gigaherz, which proved to be a &amp;ldquo;cheap&amp;rdquo;, non-innovative way to improve performance.&lt;/p&gt;
&lt;p&gt;Finally, 64 bits processors bring indeed the power to address gigantic memory (fact 6) which looks almost useless at first sight. However, every programmer knows the tradeoff between cpu and memory : you can either store large tables of data and access it fast, or spend time to recalculate the data you need when you need it. So with larger, faster and cheaper memory, a good way to make software faster is to store more temporary data in huge caches.&lt;/p&gt;
&lt;p&gt;One step further is to consider that a 64 bits address space is (much) larger than any hard disk array in the world. So why constinue to distinguish hard disk storage and RAM memory ? Some experimental &amp;ldquo;persistent&amp;rdquo; operating systems handle the whole hard disk as a swap file for a large virtual memory which could contain all the data on your computer, eliminating the need for &amp;ldquo;files&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Finally, &amp;ldquo;large grain&amp;rdquo; parallelism could be used to distribute work across computers in a network. Some animation rendering and research-oriented screensavers already work that way. Now imagine this combined with a &amp;ldquo;persistent&amp;rdquo; OS as mentioned above. Think about a network of multi-core vectorized processors sharing the &lt;em&gt;same&lt;/em&gt; address space, each computer using disk stoarge only as a cache between the processor and the network.&lt;/p&gt;
&lt;p&gt;This is not sci-fi. It is called a &amp;ldquo;single address space operating system&amp;rdquo; (sasos), and several functional prototypes exist. Among them,
mentions CAD/CAM explicitely as a potential application. Imagine users of such a package sharing the very same model directly in memory: they will never need to copy any file, to rebuild a part, never load, never check in or check-out. Imagine the improvement in performance when a software doesn&amp;rsquo;t have to do anything twice&amp;hellip;&lt;/p&gt;
&lt;p&gt;In the shorter term, Vista will be slower than XP on a single core machine (fact 2). It might be slower on a dual-core. But it should be faster on a quad-core, unless Microsoft bloated it with so many &amp;ldquo;features&amp;rdquo; that it leaves only 1 core for applications &amp;hellip;&lt;/p&gt;</description></item><item><title>Le Web Sémantique</title><link>https://drgoulu.com/2006/10/20/le-web-semantique/</link><pubDate>Fri, 20 Oct 2006 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2006/10/20/le-web-semantique/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2006/images/3f39dd5cf16a7533af8313bbcfa9707a_hu_8844419751486b96.webp 241w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2006/images/3f39dd5cf16a7533af8313bbcfa9707a_hu_8844419751486b96.webp"
width="241"
height="260"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
En faisant des recherches sur un sujet d&amp;rsquo;intérêt encore top secret, je suis tombé sur le concept intéressant de &amp;ldquo;web sémantique&amp;rdquo; et quelques outils s&amp;rsquo;y rapportant. Ca pourrait bien devenir quelque chose d&amp;rsquo;important bientôt&amp;hellip;&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;objectif du &amp;ldquo;web sémantique&amp;rdquo; est de créer un &amp;ldquo;web des données&amp;rdquo; dans lequel il serait possible de combiner des données disponibles depuis de multiples sources.&lt;/p&gt;
&lt;p&gt;La base du &amp;ldquo;web sémantique&amp;rdquo; est le &amp;ldquo;Resource Description Framework&amp;rdquo; (RDF), qui décrit des métadonnées par des triplets {sujet, objet prédicat} :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le sujet représente la donnée. C&amp;rsquo;est par exemple l&amp;rsquo;URL de cette page&lt;/li&gt;
&lt;li&gt;l&amp;rsquo;objet serait une métadonnée, par exemple &amp;ldquo;auteur&amp;rdquo;&lt;/li&gt;
&lt;li&gt;le prédicat serait alors la valeur de l&amp;rsquo;auteur de cette page, par exemple &amp;ldquo;Ph. Guglielmetti&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Concrètement, un fichier RDF est un fichier XML dont voici un petit exemple:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;@@http://en.wikipedia.org/wiki/Category%3ABusiness_schools_in_India&amp;quot;&amp;gt;Business_schools_in_IndiaGurubrahma2006-02-12 18:52:04.0@@&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C&amp;rsquo;est un extrait d&amp;rsquo;un énorme fichier RDF de 3.6 Gigabytes (oui, Gigas!) qui contient la description des millions de pages de la fabuleuse Wikipedia!&lt;/p&gt;
&lt;h3 id="ontologies"&gt;Ontologies&lt;/h3&gt;
&lt;p&gt;Comme on le devine, les tags du format XML dépendent du domaine d&amp;rsquo;application du fichier RDF : &amp;ldquo;title&amp;rdquo; , &amp;ldquo;contributor&amp;rdquo; etc sont spécifiques à une encyclopédie en ligne. RDF n&amp;rsquo;est donc pas un dialecte XML mais un format plus général. Pour décrire les tags RDF spécifiques à un domaine, on doit définir une &amp;ldquo;ontologie&amp;rdquo;, terme un peu ampoulé pour décrire en fait un &amp;ldquo;modèle de données&amp;rdquo; adapté à la modélisation de connaissances. Il existe même un dialecte XML pour décrire des ontologies : OWL (Ontology Web Language)&lt;/p&gt;
&lt;p&gt;Des exemples d&amp;rsquo;ontologies RDF sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
(Friend of a Friend), pour modéliser les relations entre personnes (ça serait bien si
pouvait exporter sous ce format&amp;hellip;)&lt;/li&gt;
&lt;li&gt;
(Semantically-interlinked Online Communities), pour le partage de contenus de forums&lt;/li&gt;
&lt;li&gt;
(Description of a project), pour les infos sur les projets de développement OpenSource&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="applications"&gt;Applications&lt;/h3&gt;
&lt;p&gt;La première application qui vient à l&amp;rsquo;idée est la représentation de graphes montrant les relations entre les données&lt;/p&gt;
&lt;h3 id="alternatives"&gt;Alternatives&lt;/h3&gt;
&lt;p&gt;Les &amp;ldquo;Topics Maps&amp;rdquo; sont une approche similaire, proposant le format XTM&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Emulation et Virtualisation</title><link>https://drgoulu.com/2006/09/15/emulation-et-virtualisation/</link><pubDate>Fri, 15 Sep 2006 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2006/09/15/emulation-et-virtualisation/</guid><description>&lt;p&gt;j&amp;rsquo;avais déjà été sidéré par
 et d&amp;rsquo;autres émulateurs, mais je viens d&amp;rsquo;avoir un très gros choc en utilisant un logiciel de virtualisation :
&lt;/p&gt;
&lt;h4 id="emulation"&gt;Emulation&lt;/h4&gt;
&lt;p&gt;La puissance des ordinateurs doublant tous les 18 mois, il arrive un moment ou il devient possible d&amp;rsquo;écrire un programme qui simule le fonctionnement d&amp;rsquo;un ordinateur plus ancien. C&amp;rsquo;est un &amp;ldquo;émulateur&amp;rdquo;. Quelques Exemples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
 simule un bon vieux PC sous MS/DOS. DOSBox existe pour Windows, mais aussi Linux, Mac OS X etc, ce qui prouve que non seulement le logiciel, mais aussi le fonctionnement du matériel de la machine d&amp;rsquo;origine peut être simulé sur un matériel totalement différent.&lt;/li&gt;
&lt;li&gt;
 est un &amp;ldquo;Muliple Arcade Machine Emulator&amp;rdquo; permet de retrouver toutes les pompes à fric qui peuplaient les bistrots de ma jeunesse : de &amp;ldquo;Space Invaders&amp;rdquo; à &amp;ldquo;Out Run&amp;rdquo;, des centaines de microprocesseurs et de puces graphiques et sonores sont simulées sur des PC musclés, mais aussi sur des téléphones portables! Encore une illustration spectaculaire de la Loi de Moore : un téléphone actuel contient un ordinateur plus puissant que le top de la machine multimedia il y a 20 ans!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A part l&amp;rsquo;aspect ludique et éducatif, les éditeurs de systèmes d&amp;rsquo;exploitations sont très intéressés à garantir une compatibilité maximale avec leurs systèmes précédents pour conserver leur clientèle. Exemple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En 1999, Lorsque les &amp;ldquo;Mac Intosh&amp;rdquo; sont passés des processeurs Motorola 68040 aux PowerPC, Apple a du intégrer un émulateur à son Mac OS 9 pour permettre à tous les programmes Mac écrits depuis 1984 de fonctionner.&lt;/li&gt;
&lt;li&gt;Puis en 2001, Mac OS X a introduit un émulateur &amp;ldquo;Classic&amp;rdquo; permettant d&amp;rsquo;y faire fonctionner des applications Mac OS 9.&lt;/li&gt;
&lt;li&gt;En 2006, les Mac vont être équipés de processeurs Intel, et la version correspondante de Mac OS X sera équipée de &amp;ldquo;Rosetta&amp;rdquo;, un émulateur PowerPc sur x86.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Avec un peu de chance, on devrait donc bientôt faire voir des programmes Mac de 1984 fonctionner dans un émulateur émulé par un émulateur émulé par un troisième émulateur ! Si vous doutez de la performance du résultat rapellez-vous : un ordinateur actuel est 2^(20*12/18) = 10'000 fois plus puissant que le premier Mac&amp;hellip;&lt;/p&gt;
&lt;h4 id="les-machines-virtuelles"&gt;les &amp;ldquo;Machines Virtuelles&amp;rdquo;&lt;/h4&gt;
&lt;p&gt;Pour introduire la virtualisation, voyons comment l&amp;rsquo;arrivée du 80386, le premier processeur 32 bits d&amp;rsquo;Intel, a transformé le monde du PC en 1985.&lt;/p&gt;
&lt;p&gt;Là, Intel était au moins aussi intéressé que Microsoft à ce que les programmes écrits pour ses processeurs 16 bits précédents continuent à fonctionner.&lt;/p&gt;
&lt;p&gt;Intel a donc conçu le
 qui permet au 80386 d&amp;rsquo;exécuter du code 16 bits à pleine vitesse dans des &amp;ldquo;machines virtuelles&amp;rdquo; gérée par un système d&amp;rsquo;exploitation 32 bits comme Windows 95&lt;/p&gt;
&lt;p&gt;Une &amp;ldquo;machine virtuelle&amp;rdquo; est &amp;ldquo;simplement&amp;rdquo; une zone de la mémoire qui ressemble à la mémoire d&amp;rsquo;un vieux PC, vue de l&amp;rsquo;intérieur.&lt;/p&gt;
&lt;p&gt;Mais avec l&amp;rsquo;aide du &amp;ldquo;gestionnaire de pagination mémoire&amp;rdquo; existant sur les processeurs modernes, on pose des pièges : dès que le programme fonctionnant dans la machine virtuelle lit ou écrit les adresses mémoire correspondant aux périphériques, la machine réelle s&amp;rsquo;en aperçoit et effectue l&amp;rsquo;opération correspondante.&lt;/p&gt;
&lt;p&gt;Par exemple, si un programme MS/DOS tournant en &amp;ldquo;virtuel&amp;rdquo; essaie d&amp;rsquo;allumer un point de &amp;ldquo;son&amp;rdquo; écran en croyant accéder à une carte VGA, Windows 95 reçoit une interruption, et le code réel (32 bits) détermine la fonction à réaliser, et allume le pixel correspondant dans la fenêtre de la machine virtuelle, puis rend le contrôle au programme &amp;ldquo;virtuel&amp;rdquo; qui continue son exécution, inconscient de n&amp;rsquo;être qu&amp;rsquo;un pantin manipulé&amp;hellip;&lt;/p&gt;
&lt;p&gt;En pratique, créer une machine virtuelle revient principalement à écrire des &amp;ldquo;drivers&amp;rdquo; pour les périphériques, divisés en 2 moitiés : la partie &amp;ldquo;virtuelle&amp;rdquo; singe le comportement du périphérique &amp;ldquo;vu de l&amp;rsquo;intérieur&amp;rdquo;, la partie &amp;ldquo;réelle&amp;rdquo; réalise effectivement le fonctionnement du périphérique, mais intégré à un système différent.&lt;/p&gt;
&lt;h4 id="virtualisation"&gt;Virtualisation&lt;/h4&gt;
&lt;p&gt;L&amp;rsquo;arrivée des processeurs 64 bits repose le problème de la virtualisation, mais les processeurs ont anticipé : il est désormais possible de créer des machines virtuelles 32 bits sur des machines réelles 32 bits. Quel intérêt ? Par exemple de faire tourner plusieurs systèmes d&amp;rsquo;exploitation en même temps sur un ordinateur &amp;ldquo;hôte&amp;rdquo;, et c&amp;rsquo;est ce que fait
 sur PC&lt;/p&gt;
&lt;p&gt;Je n&amp;rsquo;ai pas encore fait le tour des énormes possibilités de ceci, mais par exemple :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;on peut faire tourner un Linux dans une fenêtre Windows&lt;/li&gt;
&lt;li&gt;préparer des machines préconfigurées avec des logiciels pour démonstration, formation ou expérimentation. Chaque fois qu&amp;rsquo;on en a besoin, on utilise une copie &amp;ldquo;propre&amp;rdquo; qu&amp;rsquo;on lance sur un PC et qu&amp;rsquo;on jette après emploi, sans avoir modifié quoi que ce soit à l&amp;rsquo;&amp;ldquo;hôte&amp;rdquo;&lt;/li&gt;
&lt;li&gt;faire tourner plusieurs &amp;ldquo;serveurs virtuels&amp;rdquo; sur une machine réelle : si un problème se produit sur une machine virtuelle, les autres continuent à fonctionner et il suffit de relancer une nouvelle copie&lt;/li&gt;
&lt;li&gt;configurer un système complexe en combinant des machines virtuelles pré-configurées, chacune réalisant une fonction du système. C&amp;rsquo;est l&amp;rsquo;idée des &amp;ldquo;appliances&amp;rdquo; dont certaines sont
(principalement celles basées sur Linux)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="référence"&gt;Référence&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
 site spécialisé sur les émulateurs ludiques&lt;/li&gt;
&lt;li&gt;
 site spécialisé sur la virtualisation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(
)&lt;/p&gt;</description></item><item><title>CMS, Blogs et Wikis</title><link>https://drgoulu.com/2006/06/03/cms-blogs-et-wikis/</link><pubDate>Sat, 03 Jun 2006 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2006/06/03/cms-blogs-et-wikis/</guid><description>&lt;p&gt;
&lt;/p&gt;</description></item></channel></rss>