Centralisme vs Répartition

Centralisme vs Répartition

Écrire un programme informatique, c’est écrire. Même s’il s’agit seulement de décrire des connaissances, des informations, des données et d’exprimer comment elles peuvent évoluer sans perdre leur cohérence et même si le langage de programmation utilisé reste formel, sec et froid, sans ambivalence, sans métaphores, c’est encore écrire.

Si pour chaque problème, on voulait classer les différents algorithmes et leur implémentations, on aurait un ordre partiel, représenté dans un graphe acyclique orienté. Ils seraient rangés par couches :

  • les algorithmes d’une même couche seraient incomparables, car meilleurs sur certains aspects, inférieurs sur d’autres.
  • les algorithmes d’une couche de niveau n seraient supérieurs sur tous les aspects aux algorithmes des couches de niveau inférieur à n

Comme pour le langage naturel, la combinatoire induit que toute phrase raisonnablement longue que l’on écrit, n’a très probablement jamais été écrite. Vérifiez par vous-même : copiez une phrase de ce texte et cherchez la, telle qu’elle sur internet. Vous devrez probablement l’encadrer avec les guillemets du 3 avant de la proposer à votre moteur de recherche favori.

Il est donc difficilement imaginable de créer un programme qui écrit des programmes. Sauf, évidemment, si le problème a traiter est extrêmement bien défini. Le souci, c’est qu’écrire un programme est indissociable de la tâche qui consiste à définir précisément le problème à traiter : le cahier des charges.

Dans tous le processus de développement logiciel, nous sommes donc contraints de faire comme dans l’écriture en langue naturelle : nous puisons nos idées dans notre culture, nos connaissances et notre représentation du monde, pour produire des séquences ordonnées de symboles qui ont un sens, dans le contexte de nos représentations.

Ainsi, dans les premières trois ou quatre décennies de l’informatique, comme les microprocesseurs n’avaient qu’un seul noyau, étaient au mieux associés à un co-processeur arithmétique, n’étaient pas connectés en réseau, il n’y avait aucune incitation à se poser la question d’écrire des algorithmes parallèles, concurrents ou de concevoir des architectures distribuées. Quand nous concevons des machines, elles sont souvent à notre image. Nous prenons alors comme modèle notre cerveau, ou plutôt ce que nous savons, ou croyons savoir de son fonctionnement. C’est ainsi que nous avons développé les approches logiques, symboliques et les approches connexionnistes.

Ce sont les avancées de la science et de la technologie, puis des avancées matérielles qui nous ont incités à changer de style d’écriture et lieu de s’inspirer du cerveau humain, nous avons commencé à nous inspirer des sociétés humaines et à concevoir des approches dites décentralisées.

A ce propos, saviez-vous que « L’existence de sociétés hiérarchisées et inégalitaires n’est pas le résultat d’un long processus naturel et achevé, mais ces formes de gouvernance ont toujours coexisté avec des formes de sociétés égalitaires » ?

Laisser un commentaire