GoSuda

Politique et informatique

By snowmerak views ...

Qu'est-ce que la philosophie

Que pensez-vous que soit la philosophie ? Selon le dictionnaire, il s'agit de l'activité qui consiste à réfléchir aux questions fondamentales de la vie et du monde et à chercher des réponses. On peut aussi retenir une définition fondée sur l'action : il ne s'agit pas de résoudre des problèmes dont la réponse est déjà fixée, mais d'étendre sa pensée à travers une même question ou une succession de questions qui s'enchaînent, puis de partager ces réponses.

Autrefois, alors que j'achevais mon cursus de licence, j'ai suivi un cours lié à la philosophie politique. Lors de la présentation de chacun, le professeur avait tenu des propos semblables à la philosophie politique et l'informatique sont des disciplines situées aux sommets de philosophies différentes. Ce n'étaient pas exactement ces mots ni cette phrase, mais je crois que le sens était à peu près celui-là.

L'informatique

Je considère que l'informatique est une recherche fondamentale visant à résoudre des problèmes logiques. C'est pourquoi des personnes qui réfléchissent à un même problème peuvent aboutir à des réponses différentes. L'exemple le plus représentatif est le tri. Pour ordonner des données alignées dans le même ordre, il existe de nombreuses méthodes d'exploration : tri à bulles, par insertion, par sélection, par fusion, rapide, par tas, par tas binaire, etc. En les divisant, on peut même voir émerger de meilleurs algorithmes.

Par ailleurs, à une échelle locale, on peut dire qu'elle construit et prouve. Le tri évoqué plus haut ne cesse lui-même de concevoir de nouvelles manières de trier et de prouver les résultats obtenus. Pour les développeurs, un exemple plus proche consiste à considérer la planification d'un projet comme une mise en œuvre dont on démontre qu'elle fonctionne correctement.

La philosophie politique

Je considère que la philosophie politique est une recherche fondamentale visant à résoudre des problèmes sociaux. À chaque époque, elle soulève de manière répétée des interrogations sur des problèmes déjà existants, qui diffèrent selon les temps, produit des réponses et les partage avec le présent et l'avenir. Elle traite principalement de valeurs abstraites dont l'interprétation varie selon les époques et les cultures, comme la justice, la liberté, l'égalité et le pouvoir. Elle ne dispose pas de frontières nettes entre le bien et le mal, ni de bonnes et de mauvaises réponses établies : c'est précisément cette absence de détermination qui la caractérise.

Par ailleurs, à une échelle locale, comme l'informatique, on peut y voir interroger et réfléchir. Face aux problèmes survenus, elle ne cesse de questionner, de se demander pourquoi les choses en sont arrivées là, quelles directions meilleures existent, puis elle réfléchit et apporte des réponses. Là aussi, le nombre de réponses est proportionnel au nombre de personnes qui pensent.

Pourquoi devons-nous connaître la politique et l'informatique

La relation d'appel réciproque

Les deux mondes semblent explorer des domaines différents, mais ils partagent en réalité de nombreux points communs et possèdent beaucoup d'éléments qui sont à la fois causes et conséquences l'un de l'autre.

Prenons un exemple.

  1. Si les données de santé personnelles sont stockées en toute sécurité dans le cloud, chaque hôpital pourra y accéder rapidement lorsque cela sera nécessaire ⇒ cela se réalise par la programmation, en utilisant les fonctions de chaque domaine de manière sûre et accessible.
  2. Alors, à qui appartiennent ces données ? À moi ? Au responsable qui les a enregistrées ? Ou à l'organisme gestionnaire ? À l'éditeur ? À l'État ? Et jusqu'où ces acteurs peuvent-ils voir mes données ? Jusqu'où et de quelle manière peut-on garantir que mes informations personnelles seront protégées ? ⇒ Un débat politique s'engagera entre des communautés différentes, ainsi que sur les positions et les intérêts divergents de chaque individu.
  3. Par la suite, le débat politique et la conception et la mise en œuvre logicielles se succéderont et se répéteront, parfois en une suite ininterrompue.

Ainsi, l'informatique est utilisée pour résoudre les problèmes sociaux existants, puis la philosophie politique intervient pour reconnaître les problèmes qui en résultent, les interroger et les résoudre, afin de traiter le problème suivant. Dans la société de l'information contemporaine, ce phénomène va de soi.

La politique et l'informatique se ressemblent-elles ?

Les points qui n'y ressemblent pas

Par ailleurs, les deux mondes ont évolué de manière analogue. Mais leur fondement diffère, à l'image de la relation entre philosophie sociale et philosophie de la nature, par l'opposition entre expression ambiguë et expression précise. La philosophie politique repose sur des définitions variables et ambiguës formulées en langage naturel, tandis que l'informatique repose sur des propositions invariables et précises, exprimées par des formules plutôt que par le langage naturel.

Par ailleurs, leur orientation diffère subtilement. L'informatique considère qu'une solution optimale peut exister. En philosophie politique, on évoque plutôt des notions ambiguës comme un argument plus convaincant, un argument mieux fondé ou un argument plus éthique. Mais selon moi, l'orientation des deux est presque identique : toutes deux visent finalement un meilleur lendemain. Même l'informatique, qui compte de nombreux domaines, s'efforce notamment, dans la compression des médias appelée codec, d'atteindre un meilleur taux de compression, de meilleures performances et des coûts de licence plus faibles.

Les points qui semblent se ressembler

Notamment, les langages de programmation et les idéologies de gouvernement semblent s'appliquer de manière analogue aux êtres humains. Il n'est pas possible de faire correspondre chaque langage à une idéologie, mais je vais les énumérer pour le plaisir.

  • Langage C (le développeur sait ce qu'il fait) : je voudrais le comparer au républicanisme. Il ressemble à la république, qui a historiquement constitué le fondement du système politique occidental, et il me paraît proche du communautarisme, qui accorde de l'importance à la conscience de chaque citoyen et aux efforts individuels pour progresser vers un idéal meilleur. J'ai aussi trouvé une similitude dans le fait que les droits s'accompagnent de responsabilités.
  • Java (écrire une fois, exécuter partout) : je ne sais pas. Il existe une loi forte, et l'on vit selon elle dans une existence uniforme, mais celle-ci est stable, et à l'intérieur de ce cadre on est libre. Et si l'on entre dans Spring, diverses protections sociales vous attendent. Doit-on dire libéralisme ?
  • C# (harmonie entre la productivité des développeurs et les principes de génie logiciel) : sous la protection d'un État fort, tout est bien conçu, et dans le cadre de ce qui est planifié, on peut pousser la productivité et les performances à l'extrême. L'économie planifiée lui convient. Ce qui le distingue du communisme, c'est qu'il a libéré les moyens de production et ne restreint pas les producteurs.
  • Go (abandonner la complexité, retenir le pragmatisme et l'efficacité) : il n'existe rien de comparable. Il distribue tout, donc un État-providence, s'il vous plaît.
  • Rust (sécurité sans perte de performance) : la propriété et la durée de vie dans Rust sont gérées par un souverain, le compilateur strict. Afin d'empêcher les inégalités et les risques engendrés par l'activité économique libre des individus, la communauté gère et planifie les moyens de production pour garantir une vie stable. En limitant en partie la liberté individuelle, il poursuit la sécurité et l'égalité de l'ensemble du système, c'est pourquoi je le considère comme socialiste.
  • JavaScript (souplesse, tolérance et omniprésence) : je voudrais le comparer au capitalisme. Dans ce langage, les moyens de production appartiennent aux individus, et même les équipements sont largement détenus par les individus. Grâce à cela, toutes sortes de produits industriels apparaissent, et chacun peut poursuivre le profit par une concurrence libre. Mais un marché sans régulation a vite sombré dans le chaos.
  • TypeScript (JavaScript étendu) : bien sûr, il s'agit du capitalisme régulé. La croyance dans le capitalisme est ébranlée, et pour dissiper l'instabilité du marché, l'État intervient dans une certaine mesure. La liberté totale d'autrefois a relativement reculé, mais chacun peut toujours entrer librement sur le marché et rivaliser.

Et il existe, plus qu'on ne l'imagine, de nombreux développeurs qui se déchirent beaucoup à coups de langages, comme s'ils menaient une guerre idéologique dans la réalité. Le langage lui-même est une idéologie familière pour les développeurs, et en même temps un idéal à atteindre.

L'État et l'architecture

  • Architecture monolithique et État centralisé : tout est contenu dans une base de code immense et dans un seul binaire. Cela ressemble à un État unitaire doté d'un gouvernement central puissant, ou à une monarchie absolue. Toutes les fonctions de l'État sont contrôlées par un système de pouvoir unique.
    • Elle présente l'avantage d'être la plus facile à mettre en place sous forme d'État, et les décisions y sont prises rapidement. Cela relève du même raisonnement que l'avantage de livrer rapidement l'ensemble du logiciel. Toutes les ressources et toutes les informations étant concentrées en un seul lieu, la gestion est claire.
    • Toutefois, plus l'État grandit, plus il est difficile de répondre aux changements, et même pour modifier une petite loi ou une petite institution, il faut examiner et appliquer l'ensemble. Un problème dans un seul domaine risque aussi de paralyser tout l'État. De même, pour l'architecture monolithique, la grande base de code et le code enchevêtré rendent difficile la réponse aux changements : même pour modifier une seule ligne, il faut évaluer la portée de l'impact, et un problème survenu dans un module touche facilement l'ensemble du système.
  • MSA et État fédéral : chaque fonction du système est séparée en services indépendants. Cela présente une similitude avec un État fédéral dont chaque partie est constituée de plusieurs États membres indépendants. De plus, chaque service et chaque État dispose de sa propre infrastructure indépendante. L'ingérence du gouvernement central est plutôt lâche, et l'on ne sait jamais quand surviendront une indépendance ou une adhésion, ce qui est également analogue.
    • Fondamentalement, chaque État membre indépendant et chaque service peut réviser ses lois ou écrire son code de manière autonome. Il n'est donc pas nécessaire d'harmoniser leurs rythmes. De plus, même si un problème survient en un point, il est difficile que la fédération tout entière soit paralysée. Et l'on peut choisir l'institution (la technique) la mieux adaptée à chaque région ou à chaque domaine.
    • Mais il est difficile de parvenir à des accords mutuels ou de créer des canaux de communication. Il est aussi difficile de mener une politique cohérente, ce qui peut engendrer de la confusion.
  • EDA (Event Drive Architecture) et société civile : plutôt que d'être directement commandés par un gouvernement central ou un intermédiaire, les problèmes sociaux qui surviennent sont ramassés et résolus de manière autonome et proactive par les individus. Cela ressemble à la caractéristique de l'EDA : lorsqu'un événement survient, l'un des abonnés le récupère de façon autonome et le traite.
    • Chacun peut y participer facilement. De même, dans l'EDA, un nouveau service peut facilement devenir un nouvel abonné et prendre part au processus.
    • Mais il présente l'inconvénient de ne pas permettre de saisir l'ensemble du flux. Il est difficile de suivre qui a traité quoi et comment, et l'on ne peut pas savoir quelle réaction en chaîne un événement unique va provoquer.
  • Layerd Architecture et féodalité : la féodalité est une structure dans laquelle chacun, à son niveau, accomplit le rôle et la responsabilité qui lui sont confiés et remplit ses obligations envers le niveau supérieur. Ces liens sont noués sous forme de relations contractuelles, et l'on peut trouver une similitude avec l'architecture en couches dans le fait qu'ils forment une structure de domination verticale stricte.

Ainsi, bien d'autres comparaisons sont possibles, mais le cœur de ce texte réside moins dans la structure elle-même que dans le processus par lequel on la construit.

Le règlement des problèmes en développement et en politique est-il le même ?

Si l'architecture logicielle et le système étatique se ressemblent, le processus de leur construction trace, lui aussi, des parallèles étonnants. Le développement logiciel n'est en réalité pas différent d'un acte politique consistant à établir et à faire évoluer un nouvel ordre dans l'espace numérique.

  1. Publicisation des problèmes sociaux et analyse des besoins**:** tout commence par la question « Quel est le problème ? ». De même que la souffrance et les inconvénients de la société civile sont rendus publics et deviennent un sujet politique, les difficultés et les demandes des utilisateurs, une fois analysées, deviennent le premier jalon du développement : la « spécification des exigences ».
  2. Conception constitutionnelle et conception architecturale**:** quel État voulons-nous construire ? Quel système voulons-nous créer ? De même que les responsables politiques posent l'ossature de la constitution et des lois à partir de leurs idéologies et de leurs philosophies, l'architecte trace, à partir de ses convictions techniques, le plan de l'architecture qui servira de fondation au système. Les décisions prises à cette étape déterminent le destin du système.
  3. Application des politiques et implémentation logicielle**:** une fois le plan achevé, les développeurs écrivent le code réel, et les fonctionnaires appliquent les politiques conformément aux lois. C'est le processus par lequel un projet abstrait prend corps en une réalité concrète qui fonctionne dans le monde réel.
  4. Jugement électoral et tests logiciels**:** les politiques voient leur légitimité jugée par les élections et l'opinion publique. Le logiciel voit sa valeur vérifiée par les tests de l'équipe QA et les retours des utilisateurs. Tous deux ne peuvent finalement survivre qu'avec l'accord du souverain (citoyens, utilisateurs).
  5. Réforme institutionnelle et maintenance du système**:** une loi ou un système, une fois créé, n'est pas éternel. De même que l'on modifie les vieilles lois et réforme les institutions au gré des changements de l'époque, le logiciel doit lui aussi s'adapter à un environnement changeant et améliorer ses inefficacités internes ; dès que l'on cesse le « refactoring », il devient du code mort.

Ainsi, l'ensemble du processus, de la définition du problème à la conception, à la mise en œuvre, à la vérification, puis à l'amélioration continue, montre que les deux mondes partagent le même rythme de résolution des problèmes.

Le jour des nouveaux législateurs

La société de l'information a rendu insignifiante la distance entre les sommets de ces deux philosophies. Le code n'est plus un simple circuit logique : il est devenu une « loi (Code is Law) » qui régit les relations entre les personnes, répartit le pouvoir et réalise les valeurs sociales. Si l'architecture que nous concevons ressemble à la structure de gouvernement d'un État, et si le processus de développement que nous suivons ressemble à un processus de concertation politique, qui sommes-nous donc, nous autres développeurs ? Et que doivent faire les responsables politiques ? C'est pourquoi les développeurs doivent désormais réfléchir non seulement à la logique du code, mais aussi à la société que ce code va façonner, et les responsables politiques doivent comprendre non seulement la logique des votes, mais aussi la logique de la technologie qui fait bouger le monde. Car le pouvoir immense que chacun de nous exerce dans son propre domaine s'accompagne d'une responsabilité éthique tout aussi grande.