samedi 15 avril 2023

Prévisible ≡ programmable

Je dis que tout ce qui est prévisible est programmable, et que tout ce qui est programmé est prévisible. Il y a donc identité entre « programmable » et « prévisible ».

Qu’est-ce que cela veut dire ? Il est clair qu’un programme peut parfois fournir un résultat surprenant, donc imprévu. Comment puis-je alors dire que « programmable » et « prévisible » sont des mots pratiquement synonymes ?

Ce qui est prévisible, c’est le fait que l’exécution d’un programme consiste à effectuer l’une après l’autre les opérations qu’il prescrit au processeur, opérations qui sont inscrites dans les lignes de son code et donc, oui, prévues.

Cependant les résultats que donne le programme peuvent être imprévus car les données qui sont insérées dans le programme y introduisent un aléa, celui du monde extérieur, de l’Existant que ces données reflètent. Ainsi ce qui est prévisible, c’est l’exécution du programme et non son résultat, lequel dépend certes du programme mais aussi de l’aléa qu’y introduisent les données.

Ce qui est prévisible est programmable, mais il ne s’agit pas de prévoir un événement : on ne peut prévoir que la succession des opérations que le programme accomplira sur l’événement initial que lui apportent les données (succession compliquée parfois par des branchements if… then… ou par des interventions humaines qui insèrent des données en cours d’exécution), et comme cet événement initial introduit un aléa dans l’exécution du programme il se peut que celle-ci donne comme résultat un événement imprévu et surprenant : les résultats de l’intelligence artificielle peuvent ainsi nous sembler parfois magiques.

Résumons : ce qui est prévisible, c’est la suite des opérations, des actions, que le processeur exécute automatiquement en obéissant aux instructions que contient un programme. Le résultat dépend bien sûr du programme, mais aussi des données qui y sont introduites et qui sont une image du monde réel, de l’Existant dont elles partagent la complexité sans limite : il est donc naturel que souvent (et non toujours, certes) les résultats soient imprévisibles.

Ajoutons une réserve : si tout programme est un produit de la pensée humaine la plupart des grands logiciels, construits par fusion d’éléments dont le programmeur ne peut connaître que l’interface de programmation, sont le produit d'une pensée en cascade dont la compréhension ne se transmet pas d'un étage à l'autre. Cela les rend aussi complexes devant l’intellect qu'un être naturel ou matériel et leur exécution, pourtant automatique, peut donc comporter des surprises (les « bogues »).

La phrase « tout ce qui est prévisible est programmable » donne cependant une règle utile pour délimiter le domaine propre de l’informatisation : les tâches prévisibles et en particulier les tâches répétitives, qui sont éminemment prévisibles, ont vocation à être informatisées et automatisées sous la seule contrainte de la rentabilité de l’investissement nécessaire.

Il est vrai que l’on peut programmer une production de nombres pseudo-aléatoires, donc imprévisibles en principe. Ce qui sera prévisible alors, ce ne sera pas les nombres que le programme fournit mais le fait qu’il exécute une instruction (comme par exemple $RANDOM sous Linux) dont le résultat, pseudo-aléatoire, peut avoir une influence elle-même programmée sur l’exécution des instructions suivantes.

3 commentaires:

  1. > Ce qui sera prévisible alors, ce ne sera pas les nombres que le programme fournit mais le fait qu’il exécute une instruction (comme par exemple $RANDOM sous Linux) dont le résultat, aléatoire

    Le résultat n'est pas aléatoire, mais justement pseudo-aléatoire : il a beaucoup d'attributs (ceux que nous connaissons actuellement du moins) d'un nombre qui serait lui généré véritablement au hasard mais il est parfaitement prévisible (en connaissant la "graine" initiale, la séquence de nombre générés est déterministe).

    RépondreSupprimer
  2. On peut noter que Linux dispose d'un générateur de nombres aléatoires basés sur l'entropie résultant du séquencement des interruptions notament. https://en.wikipedia.org/wiki//dev/random

    RépondreSupprimer