La fin de la caverne

pontPrenons un moment pour comprendre comment fonctionne le système numérique.

Le code source

A la base il y a le code écrit par le programmeur, dit code source. Aujourd’hui il est écrit dans un langage évolué (C++ Java, HTML…). A l’origine ce code était proche du binaire, mais au fur et à mesure de la complexification des algorithmes, il est apparu nécessaire d’avoir des langages plus proches de la langue parlée et écrite. Le code devient facilement lisible par celui qui le rédige, comme éventuellement par quelqu’un qui contrôle le code.
Cela ne veut pas dire que dans certains cas, il ne faille pas utiliser des mots inhabituels. Par exemple pour les couleurs, si on veut présenter une photo avec un minimum de réalisme, ou même une présentation graphique, on ne peut pas se contenter de parler de bleu, de rouge, ou de vert. Il faut un nuancier de couleur plus détaillé, plus précis. Par exemple dans le langage HTML, on écrira #FEFEFE, #FEFDF0, #FDE9E0, pour distinguer l’albâtre, le blanc d’Espagne et coquille d’œuf, toutes nuances de blanc qui feront la subtile beauté de votre écran internet.
Ce code source est de plus en plus intégré dans un progiciel, c’est à dire un code créé préalablement. Le programmeur n’aura plus qu’à assembler, regrouper les divers morceaux de programme que lui propose l’éditeur. Par exemple pour faire un site internet, il fallait auparavant être un webmaster compétent. Aujourd’hui des éditeurs comme WordPress proposent des solutions déjà programmées, auxquelles vous n’aurez qu’à ajouter les photos, modifier les libellés pour les mettre en ligne.
L’activité du programmeur devient un métier d’assemblage, de joueur de lego. Les meilleurs des éditeurs laissent la possibilité de personnaliser le travail, d’ajouter du code à des endroits précis. Mais dans le processus de création d’un système d’information, le temps de la programmation ne cesse de se réduire. Les progiciels ont permis une augmentation de la productivité.
De plus il sera possible d’interpoler des mots dans ce programme. Les noms que vous saisissez sur l’écran s’intègrent dans le programme. Ces mots ajoutés deviennent trop nombreux pour être retrouvés sans classement, ils sont rangés dans des tables et ces tables sont regroupées dans une banque de données (BDD).
Mais il ne faut pas oublier que soient les compléments, les mots employés, le code informatique reste un texte, avec une syntaxe, une grammaire, un vocabulaire. Dans sa forme générale, ce texte n’est pas fondamentalement différent celui du moine copiste au moyen-âge.

Compilation, interprétation et horloge

Ce code source, va être lu par un autre programme dit compilateur. Celui-ci retranscrit le code source dans un langage plus proche de la machine. Il existe autant de compilateur que de couple langage/microprocesseur, le plus connu étant l’assembleur. Le fait de passer par cette étape évite au programmeur de travailler dans un langage difficilement compréhensible au premier regard par l ‘utilisateur, elle permet aussi qu’un même programme source puisse être utilisé par plusieurs types de machines. Alors qu’au tout début de l’informatique, un programme était dédié à un type d’ordinateur, le passage par le compilateur a permis d’écrire des codes qui peuvent être transportés d’une machine à une autre. Dans ce langage on se rapproche de la machine. Dans le précédent, il s’agissait juste de donner une transcription la plus précise possible de l’algorithme, dans celui-ci on commence à préciser les circuits que la machine devra utiliser pour calculer l’algorithme.
Le programme de compilation peut être remplacé par un programme d’interprétation. La différence entre les deux tient principalement au moment où se fait la lecture du code source. Un compilateur lit le programme une fois pour toute. L’interpréteur lit le programme au fur et à mesure de son exécution. La méthode de compilation permet ensuite à l’exécution d’être plus rapide, l’interpréteur demande plus de temps. La première méthode fait que le programme compilé, n’est plus lisible par l’utilisateur, la deuxième fait que le programme reste lisible facilement pendant son exécution. L’une des clés du succès d’internet tient à l’utilisation de langage interprétés et non compilés (HTML et Java Script). Il était dès lors facile d’écrire de nouvelles pages en recopiant puis en aménageant des pages existantes.
Cette distinction (compilateur ou interpréteur) est à prendre avec précaution car certains langages sont à la frontière entre compilation et interprétation.
Dans tous les cas, les programmes sont lus par l’ordinateur au rythme de l’horloge. A chaque battement de celle ci, l’unité centrale de pilotage (CPU) fait avancer d’un pas la lecture du programme. Bien sur le rythme des horloges s’est accéléré avec le temps et les machines actuellement sont capables de lire plusieurs lignes de programmes en même temps.
Quelque soit la méthode, la machine exécute les instructions données par le code, et cela aboutit le plus souvent à un autre programme qui va être envoyé à une machine. Aujourd’hui cette machine a le plus souvent un programme intégré qui va permettre la lecture du code envoyé. Cette machine peut être un écran (chaque mise à jour de l’écran correspond à une page de programme), une imprimante, une machine à commande numérique, un robot, un drone, une voiture, bref, n’importe quelle machine ayant une unité de commandement et reliée au réseau.

Qui pilote

L’air de rien, ce fonctionnement du numérique introduit une évolution anthropologique majeure. Jusque là, un texte ne pouvait être lu que par un homme. S’il contenait des instructions à exécuter par une machine, il fallait que l’homme appuie sur un bouton, utilise une manette ou tourne un volant. Cette circonstance a eu une influence sur la vision du monde. Du mythe de la caverne de Platon au concept de la chose en soi de Kant, la philosophie occidentale a beaucoup glosé sur le fait que le réel était difficilement atteignable.
Désormais, dans le numérique, les données ont changées. Un texte peut être lu par un ordinateur et donne directement un ordre à une ou des machines.
Cette circonstance, outre ses conséquences philosophiques sur lesquels des générations d’universitaires vont pouvoir se pencher, à deux effets directs :

  • Toutes les instructions sont tracées, puisqu’elles donnent lieu à un programme ; désormais la recherche de la cause d’un accident ou d’une anomalie est facilitée dans la mesure où l’instruction fait forcement l’objet d’un morceau de programme édité ;
  • La responsabilité de l’exécution est diluée ; qui est responsable, celui qui a écrit le code source, le code du compilateur, le code de lecture par la machine, celui qui a ajouté du paramétrage, celui qui a saisi les dernières instructions sur l’écran.

Déjà avec la voiture sans chauffeurs les assureurs ont découvert un champ d’investigation nouveau. 90% des accidents sont dus à des erreurs de conduite. Avec le pilotage automatique et la voiture sans chauffeur, la question de savoir qui est responsable en cas d’accident est ouverte : le propriétaire, le constructeur ? En tout cas pas celui qui est monté dans la voiture qui peut être aveugle et paralytique.
En attendant, les concepteurs-développeurs ont depuis longtemps intégré la question. D’abord dans la conception de l’algorithme, faut-il automatiser au maximum, ce qui limité les risques d’erreur, ou faut-il au contraire laisser la liberté à l’utilisateur, ce qui lui permet de réagir à l’imprévu. De nombreux maux de têtes sont attendus face à cette question.
Mais, ce à quoi ils se sont habitués depuis longtemps, c’est la formule d’Henri Ford: don’t find fault, find remedy (ne cherchez pas la faute mais la solution). LA recherche de responsabilité n’a plus de sens. Dans notre civilisation aux racines judéo-chrétiennes, éprise de procédures inquisitoriales et de châtiment du coupable, c’est un message qui a quelques difficultés à passer.

Bibliographie

Noël Guanimé : Le véhicule autonome va transformer la façon dont les assureurs évaluent les risques (LE MONDE | 14.08.2016 à 07h32 )
H.Bersini, MP et R Spinette, NVan Zeebroeck : Les fondements de l’informatique (4 ème édition-Vuibert-2014)pont

Cet article, publié dans écriture, developpement, informatique, système d'information, est tagué , . Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s