La nuit, je rêve souvent de code

La programmation a changé ma façon de voir le monde et elle pourrait changer la votre.

J’ai commencé à coder à 20 ans. Au début, j’ai appris, comme beaucoup, grâce au duo HTML / CSS. Un jour, j’ai voulu me former au PHP, juste pour voir. À l’époque, une camarade de classe prénommée Alice venait de s’y mettre et m’a fait part d’un avertissement assez curieux. Elle m’a expliqué que se former à ce langage avait changé sa façon de voir le monde. Au départ sceptique, j’ai fini par comprendre ce qu’elle voulait dire.

Cet article se voulant généraliste et abordable, je vais tâcher de ne pas m’éterniser sur l’aspect technique. Pour faire court, HTML et CSS sont ce que l’on appelle des langages de description. Cela signifie que l’on saisi des instructions qui globalement, auront le même résultat, factuel, pour chaque utilisateur. Je raccourci, puisque cette affirmation est surtout valable si l’on fait abstraction de considérations telles que le périphérique ou le navigateur sur lequel on consulte le code saisi.

Avec PHP mais aussi d’autres langages de ce type, on bascule sur des langages dits de « scripts ». Entrent en jeux des notions clés de la programmation : variables, constantes, conditions, boucles, fonctions et j’en passe.

  • Variables : Les variables sont des informations qui se composent d’un nom (son identifiant) et d’une valeur.
    Exemple : la variable « mon âge » a pour valeur (actuellement) : 25.
  • Constante : Une variable dont la valeur ne peut pas changer.
    Exemple : Mon prénom est une constante. Cela ne devrait pas changer.
  • Condition : Les conditions permettent de tester la valeur d’une ou plusieurs variables et en fonction, exécuter une instruction plutôt qu’une autre. De manière basique, la condition se compose d’un binôme « Si *l’affirmation est correcte* faire ceci, Sinon, faire cela …. »
    Exemple : Si la variable « mon âge » est supérieur à 18 ans, me laisser rentrer dans tel endroit. Sinon, m’en refuser l’accès.
  • Boucles : Une instruction qui se répète tant qu’une ou plusieurs conditions sont remplies.
    Exemple : Tant que le lave-vaisselle n’est pas plein, continuer à le remplir.
  • Fonctions : Une séquence d’une ou plusieurs instructions.
    Exemple : « Faire le ménage » est une fonction qui consiste en exécuter les instructions suivantes « nettoyer les vitres, passer un coup de balai, faire la poussière, etc. »

Le monde n’est qu’algorithmique.

Quel rapport avec ma vision du monde ? En un mot : l’algorithmique. Si l’on se réfère au Larousse, la définition de l’algorithmique est la suivante :

"Algorithmique : Ensemble de règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations."
Larousse

Le déclic dont je parle un peu plus haut m’est donc venu en faisant un constat très simple : notre vie toute entière est elle-aussi basée sur des variables, des conditions et divers autres mécanismes que l’on retrouve en programmation. Quand j’ai vu mon existence sous cet angle, la perspective avait de quoi être vertigineuse. On peut d’ailleurs faire un parallèle avec le fameux « Effet papillon « , concept qui part du principe que la modification d’une seule variable, aussi infime soit-elle, peut avoir des conséquences en chaîne inimaginables (positives ou négatives) sur le monde. Le battement d’un papillon peut-il conduire à un tsunami au Japon ?

Hello world (traduit littéralement en français par « bonjour le monde ») sont les mots traditionnellement écrits par un programme informatique simple dont le but est de faire la démonstration rapide d’un langage de programmation (par exemple à but pédagogique) ou le test d’un compilateur.
Wikipedia

Au quotidien, les algorithmes sont de plus en plus omniprésents et l’informatique n’est jamais bien loin. Si je n’insère pas une dosette adaptée, ma machine à café ne me servira pas son breuvage. Si je me trompe de code, ma carte bancaire ne me permettra pas de retirer de l’argent. Tant que 30 secondes ne se seront pas écoulées, le feu restera au rouge.

Mais laissons l’informatique de côté quelques instants et amusez-vous à imaginer ce que pourrait être le script / programme qu’est votre vie. Changeons une seule variable ou constante, même infime comme celle de votre année ou pays de naissance, votre sexe, la durée d’une journée, etc … Allons encore plus loin et demandez-vous comment se serait déroulé tel événement historique si l’on y avait changé une variable clé. Renversant, n’est-ce pas ? Plus que jamais, avec des « si », on refait le monde.

Les tentatives de création de machines pensantes nous seront d'une grande aide pour découvrir comment nous pensons nous-mêmes.
Alan Turing, considéré comme l'un des pères de l'informatique moderne

Résoudre des problèmes

De manière concrète, je me surprends parfois à résoudre mes soucis de tous les jours tel que je résoudrais un script. Mentalement, je fais abstraction ou isole une partie d’une problématique, quelle concerne mon métier ou non, j’en change quelques variables pour voir si la solution m’apparaît plus nettement. Le plus étonnant, c’est que cette gymnastique mentale se fait parfois à mon insu, dans des moments improbables. J’ai remarqué que mes meilleures idées me viennent soit avant de m’endormir, soit au réveil ou encore sous la douche. Pour le dernier cas de figure, il m’est même arrivé de prendre une douche volontairement en plein après-midi pour prendre le temps d’analyser calmement une situation complexe ou stressante, mon regard vagabondant sur le quadrillage du carrelage des parois, pendant que l’eau arrose mon esprit embrouillé.

Tenez, même pour cet article j’ai procédé ainsi : je me suis lancé dans sa rédaction en rentrant du cinéma et je l’ai repris le lendemain au réveil, remaniant copieusement mon propos de la veille. La conclusion en a été faite en peignoir.

Pour ma défense, mon métier n’est pas uniquement de faire du code. Je fais aussi du design. Très bon exemple là encore. Je fais parti de ceux qui ne pensent pas que les designers soient des artistes. Je le dis sans hostilité. Pour moi, un designer n’est pas cet être touché par la grâce dont le cerveau accoucherait d’une idée lumineuse en observant la mousse pousser sur l’écorce d’un arbre un matin d’automne. Un designer est quelqu’un qui collecte l’ensemble des variables d’un problème (« l’existant ») et construit une solution en tenant compte de ces dernières, en établissant le meilleur scénario.

Big Data

À présent, revenons-en, si vous le voulez bien, au domaine de l’informatique. À l’heure du « tout numérique » on parle beaucoup du concept de « Big Data ». Pour ceux à qui cette notion est totalement étrangère, je vais me risquer à une vulgarisation probablement grossière. Le « Big Data » désigne un ensemble tellement colossal de données concernant l’ensemble des humains, qu’il est impossible de les traiter autrement que par des machines ou des programmes informatiques. Des données numériques qui nous concernent toutes et tous et qui parlent de nous, qu’elles soient confidentielles ou non. Des données qui renferment beaucoup des variables et constantes qui nous constituent individuellement. Le but du jeu est ensuite d’en déduire les actions et événements potentielles qui pourraient découler de ces variables ou constantes.

En raccourcissant un peu le principe, d’un point de vue commercial par exemple, cela permet de mieux cibler une audience ou les habitudes d’un consommateur, pour lui proposer un produit plus adapté à ses besoins, parce que l’on cerne mieux ce qui lui plaît ou ce qui le fait céder à un achat coup de tête (c’est une question de point de vue). C’est comme ça qu’après avoir regardé une vidéo de chats, Youtube vous suggère d’autres vidéos de chats. C’est ainsi que Facebook en se basant sur des variables comme votre ville ou le collège que vous avez fréquentez, vous présente des profils susceptibles de vous intéresser. C’est pour cette raison qu’en tapant « Restaurant », Google vous proposera en priorité des restaurants basés dans votre ville, en se basant sur votre localisation actuelle.

Là encore, tout n’est qu’affaire que de variables et de constantes. Alors pensez-y.
Maintenant vous comprenez sans doute pourquoi je dis que je rêve de code la nuit.