Plus vite, plus fort, plus profond. Le dernier terme semble étrange et est pourtant un des axes de l’évolution des traitements. Lors de mon article précédent de paléontologie informatique, je m’attardait sur les entrées et leurs évolutions au cours des dernières décennies. Ici je vais donc présenter le deuxième élément de la chaîne, d’une application informatique : le traitement.
Après avoir récupéré une demande, il faut savoir y répondre. Pour cela un programme a été écrit. Ce programme est exécuté étape par étape par un processeur. Le traitement d’un programme est réalisé par un processeur. Celui-ci déroule chaque étape du programme.
Prenons un programme simple. L’affichage d’une recette de cuisine. L’utilisateur, via son interface, a indiqué le nom d’un plat : ‘tarte aux pommes’. Le traitement que je propose est donc le suivant :
- Vérifier que la demande est valide.
- Chercher dans une base de données s’il existe des recettes correspondantes.
- Renvoyer à l’utilisateur la recette la plus pertinente.
La première étape est d’intégrer les entrées, les saisies réalisées par l’utilisateur. Pour la ‘tarte aux pommes’, le traitement va vérifier que la demande est valide. Si l’utilisateur saisit un texte incompréhensible ou demande quelque chose sans rapport, le programme préviendra l’utilisateur de son erreur.
Ensuite le traitement, va interroger des sources de données internes ou externes (les bases de données) afin de récupérer les informations pertinentes. On peut imaginer que suivant la région, la recette renvoyée ne sera pas la même pour s’adapter aux produits locaux (ou aux commerces partenaires ;).
Enfin, le traitement va mettre en forme la recette (distinguer les ingrédients, les étapes, le temps de préparation, …) et la renvoyer vers la sortie afin que l’utilisateur en prenne compte.
Chaque macro-étape décrite nécessite des calculs, des échanges d’informations. Bien sûr, le processeur qui exécute ce traitement ne comprend pas le langage naturel. Il n’exécute que des instructions simples. Le traitement a donc été écrit dans un langage de programmation plus ou moins proche du langage humain (majoritairement anglophone) avant d’être traduit dans pour être exécuté par le processeur.
Parlons des traitements et de leurs évolutions en 40 ans. Comme pour les entrées, même si les méthodes de traitements existaient depuis plus longtemps, l’informatique s’adressait surtout aux entreprises et aux universitaires.
(Évolution #1) L’arrivée des ordinateurs personnels dans les foyers au début des années 80. Les applications informatiques se contentent de réaliser tous les traitements en local. Les informations ne sont donc pas partagées et doivent être sauvegardées en externes.
(Évolution #2) Dans les années 90, l’architecture client/serveur se développe et permet de répartir les traitements (d’abord le stockage des données, puis d’autres services et traitements) sur des machines distantes. Le Cloud n’est qu’un nom commercial des années 2010 pour désigner le déport des traitements sur des machines distantes. Internet arrive dans les foyers et propage cette architecture.
De son côté, le processeur se contente de suivre la loi Moore qui constate que chaque 18 mois, la puissance de calcul d’un processeur double.
(Évolution #3) Dans les années 2000, les machines virtuelles (java, .Net, Progress, …) révolutionnent le déploiement des applications informatiques. En effet, avant les machines virtuelles, un programme ne pouvait être exécuté que sur un type de machine. Ce type d’architecture assure qu’un programme aura le même comportement quelle que soit la machine sur laquelle il est exécuté.
En parallèle les ordinateurs portables font leur entrée en masse. L’ordinateur n’est plus une tour fixée à un bureau. Le processeur doit donc devenir plus économe en énergie. La loi de Moore est complétée. On ne cherche plus à aller plus vite mais à faire autant avec moins d’énergie.
(Évolution #4) Dans les années 2010, l’intelligence artificielle (IA) et les réseaux de neurones apportent une évolution importante à notre interaction avec les applications informatiques. Les machines peuvent ‘définir’ leurs stratégies pour répondre à un problème. L’intérêt n’est pas de devenir champion de Go mais de pouvoir indexer les contenus sur Internet.
Puisque presque tout le monde a désormais peut donner son avis, transmettre ses photos et vidéos, … avec un téléphone, il faut être capable de traiter ces quantités d’information.
L’IA apporte aussi des solutions à d’autres problèmes : rendre des voitures autonomes, améliorer la circulation dans les villes, comprendre les questions dans un langage naturel et savoir y répondre (demandez la météo à votre téléphone !), …
(Évolution #5) 2020 et au delà ? L’informatique quantique. Ce sujet méritera un article plus tard. Actuellement, seules les applications scientifiques utilisent ces méthodes de traitement, pour comprendre notre univers. Comme toute évolution, elle trouvera sa place dans des domaines plus communs.
Aujourd’hui, les applications informatiques sont accessibles à tous (ou presque) sur des équipements portables. Les processeurs sont de plus en plus puissants et efficaces. Et pourtant, les besoins restent les mêmes. Seuls le nombre des besoins traités et la présentation des réponses ont changées.
Faster, Stronger, DeeperToujours plus de traitements avec des architectures toujours plus complexes, toujours plus vite, toujours plus de domaines explorés … pour simplifier la vie des gens.