Nous bouleversons aujourd'hui la mise en page de notre superbe blog pour proposer un article en forme de bouée de sauvetage à nos lecteurs désespérés. Que sont devenus, en effet, ces magnifique Résumés Pour les Fatigués de la Lecture (RPFL pour les intimes) qui ornaient si délicatement notre tout premier dossier ? Et comment nos lecteurs pourraient-ils ne pas se noyer devant cette avalanche de conseils qu'ils ne savent par quel bout attraper, sans une lumière leur montrant le bout du tunnel, à quelques pas à peine ?
Alors, aujourd'hui, pour bien commencer l'année et rien que pour vous, nous allons sélectionner les 5 mesures que, s'il fallait n'en garder que 5 (remarquez que ça tombe bien, quand même, si on voulait en garder 6 ça ne marchait déjà plus), eh bien il faudrait les garder, justement. Un concentré de nos Petits Gestes les plus essentiels, avec un maximum de pulpe au fond et plein de belles vitamines pour l'hiver.
Avant d'aligner notre hit-parade et de briser le suspense haletant qui place la foule au bord de l'apoplexie, il nous faut confesser un péché inavouable à nos chers lecteurs. En effet, un de mes amis, qui a le bonheur de travailler dans le milieu du journalisme, m'a révélé une fois la botte secrète de l'article qui percute et fait venir des millions de lecteurs instantanément : précisément celui qui décline les 10 raisons de, les 50 les plus, les 20 mesures qui, etc. Apparemment ce type d'article bien polissé où tout est ordonné et compté fait le bonheur du badaud qui se promène nonchalamment sur l'internet mondial.
Si aux Souris Vertes nous aimons l'ambiance confinée de nos soirées de lectures intimes partagées avec nos fidèles lecteurs, et si nous ne souhaitons pas franchement faire exploser l'audience de notre site pour ensuite nous retrouver à inonder tous les médias de la terre de notre discours il est vrai si pertinent, nous avons décidé de tenter l'expérience, pour voir si la Loi de l'Article Vendeur se vérifie. Sachant qu'en plus ceci nous permet de recaser des dessins et du contenu tout prêt, autrement dit de ne pas nous fouler plus que de raison, et qu'au demeurant ce rappel salutaire pourra peut-être contribuer à sauver un ou deux phoques au passage, pourquoi bouder notre plaisir ?
Allez, c'est parti pour le Top 5 des actions tellement vertes qu'on a du mal à les distinguer de l'herbe du champ voisin.
Geste n°1 : je baisse dare-dare les réglages d'images de mes appareils numériques
"Brume matinale
Est-ce une flaque que je vois
Ou mon ombre ?"
Midoriro no Mausu (la Souris Verte)
Eh oui, voici donc le grand vainqueur de notre superbe palmarès, l'action élue la plus utile de toutes celles énumérées par les Souris Vertes, excusez du peu. Non pas que l'on manque de choix en la matière, mais le réglage par défaut des appareils numériques joue dans la cour des grands, voire carrément dans la salle des profs, en terme de gaspillage éhonté de ressources numériques. C'est qu'en effet notre petit clic a la puissance de l'aile du papillon qui va déverser une tornade d'octets inutiles sur l'ensemble du monde numérique, qu'on en juge plutôt :
- mon petit, ou minuscule, ou gros, ou super énormément géant, appareil numérique fait travailler son processeur à grand coup de traitement d'image dispendieux pour nous fournir cette superbe photographie en 112 millions de milliards de pixels. Et en plus, au passage, il sature sa propre carte mémoire pour la stocker, sympa.
- nous engorgeons la bande passante des réseaux numériques pour transférer la grosse image vers le partage Cloud, le site web, voire les boîtes de messagerie (horreur ! vous cumulez deux anti-gestes écologiques en un seul, voir ci-dessous) de notre choix.
- nous saturons les espaces de stockage où nous avons envoyé notre photo ingénue, qui ne se doute pas un instant de tout le mal qu'elle fait subir à la planète.
- nous faisons travailler inutilement le processeur de toutes les machines qui cherchent à afficher notre image et doivent la recadrer car ils ne disposent pas d'un écran de sortie de douze mètres de largeur (la taille réelle d'un affichage confortable de votre image).
Et quand on sait que les photos constituent le type de contenu le plus échangé à travers les réseaux (chiffre de l'Institut Statistique des Souris Vertes), comme en atteste la paille des 200 millions de photos postées chaque jour sur FesseBouc, bonjour l'odeur, il est grand temps pour toi, ami lecteur, de te précipiter sur l'ensemble de tes appareils numériques pour baisser d'urgence la résolution de tes images et de tes vidéos. Et bravo pour ce geste salutaire, les éléphants d'Afrique applaudissent de la trompe !
Geste n°2 : je me soigne sur l'envoi de pièces jointes dans les mails
"Elle semble si lourde
Sur la petite tortue
Sa carapace"
Midoriro no Mausu (la Souris Verte)
Ah, les pièces jointes. Autant vous dire qu'aux Souris Vertes, la réception d'une pièce jointe bien volumineuse nous fait à peu près le même effet qu'à certains le crissement des ongles sur une surface lisse, et qu'il nous faut généralement un petit exercice de respiration profonde pour absorber le choc de cette Pollution Numérique Majeure. Nous avons déjà consacré un article magistral à la question, qui figurera prochainement dans les manuels scolaires d'éducation civique, aussi nous n'allons pas détailler tous les arguments imparables qui font de la pièce jointe l'invention la moins écologique du web, mais rappelons à toutes fins utiles que :
- la pièce jointe pèse une fois et demi plus lourd que votre fichier de départ, car elle doit être encodée sous forme de texte dans le message.
- que les pièces jointes multiplient la taille des mails par Beaucoup, disons 1000 en moyenne, par rapport à un message en pur texte.
- que le, ou les, destinataires, ne peuvent pas choisir de ne pas récupérer la pièce jointe sur leur compte de messagerie.
Pour toutes ces belles raisons, il va nous falloir nous soigner et arrêter d'envoyer des pièces jointes dans les mails, ainsi que supprimer dès que possible toutes celles qui traînent dans nos propres boîtes de messagerie. Alors effectuons au plus vite ces Petits Gestes avec grâce et élégance, olé !
Geste n°3 : j'éteins ma box nom di diou
"Les yeux fermés
Je vois encore
La caresse du soleil"
Midoriro no Mausu (la Souris Verte)
Au hit-parade des gros vilains, la box internet trône en bonne place magré son apparence parfaitement inoffensive. En effet, ce petit objet qui passe le plus clair de son temps à regarder le plafond, le rebord de l'étagère ou l'arrière du bureau, et sans doute à deviser doctement et à élaborer des théories philosophiques profondes dans la langue des box internet, ne semble pas affublé de gros besoins ni nécessiter une attention quelconque de notre part. Mais ceci ne l'empêche pas de nous réclamer une alimentation électrique permanente, quand bien même nous serions au fond du jardin ou en train de dormir, par exemple, autrement dit à des moments où nos besoins en connexion réseau vers l'internet mondial sont inexistants.
Et, vu que l'ensemble des habitants du monde civilisé déploie sa propre mini box personnelle, avec souvent très obligeamment son petit réseau wifi qui rajoute un peu d'ondes au tableau, toute cette activité joyeuse de veille silencieuse de nos boîboîtes finit par représenter plus d'1% de notre consommation électrique totale. Dit comme cela, ça n'a peut-être pas l'air impressionnant, mais c'est que vous n'avez pas en tête l'ordre de grandeur de l'énormitude de notre consommation totale. Sans essayer de rapporter tout cela à la consommation de la proverbiale ménagère et du foyer moyen, estimons grossièrement qu'il faut plus d'une demi centrale nucléaire françoise pour ce petit service que nous utilisons au mieux quelques heures par jour.
Autrement dit, on met vite un interrupteur sur notre petite box, et on lui coupe la chique au minimum du soir au matin. Et pan dans les dents !
Geste n°4 : j'arrête le streaming tout de suite et pour de vrai
"Ce tronc d'arbre
Au milieu du courant
Je l'ai pris pour un homme"
Midoriro no Mausu (la Souris Verte)
Ah, le streaming, encore un cas d'école, enfin à l'école des cancres de l'écologie numérique, plus près du radiateur que du tableau. Pour les non anglophones, la traduction exacte du dictionnaire de l'Académie Française est "n.m., dérivé de l'anglais 'streaming' (se prononce strimminngueu). Consommation forcenée de bande passante réseau à travers une lecture en temps réel de contenu multimédia sur des serveurs distants". Comme toujours, revenir aux sources et à la définition exacte de notre phénomène nous permet de comprendre tout le danger qu'il fait courir aux dauphins.
C'est pourquoi on ne cherchera pas à sauver l'importune méthode de diffusion de contenu, et on s'abstiendra tout de suite et pour l'éternité de :
- poster des vidéos ou sons sur des plateforme de diffusion de contenu mondialement mondialisées, et même sur celles qui seraient plus confidentielles
- consommer des vidéos ou des sons en lignes, d'où qu'ils viennent, sauf en cas de force majeure, par exemple si votre maison va exploser et que vous avez sous la main une vidéo qui montre comment faire pour éteindre le robinet de gaz.
Geste n°5 : j'utilise le mode avion et je prends les transports en commun
"Cette fourmi
Qui monte sur ma chaussure
Pour dominer l'univers"
Midoriro no Mausu (la Souris Verte)
Dernier geste simplissime mais non moins bénéfique pour vous, vos proches et les petits oiseaux, prendre la bonne habitude d'utiliser le mal-nommé "mode avion" des téléphones portables, tablettes et autres objets connectés. Il faut savoir qu'il n'y a pas que le pilote d'avion qui pourrait trouver à redire à toutes les ondes que vous envoyez gentiment à travers votre petit récepteur, notre Agence Nationale de l'Etude des Gros Problèmes Sanitaires Liés aux Pratiques Sociales, dont le sigle est l'ANSES, allez comprendre, nous signale timidement que ceci pourrait bien être dommageable pour le développement du cerveau chez l'enfant, rien que ça. On imagine que les effets sur le reste du monde vivant, humains adultes compris, doivent être d'une innocuité telle qu'on ne les détecteraient pas même avec notre plus grand téléscope spatial si on décidait de s'intéresser un peu sérieusement à la question.
Mais passons, car ce n'est pas même le risque de perdre la moitié de nos neurones ou de développer un cancer de l'hypothalamus qui doit nous inciter à utiliser le fameux mode flouf flouf (=bruit d'hélice chez les souris vertes), mais bien son bilan écologique incroyable : il vous permet en un tour de main d'économiser des milliers de cycles de votre batterie, en plus d'avoir l'heureux effet de vous couper un peu du tumulte du monde moderne ultra-connecté qui ne cesse de vous solliciter. Ainsi vous retrouvez un peu de calme, votre petit appareil s'essoufle moins, et vous pourrez continuer à vivre en harmonie pour de nombreuses années supplémentaires. N'est-ce pas tout simplement formidable ? Allez, vite, on le fait ce petit geste !
Bon, eh bien c'est terminé pour notre super meilleur absolu du top plus fort de tous nos Petits Gestes, autant dire la crème de l'écume du petit lait de tout le blog. Mais espérons que ceci vous a donné l'envie, non seulement de réaliser ces petites actions simples mais si utiles pour notre belle planète, mais aussi d'aller vous jeter à corps perdu dans tous les autres gestes, articles, vils pamphlets polémiques et trésors divers qui parsèment notre magnifique collection au fier logo de petit muridé vert pomme.
Et pour les lecteurs occasionnels et de passage, on se retrouvera lors d'un prochain palmarès, au choix, des 3 plus beaux dessins, des 10 meilleurs haïkus, des 20 titres les plus cocasses, ou encore des 50 expressions les plus incongrues. Vivement la suite !
"Un bébé moineau
Saute avec curiosité
Pour regarder mon coup de pinceau"
Mizuhara Shuoshi (1892-1981)
"Placardée sur la porte d'entrée
La photo
Du chat qui n'est jamais revenu"
Midoriro no Mausu (la Souris Verte)
"Devrait-on rire ou pleurer
Quand ma belle-de-jour
Se fane ?"
Matsuo Bashõ (1644-1695)
On entame aujourd'hui notre belle croisière dans les eaux de la programmation estampillée souris verte, et sans se prélasser sous les cocotiers, on franchit tout de suite le Cap Horn en bravant la tempête, et en attaquant de front et par vent de face le sujet le plus austère de tout le dossier, j'ai nommé l'Algorithmique. Rien qu'à lire ce mot, je vous vois plisser des yeux, mais qu'est-ce que c'est que ce truc ? C'est bien simple, sa seule mention fera sortir aussitôt de la salle tout étudiant en informatique qui n'est pas assoupi, ainsi sans doute que des hordes entières de lycéens qui sont désormais sommées de se farcir une version édulcorée de cette matière peu réjouissante.
Car oui, bien qu'on nous rebatte les oreilles à longueur de journal télévisé sur les merveilles réalisées par les incroyables algorithmes qui changent le monde, il ne se trouve pas grand monde en vérité pour défendre cette science des algorithmes qui exerce le même entrain guilleret qu'une marche funèbre sous un crachin hivernal. Les algorithmes changent peut-être le monde (inutile de me mordiller l'orteil, chère souris sous le bureau, nous remettrons la discussion de ce point à un autre article percutant, pour aujourd'hui on tient notre cap), mais c'est avant tout en distillant un ennui profond à notre jeunesse désabusée. Et alors ? L'informatique n'est-elle pas censée être ludique ? Où sont les couleurs qui clignotent, les rires qui fusent, les images qui percutent ?
Eh bien non, c'est malheureux, vraiment, mais l'algorithmique appartient à la face cachée théorique de l'informatique, avec par exemple la logique qui est une autre matière qui fait bien mal au slip, pour le dire poliment, mais qu'on passera sous silence pour ne pas achever de terroriser nos lecteurs. Donc, effectivement, on ne s'amuse pas autant en cours d'algorithmique qu'à programmer Lance Ton Pingouin sur son téléphone mobile, et pourtant c'est un prérequis fondamental à tout programmeur digne de ce nom, c'est-à-dire tout programmeur qui souhaite maîtriser la Programmation ResponsableTM et sauver la planète tous les jours devant son clavier.
Allez, on plonge tout nu dans le grand bain glacé, puisque c'est pour notre bien et celui de l'humanité. Snif.
Avoir le sens du algorithme
Mouais, les souris, on nous enjoint d'aller en cours (un scandale !), mais encore faudrait-il nous dire ce qu'on est censé y apprendre, vu que le prof a l'air de débarquer directement de l'espace et de parler dans un patois martien que même les petits hommes verts (tiens, tiens, nos copains de l'autre bout du système solaire seraient-ils des écologistes convaincus ?) doivent avoir du mal à suivre. On y vient, justement. L'algorithmique est la science des algorithmes. Donc on y apprend des algorithmes. Et voilà ! Bon, ne partez pas, on va essayer d'en dire un peu plus quand même.
Tout d'abord, qu'est-ce qu'un algorithme ? Bigre, la souris verte à lunettes a levé le doigt avant même que je n'aie commencé à formuler ma question. Quelle fayote celle-là, vraiment. Allez, on lui laisse la parole : "un algorithme est une séquence ordonnée d'instructions dans un langage compréhensible par un humain, ou une souris". Pas mal, même si on aura du mal à garantir que TOUS les humains (ou toutes les souris aussi d'ailleurs) seront capables de le lire, puisqu'il faut tout de même maîtriser un minimum le vocabulaire utilisé pour décrire les instructions, qui peut être assez spécialisé.
En tout cas il y a quelques caractéristiques de notre algorithme qu'il faut souligner :
- il doit être sans ambiguité, donc si deux personnes le mettent en oeuvre, le résultat doit être rigoureusement le même.
- les instructions sont bien des notions élémentaires manipulables par un être humain, pas par une machine, donc il y a un certain niveau d'abstraction par rapport à la programmation, pas question de sombre manipulation d'octet ou d'adressage mémoire ici.
A vrai dire, que vous soyez chamois d'or de la programmation acrobatique ou simple citoyen, vous avez déjà eu maille à partir avec pas mal d'algorithmes dans votre vie, et tel monsieur Jourdain qui fait de la prose sans s'en rendre compte, vous mettez en oeuvre des algorithmes quasi quotidiennement, en ignorant simplement de le savoir. Suivre une recette de cuisine, participer à un exercice incendie, même conduire en respectant le code de la route, tout cela peut plus ou moins être associé à la mise en oeuvre d'algorithmes dans des domaines divers. Pour rester dans un domaine un poil plus scientifique, l'addition posée que vous avez apprise à coup de baguette sur les doigts dans votre enfance est un bel exemple d'algorithme mathématique. Si vous appliquez à la lettre les instructions, vous réalisez votre opération sans faillir, que vos nombres aient 2 chiffres ou bien 300.
Et à vrai dire, même si tu te cures le nez en affichant un air de profond ennui devant nos propos, cher lecteur-programmeur, de l'algorithmique tu en fais, en fis et en feras que tu le veuilles ou non. Car qu'est-ce que c'est finalement que d'écrire un programme informatique, sinon enchaîner une série d'algorithmes qui résolvent chacun à leur manière un petit problème isolé ? Je dois isoler une valeur au milieu d'un gros tas de données ? Je dois traiter une information en provenance d'un utilisateur ? Je dois calculer comment afficher correctement un texte à l'écran ? Que des algorithmes, tout cela. Les seules questions qui se posent sont : est-ce que j'écris mes propres algorithmes, ou est-ce que j'utilise ceux des autres ? Est-ce que je maîtrise leur impact en terme de temps de calcul et de ressources machine utilisées ?
Ne soyons pas trop décomplexés
Avec toutes ces belles considérations, on n'a pas encore vraiment dit ce que l'on apprenait concrètement dans notre cours de gymnastique algorythmique (sans les collants ridicules, vous voyez qu'il y a du bon dans cette matière tout de même). En général, on étudie des classes d'algorithmes existants de plus en plus complexes, et si tout va bien on apprend comment concevoir les nôtres. On commence par exemple par trier des tableaux dans tous les sens (une grande joie du programmeur débutant, l'équivalent du rite initiatique dans les sociétés traditionnelles), et quand on devient Jedi on peut étudier les algorithmes super monstrueux utilisés par GoogleBook pour coloniser l'internet mondialisé.
Mais surtout, surtout, surtout, on apprend à évaluer les performances d'un algorithme, et c'est bien ce à quoi nous voulions en venir, la compétence clé du Programmeur Responsable qui a son petit badge couleur éméraude. Ce que nous enseigne l'agorithmique, c'est que toute méthode doit être évaluée non par le temps qu'elle prend (qui dépend de conditions locales d'exécution qui peuvent varier), le nombre de litres de pétrole qu'elle consomme ou son signe zodiacal, mais par sa complexité, qui est un ordre de grandeur du nombre d'instructions réalisées en fonction de la taille des entrées de ladite méthode. Et oui, les souris, je sais bien que c'est formulé de façon aussi claire que le fond du ruisseau saturé de boues d'épandage qui court à côté de notre jardin. On va tâcher de prendre un exemple pour éviter de se fouler le néo-cortex.
Attention, cependant, rien à voir avec la soi-disant complexité du monde réel qu'on invoque à toutes les sauces pour nous demander poliment de passer notre chemin et nous signifier de laisser penser les éditorialistes parisiens à notre place, ici il s'agit d'une théorie tout ce qu'il y a de plus sérieux et et scientifique. La complexité ne désigne pas les profondeurs insondables d'une pensée qui nous échappe, pauvres mortels débiles que nous sommes, mais la complexité en nombre d'étapes de calculer un résultat pour une machine qui ne dispose que d'opérations élémentaires pour le mener à bien.
Avant d'aller plus loin, je sens qu'il est urgent d'opérer une petite pause contemplative salutaire, méditons donc un instant sur un petit haïku :
"Si difficile
De dire ce que voit
Cette souris tournée vers moi"
Midoriro no Mausu (la Souris Verte)
Notre vraiment super exemple
Ouf. Puisque nous voici à nouveau frais, dispos, et prêts à en découdre avec les concepts les plus tarabiscotés, revenons à nos moutons virtuels et à notre fameuse complexité, et prenons un exemple issu de la Vraie Vie, comme on dit dans les salons. Donnons nous par exemple la tâche bien utile de dénombrer les feuilles d'un arbre. Pours nos lecteurs qui passent trop de temps devant un écran à coder et ne savent pas ce qu'est un arbre, nous les enjoignons à sortir prendre un peu l'air jusqu'à apercevoir un grand truc marron en bas, et vert au dessus qui semble pousser dans le sol, ou à tout le moins à se renseigner sur internet.
Bon, comptons donc. Ca paraît bête, comme cela, mais déjà trouver une méthode qui permette de le faire sans se tromper n'est pas si aisé, vu que vous avez pu remarquer qu'un arbre n'a pas forcément une structure bien régulière, qu'il y a des feuilles dans tous les sens, et en plus s'il y a du vent au secours. Si l'on suppose que l'on a quand même accès à toutes les feuilles, quitte à se munir d'une échelle bien costaude, il va falloir se débrouiller pour ne pas perdre le fil et ne pas compter les mêmes feuilles plusieurs fois.
Une bonne idée pour ce faire nous est donnée par le professeur Souriso lui-même, qui adore ce genre d'expérience : on compte une feuille, puis on fait une petite marque (discrète et qui partira à l'eau de pluie, hein, on n'est pas des sauvages) pour ne pas la compter à nouveau. On continue à énumérer les feuilles de l'arbre jusqu'à ce que toutes les feuilles soient marquées, et zou, on a notre total.
C'est formidable, mais il ne vous aura pas échappé que ceci risque de prendre un certain temps, voire un temps certain, et de vous faire mourir d'épuisement avant d'arriver même à la moitié du quart du dixième de votre tâche. Peut-on optimiser un peu notre algorithme, avant d'y passer notre vie ? Cest là que le Programmeur Lambda, celui qui n'a pas suivi de cours d'algorithmique ou y a trop roupillé pour en avoir retiré quelque chose d'utile, va se tourner vers la solution standard de l'informatique en panique : on offre une paire de lunettes à la personne qui fait le décompte, ou bien on lui donne une échelle plus longue, ou même une paire de jumelles si on ne compte pas à la dépense. Bref, on augmente le matériel. Pour un vrai programme informatique on mettra plus de mémoire, un plus gros disque, du SSD, etc. Super, mais vous voyez qu'au lieu d'y passer 107 ans, notre fidèle collaborateur en passera 105 ou 106, bref c'est bien gentil de votre part mais ça ne résout strictement rien.
Qu'à cela ne tienne, on va sortir les grands moyens et paralléliser les calculs, on va mettre non pas une, mais deux personnes qui comptent. Et bim ! C'est aussi une très belle promesse, mais il faut compter que les deux personnes vont se marcher un peu sur les pieds, donc on n'ira pas strictement deux fois plus vite. Mais même comme ça, on mettra 50 ans environ, c'est mieux mais pas franchement jouable quand vos crédits de recherches sont alloués sur 10 mois. Et même en mettant 10 personnes en même temps, bof bof, vous restez toujours avec le même ordre de grandeur, donc si c'était franchement impossible ça deviendra juste-un-peu-moins-impossible mais toujours pas raisonnablement réalisable. Donc ici encore, la fameuse méthode de la parallélisation, si souvent dégainée pour se sortir d'une ornière informatique, outre qu'elle demande un doigté particulier dans la manière de programmer sans se prendre des problèmes de processus concurrents à tous les étages, ne fera jamais gagner significativement en performance.
Deux solutions s'offrent alors à nous : soit on renonce à notre projet, en le repoussant à une époque où la technologie viendra nous aider à le résoudre en un temps raisonnable (avec un ordinateur quantique, pourquoi pas ? On peut toujours rêver), soit on sort une feuille blanche, sa plus belle plume et on change d'algorithme pour réduire sa complexité.
Ici, une suggestion tout à fait passionnante d'une souris débrouillarde nous permet de nous sortir d'affaire : on simplifie le problème, en fait on ne veut pas vraiment le nombre exact de feuilles dans notre arbre, une bonne estimation nous suffira. Nous allons donc estimer le nombre de feuilles sur une branche, et simplement compter le nombre de branches au lieu du nombre de feuilles. Et il y en a beaucoup beaucoup moins, c'est l'affaire d'une heure tout au plus. Et voilà comment un travail qui aurait pu nous prendre jusqu'à l'extinction du soleil est terminé en une petite après-midi de travail, sieste incluse.
Dans notre petit exemple, nous sommes passé d'une complexité qui était proportionnelle au nombre de feuilles dans l'arbre, à une complexité proportionnelle au nombre de branches dans l'arbre. Alors ici c'était facile, mais il n'est pas toujours facile de calculer la complexité d'un algorithme, et encore moins de la faire baisser ; surtout quand ledit algorithme avance masqué dans plusieurs milliers de lignes de code qui semblent parler d'autre chose que de ce que vous raconte le prof martien.
Mais une valeur sûre pour repérer de la complexité sauvage et déchaînée est de repérer de multiples structures de boucles imbriquées dans un programme. Pour chaque niveau de boucle, hop, un ordre de grandeur supplémentaire. Et se souvenir aussi que le meilleur endroit pour améliorer les performances est TOUJOURS au milieu du code et de la logique qu'il déroule, et non dans les solutions de facilité de toujours plus de matériel, ou encore de programmes tiers censés booster les performances, comme des systèmes de cache tout-terrain qui ne savent pas sur quoi ils travaillent, et n'amélioreront donc jamais la complexité intrinsèque d'une méthode.
Savoir s'abstenir de ne pas faire
S'il y a une chose que nous enseigne l'algorithmique et qui doit nous marquer à vie, c'est que ce n'est pas parce que l'on sait écrire un programme qui résout une certaine tâche que l'on est capable de le mettre en oeuvre. Je peux écrire un programme qui sait calculer la factorielle d'un nombre à 130 chiffres, qui fera les mêmes trois lignes que pour la factorielle de 5, mais il n'a aucune chance d'aller jusqu'au bout, vu qu'il lui faudra réaliser plus d'opérations qu'il n'y a d'atomes dans l'univers.
Aussi, si on me demande d'écrire un tel programme, je me dois de refuser car ce serait un gaspillage de ressources éhonté pour un résultat qui n'a aucune chance d'aboutir. Et toi aussi, ami programmeur, refuse de mettre en oeuvre des méthodes à la complexité trop élevée : soit tu trouves une meilleure façon de procéder, soit on dit au client, tant pis, il n'a qu'à se trouver des besoins plus modestes auxquels l'informatique saura répondre sans y sacrifier l'énergie d'une supernova.
Précisons tout de même que toutes ces considérations ne s'appliquent que lorsque l'on traite un volume conséquent de données ; en fonction du type de traitement que l'on cherche à faire, on commencera à se poser de sérieuses questions de complexité au-delà de 1000 à 10000 entrées à gérer d'un coup. En deçà, on peut bien se permettre de privilégier une programmation simple, naturelle et sans nécessité de stockage massif de boîtes d'aspirine sous le bureau.
Et dans le cas où il nous faut optimiser les performances d'une application, on procèdera toujours dans l'ordre d'efficacité croissant, en appuyant d'abord là où ça peut faire le plus de différence :
1 - on étudie complexité générale du ou des algorithmes sous-jacents, et on essaie d'améliorer cela. Plus facile à dire qu'à faire, n'est-ce pas.
2 - on applique les formidables conseils qui vont suivre dans ce dossier, et on optimise donc en particulier les appels aux bases de données, aux disques, etc.
3 - on utilise un système de cache ou des outils d'optimisation de code écrits par d'autres. Si on est en rendus là, c'est que soit on est désespéré, soit on a déjà atteint un niveau d'optimisation tellement énorme qu'on ne peut plus rien faire simplement au niveau du code.
4 - on rajoute des ressources matérielles, et, si on le peut, on parallélise les étapes qui prennent le plus de temps. Ca c'est la solution qui apporte le moins de gain pour le plus de ressources consommées, autant dire qu'on ne la dégainera qu'à bon escient.