B2 · Episode 4 · 5:09
The Three Dimensions of Software Complexity
A French computer scientist explains why software is the most complex artifact ever created by humans, highlighting three independent dimensions of complexity: its enormous scale and nonlinear behavior, its entanglement with real-world hardware and human users, and its growing role as a predictive modeling tool that increasingly replaces physical reality.
Source:Université de Rennes / Wikimedia Commons · License:CC BY 3.0
Transcript
Ensuite, on a une deuxième dimension de complexité qui est liée,
Next, there’s a second dimension of complexity that is related to
qui a rien à voir avec la première,
something entirely unrelated to the first one;
qui est liée à la taille de ce logiciel- là. C'est- à- dire que quand on a un petit
it relates to the size of this particular software. That is, when the software is small,
logiciel, un être humain est capable de le comprendre dans son intégralité,
a human being can grasp it entirely;
mais rapidement quand le logiciel grandit, on n'a plus le moyen de le comprendre.
yet as it grows larger, we quickly lose the ability to understand it.
Il faut savoir que les logiciels grandissent d'à peu près.
You need to know that software grows roughly.
tous les dix ans, avec une caractéristique qui est
every ten years, with a characteristic that
que ces logiciels sont constitués de centaines de millions de pièces individuelles
these software programs consist of hundreds of millions of individual components
qui sont toutes différentes et qui interagissent entre elles
all different from one another and interacting with each other
avec des schémas potentiellement extrêmement
in patterns that can be extremely
compliqués et surtout de manière non linéaire, voire chaotique,
complex—especially nonlinear, even chaotic
c'est- à- dire qu'un petit problème à un moment donné peut se propager et
meaning that a small problem at a given moment can spread and
complètement mettre par terre l'ensemble des choses,
completely bring down the entire system
ce qu'on ne va pas trouver dans d'autres disciplines qui sont beaucoup plus
This is something you won’t find in other disciplines, which are far more continuous
continues, c'est- à- dire ce n'est pas parce qu'il y a un écrou qui saute du pont
For instance, if a bolt comes loose on a bridge
que le pont va s'écrouler, alors que là, l'équivalent dans un logiciel,
the whole bridge won’t collapse—whereas in software, the equivalent situation is
un endroit qui pose un problème peut potentiellement faire s'écrouler l'ensemble.
a single problematic spot potentially causing the entire system to fail
Donc clairement, les logiciels sont aujourd'hui les choses les plus complexes qui
So clearly, software is today
ont été produites par le genre humain.
the most complex thing ever produced by humankind.
Et donc ça, ça donne une deuxième dimension de complexité.
And so, this adds a second dimension of complexity.
Et la troisième dimension de complexité,
And the third dimension of complexity,
qui a à nouveau rien à voir avec les deux premières,
which again has nothing to do with the first two,
est liée au fait que les logiciels ne sont pas seulement des objets mathématiques,
stems from the fact that software is not merely mathematical objects,
mais ils sont plongés dans le monde réel.
but are embedded in the real world.
Ils sont plongés dans le monde réel, je dirais,
They are immersed in the real world, I would say,
ils sont pris en sandwich entre la machine sur laquelle ils s'exécutent et les
sandwiched between the machines on which they run and the people who use them,
humains qui les utilisent, ou les utilisateurs en général qui les utilisent.
or more broadly, between all users.
Et forcément, il y a un trou, un gap entre le
Naturally, there's a gap between the software—what we can know—and the machine's actual state,
logiciel, ce qu'on est capable de savoir, et la réalité de la machine d'une part,
on the one hand,
et la réalité de ce que veulent les humains de l'autre part.
and on the other hand, a gap between that and what humans actually want.
En particulier sur les grands logiciels qui ont de multiples parties prenantes,
In particular, for large-scale software with many stakeholders,
énormément d'utilisateurs qui
it has enormous numbers of users,
ont des métiers différents qui doivent interagir, ça donne évidemment des
whose professions differ widely yet require interaction,
exigences qui peuvent être contradictoires et qui sont extrêmement difficiles à
naturally leading to conflicting requirements,
prendre en compte pour le logiciel et qui sont source d'énormément de malentendus,
which are extremely difficult for software to accommodate—and a major source of misunderstandings,
qui sont une source terrible de bugs et d'évolutions dans les logiciels.
a terrible source of bugs and software evolution.
Donc trois grosses dimensions de complexité qu'il faut arriver à gérer.
So there are three major dimensions of complexity we must manage.
Le rôle de l'informatique qui a déjà beaucoup transformé la société et les sciences,
Computer science has already profoundly transformed society and the sciences,
mais amené encore.
yet its transformative role is still growing.
la transformer.
It will continue transforming them.
En particulier, si on fait une petite projection historique,
In particular, if we make a brief historical projection,
on voit que traditionnellement, en tout cas depuis plusieurs siècles,
we see that, traditionally—at least for several centuries—
les mathématiques étaient le langage des sciences,
mathematics served as the language of science,
c'est- à- dire le langage qui permettait de prendre des problèmes,
the language enabling us to take real-world problems,
de les mathématiser, de les décrire sous forme mathématique,
mathematize them, and describe them mathematically,
et d'en trouver des solutions qui étaient suffisamment bonnes pour s'avérer
then find solutions accurate enough to be predictive
prédictives vis- à- vis du monde réel.
about the real world.
On pense à la pomme de Newton et la
Think of Newton’s apple,
capacité à prévoir sa vitesse au moment où elle va tomber au sol.
and our ability to predict its speed precisely at the moment it hits the ground.
Malheureusement, les mathématiques ne peuvent régler que des problèmes relativement
Unfortunately, mathematics can only solve relatively simple problems,
simples, alors que le monde qui nous entoure est complexe.
whereas the world around us is highly complex.
Donc ce qu'on fait, c'est qu'on fabrique des modèles informatiques de ces
So instead, we build computational models of such problems,
problèmes- là, et on en
and implement them,
fait des modèles qui sont opérationnels,
making them operational—
c'est- à- dire qui vont nous permettre de faire des simulations et qui vont nous
that is, usable for simulations,
permettre de quelque part remplacer ces modèles mathématiques qui vont nous servir
thereby replacing traditional mathematical models in some sense,
donc à décrire une certaine réalité et à être prédictifs vis- à- vis de cette
to describe certain realities and make predictions about them.
réalité. On va pouvoir poser des questions au modèle et on va vérifier que ces
We can pose questions to the model,
questions- là ont les mêmes réponses ou une réponse suffisamment proche de la
then verify whether those answers match reality—or come sufficiently close to it.
réalité. Les systèmes les plus complexes qu'on produit sont eux- mêmes du logiciel.
The most complex systems we build are themselves software.
Donc évidemment, il vient assez spontanément l'idée d'utiliser du logiciel pour
So, obviously, the idea naturally arises to use software to
modéliser d'autres logiciels.
model other software.
Chaque auteur de logiciel développe finalement un modèle d'un aspect du monde réel.
Every software author ultimately builds a model of some aspect of the real world.
Alors ça va évidemment plus loin que ça,
Of course, this goes far beyond that,
puisque à partir du moment où on fait ça,
since the moment we do this,
en fait rapidement le modèle et le programme, le logiciel,
the model and the program—the software—rapidly converge,
va dans une certaine mesure supplanter la réalité ou la remplacer.
and the software will, to some extent, supplant or replace reality itself.
En prenant un exemple très très simple, pendant très très longtemps,
Take a very, very simple example: for a very long time,
quand on avait une somme d'argent,
when you had money,
c'était des pièces dans une tirelire. Aujourd'hui, depuis quelques
it was coins in a piggy bank. Today, for several decades,
décennies, c'est des bits dans la mémoire d'un ordinateur qui représentent ce que
it’s bits stored in a computer’s memory representing the balance in your bank account.
vous avez sur votre compte en banque.
It represents something—but at the same time, it *is* reality.
Donc ça représente quelque chose, mais en même temps, c'est la réalité.
That is, if those data were accidentally erased—I assure you this won’t happen,
C'est- à- dire si jamais par mégarde c'était effacé, je vous rassure,
but if it *were* erased,
ça ne va pas se produire, mais si c'était effacé, vous n'auriez plus d'argent.
you would truly have no money left.
Donc c'est bien que la
Thus, the notion of a bank account,
notion de compte en banque est aujourd'hui purement et simplement quelque chose qui
today, is purely virtual,
existe virtuellement dans la mémoire d'un ordinateur.
existing solely within a computer’s memory.
De ce point de vue, on voit que l'informatique et le logiciel vont avoir un impact
From this perspective, we see that computing and software will have a significant impact on the world,
significatif sur le monde, encore plus que tout ce qui s'est produit.
an impact greater than anything that has occurred before.
On est sur quelque chose d'exponentiel,
We are now in an exponential phase,
ça veut dire tout ce qui s'est produit dans le passé et rien du tout par rapport à
meaning everything that has happened so far is negligible compared to what will happen in the future,
ce qui va se produire dans le futur.
practically nothing at all.
Et donc en tant que chercheur en informatique,
Therefore, as a computer science researcher,
on est en première loge pour voir ces choses- là qui vont arriver et attirer
we are on the front line, observing these upcoming changes firsthand,
l'attention de la société et des pouvoirs publics sur les conséquences pour la
and drawing society’s and public authorities’ attention to their societal consequences.
société de ces évolutions qui sont inéluctables en général,
These developments are, in general, inevitable,
mais qu'on peut sans doute quand même essayer de guider dans des principes éthiques
yet we can still strive—guided by ethical principles—to steer them,
et en tout cas qui doivent être débattues au plus haut niveau.
and they must certainly be debated at the highest level.
Et je pense que c'est effectivement notre rôle d'au moins d'alerter les gens sur le
And I think it's indeed our role to at least alert people to
futur probable vers lequel on se dirige.
the probable future toward which we are heading.