Chapter Content
Alors, bon, voilà... On va parler d'un truc un peu costaud, un peu... philosophique, on va dire. C'est l'idée de progrès, et comment on y arrive, tu vois?
En gros, plus on essaie de faire des trucs compliqués, plus il faut de pièces, de détails, dans ce qu'on construit. Imagine un pont, hein? Un petit pont au-dessus d'un ruisseau, c'est simple, quelques bases solides et ça roule. Mais si tu dois traverser un fleuve immense, là, c'est plus la même chanson! Il te faut plus de piliers, plus de câbles, plus de tout, quoi. Faut penser à tout, la dilatation thermique, le vent, les tremblements de terre... Bref, plus c'est dur, plus il y a de choses à prendre en compte, et donc plus il y a de pièces. C'est logique, non?
Et c'est vrai dans tout. Regarde un avion de ligne moderne, il a plus d'un million de pièces! Nos réseaux électriques, nos satellites... C'est bourré de trucs, de connexions, d'antennes, de panneaux solaires. Les voitures, c'est pareil, plein de technologies, de composants pour la sécurité, le confort, la performance... Un microprocesseur, c'est des milliards de transistors! Plus le problème est difficile, plus il y a de pièces, c'est comme ça.
Alors, on pourrait penser que, du coup, il faut tout savoir sur tout. Que pour construire un truc aujourd'hui, faut être super intelligent, connaître tous les détails. Un ingénieur qui construit un pont maintenant doit savoir beaucoup plus de choses qu'un ingénieur d'il y a deux cents ans, non? Logique.
Mais... comment on fait, en fait? Comment les humains peuvent créer des trucs aussi sophistiqués en si peu de temps? Comment on peut tout savoir, tout comprendre? On n'est pas devenus plus intelligents, hein. Le cerveau humain n'a pas changé depuis des lustres. Et on ne travaille pas plus dur non plus, soyons honnêtes.
En fait, le progrès technologique serait impossible si on devait connaître tous les détails de tout ce qu'on invente. La raison pour laquelle on avance, c'est que chaque génération commence avec une base plus avancée que la précédente. On n'a pas besoin de tout réinventer à chaque fois, on part de ce qui existe déjà. C'est un peu comme si on construisait une maison, brique par brique. On améliore, on affine ce qui existe déjà. C'est pas une question d'être plus malin ou d'avoir des meilleures idées, c'est un progrès automatique, inévitable, parce qu'on utilise le travail des autres comme point de départ. Et ça, c'est grâce à... l'abstraction.
En gros, on prend des choses compliquées, on les simplifie, on les rend plus faciles à utiliser. On met les détails de côté pour se concentrer sur l'essentiel. C'est ça l'abstraction.
Prends l'exemple des logiciels, des programmes informatiques. En cinquante ans, ça a fait un bond de géant. On peut faire la même chose avec beaucoup moins de lignes de code. Au début, c'était le code machine, le truc le plus compliqué qui existe. Des instructions binaires, des 0 et des 1, directement traitées par l'ordinateur. Imagine devoir dire à un robot de sortir d’un labyrinthe en code machine... Tu ne peux pas utiliser des mots comme "avance" ou "tourne à gauche". C'est juste des suites de 0 et de 1, un truc imbitable.
Le code machine, c'est le niveau d'abstraction le plus bas, le plus proche du microprocesseur. Et c'est hyper long, parce que chaque instruction est très basique. C'est comme essayer de construire une maison avec juste des matières premières, au lieu d'utiliser des éléments préfabriqués.
Un cran au-dessus, il y a le langage d'assemblage. C'est un peu comme une version "lisible" du code machine. On utilise des symboles plus faciles à comprendre, ce qui rend la programmation plus rapide. On peut imaginer que le langage d'assemblage, c'est une interface qui se pose sur le code machine. C'est plus facile de programmer, parce que pour chaque "levier" que tu actionnes en langage d'assemblage, plusieurs leviers sont actionnés en code machine.
Ensuite, on a la programmation procédurale. Là, on peut donner des instructions à l'ordinateur en utilisant des procédures, des fonctions. C'est comme des morceaux de code d'assemblage préfabriqués. On peut penser la programmation en termes de modules réutilisables. Nos matériaux de construction sont pré-assemblés, c'est plus simple.
Quand on construit des logiciels, plus c'est compliqué, plus il faut des grandes équipes et une bonne communication. Il faut gérer différentes exigences, explorer plus de possibilités, tester plus de prototypes... La programmation procédurale devient vite trop lourde pour certaines applications modernes. Et là, la génération suivante arrive avec la programmation orientée objet (POO). C'est encore un niveau au-dessus. On oublie les détails bas niveau de la programmation procédurale et on utilise des objets, des composants réutilisables qui encapsulent des données et des comportements.
Avec la POO, nos pièces de construction sont encore plus préfabriquées. On a des concepts comme l'héritage, le polymorphisme, l'encapsulation... Ça rend la création de logiciels plus stratégique et plus créative, parce qu'on n'est plus coincé dans les détails. On peut se concentrer sur l'efficacité, la qualité, l'évolutivité, la durabilité. La POO a rendu la programmation plus rapide et plus accessible.
Mais pourquoi s'arrêter là? Les gens veulent des applications web dynamiques, des sites de vente en ligne, des réseaux sociaux, des outils d'apprentissage, des plateformes de jeux... Les langages de script sont devenus indispensables. C'est là qu'on a des trucs plus simples, plus lisibles, qui s’occupent de la gestion de la mémoire et de tout un tas de détails techniques. La communauté et les ressources en ligne sont énormes, ce qui permet un développement très rapide. On gagne en abstraction, et on peut développer encore plus vite.
Et au plus haut niveau d'abstraction, on a les interfaces visuelles et audio. L'interface graphique (GUI) masque les détails de l'interaction avec la machine en proposant des représentations visuelles des données et des fonctions. Il existe des outils de "glisser-déposer" pour assembler des logiciels. Et avec l'intelligence artificielle, on peut même faire du développement sans code. Même les personnes handicapées peuvent écrire du code avec des commandes vocales!
Aujourd'hui, on peut faire un prototype d'une application en quelques semaines. L'organisation du travail n'est plus du tout la même qu'il y a cinquante ans. Des personnes qui ne sont pas des experts techniques jouent un rôle essentiel dans la création des logiciels. La frontière entre les pros du technique et ceux qui ne le sont pas s'estompe grâce au niveau d'abstraction des outils de développement.
Du coup, on peut résoudre des problèmes bien plus complexes qu'avant. On peut analyser des masses de données énormes, construire des machines qui simulent une forme d'intelligence, créer des modèles climatiques, étudier les planètes lointaines, connecter les gens du monde entier en visioconférence.
Ce qui a commencé comme une petite expérience est devenu un pilier de notre économie. Les logiciels facilitent la collaboration et la connexion humaine à une échelle sans précédent. Et tout ça, c'est grâce à l'abstraction. Chaque génération a eu les moyens de créer des logiciels plus facilement que la précédente, et donc de résoudre des problèmes plus difficiles. De gérer et de contrôler un nombre croissant de pièces nécessaires pour résoudre ces problèmes.
L'abstraction ne supprime pas les détails, elle les englobe dans des constructions de niveau supérieur, ce qui permet d'actionner de nombreuses pièces avec moins de leviers. L'abstraction rend le progrès inévitable, parce qu'elle pousse l'ingéniosité humaine vers l'avant en regroupant les détails et en créant des interfaces. Ces interfaces sont le point de départ de la génération suivante.
Quand on regarde autour de nous, et qu'on voit des gratte-ciel, des satellites, des supercalculateurs, des trains à grande vitesse, des centrales nucléaires, des smartphones, des ordinateurs, des implants biomédicaux, on a du mal à imaginer comment les humains ont pu créer des choses aussi sophistiquées. Le fonctionnement interne de ces objets est très complexe, il nécessite une coordination et un timing précis, et ils sont plutôt fiables. Mais quand on comprend que chaque génération a juste besoin d'utiliser la génération précédente comme point de départ, on comprend comment le progrès se produit. Les constructeurs n'ont pas besoin de savoir comment tout fonctionne, ils ont juste besoin de comprendre leur niveau d'abstraction actuel.
Cela signifie que la somme de connaissances concernant le fonctionnement interne des choses n'est pas détenue par une seule personne aujourd'hui. Ces connaissances ont été masquées par l'augmentation constante des niveaux d'abstraction que chaque génération ajoute à ses créations. C'est vrai dans tous les domaines de l'innovation humaine. Les humains d'aujourd'hui ne sont pas plus intelligents que leurs ancêtres. Nous ne travaillons pas plus dur. Nous n'en savons même pas beaucoup plus. Le progrès humain se comprend mieux comme une histoire d'abstraction croissante et de progrès amorcé.
Maintenant, on parle d'abstraction physique. On pense souvent à l'abstraction en termes de pensée, de concepts. On crée des catégories, on classe les choses, on simplifie le monde pour le comprendre. Mais l'abstraction peut aussi être physique. On utilise des choses préfabriquées comme point de départ, on assemble des pièces. C'est comme l'esprit qui regroupe les choses en catégories.
Personne n'aurait utilisé une hache en pierre s'il avait dû tenir la lame contre le manche tout en la balançant. Le lien utilisé combine la lame et le manche en un seul objet, évitant à l'utilisateur d'avoir à se soucier de leur fixation. Les choses ne sont utilisables que si l'effort nécessaire pour les utiliser est inférieur à celui qui serait nécessaire si chaque pièce devait être coordonnée manuellement.
Prends l'exemple de la voiture. Si les conducteurs devaient coordonner manuellement le moteur à combustion interne, le châssis et la transmission, personne ne pourrait conduire. Les interfaces mises à la disposition du conducteur comportent beaucoup moins de détails que le fonctionnement interne de la machine. Même le levier de vitesses d'une transmission manuelle est une abstraction physique. Il accomplit ce que font toutes les abstractions : il fournit une interface qui diminue le nombre de leviers qu'il faut actionner pour accomplir une tâche. Avec un levier de vitesses, un conducteur peut sélectionner le rapport souhaité en déplaçant uniquement un levier et un embrayage, éliminant ainsi la nécessité d'enclencher physiquement chaque rapport à l'intérieur de la boîte de vitesses. Les positions de vitesse clairement marquées sont une interface qui permet au conducteur de faire une sélection sans avoir à naviguer dans une série de détails internes. Bien sûr, la transmission automatique pousse l'abstraction physique au niveau supérieur, nous permettant d'actionner les vitesses sans trop nous soucier de leur fonctionnement interne.
Tout comme nous combinons mentalement des choses disparates en catégories uniques, le levier de vitesses représente une construction physique unique qui englobe un ensemble de détails physiques internes, tandis que la transmission automatique pousse cela encore plus loin (grâce à une génération ultérieure). La version physique de l'abstraction qui accompagne l'ingéniosité humaine est un élément essentiel du progrès humain.
Les meilleures pratiques mises en œuvre dans un secteur ou une profession sont structurées autour des abstractions physiques que nous créons. Le technicien IRM ne coordonne pas la magnétisation, l'excitation des impulsions RF, la détection du signal, l'acquisition des données et la reconstruction de l'image. Le barista ne chauffe pas manuellement l'eau, ne crée pas de pression, ne broie pas les grains, n'extrait pas les saveurs et ne produit pas de vapeur. L'ouvrier d'asphalte ne se procure pas de pierres, de gravier et de sable, et n'expérimente pas non plus avec des liants. Les professionnels de n'importe quel domaine opèrent au-dessus du niveau des détails précédemment élaborés via l'abstraction physique. Cela signifie que nos notions de connaissance et de compétence sont pleinement alignées sur les abstractions physiques, car ce sont les points de départ que les gens utilisent pour faire fonctionner les systèmes dans leur domaine.
Tout le progrès humain est une histoire qui fait avancer l'humanité sans exiger plus de connaissances ou d'efforts que la génération précédente. Mais aussi automatique et inévitable que soit ce progrès, la création d'interfaces nécessite une réflexion délibérée. La création d'abstractions physiques est un acte intentionnel qui nécessite une longue et mûre réflexion. Les abstractions physiques créées par les humains ont historiquement été rendues possibles par la conception.
En gros, on crée des abstractions physiques en concevant des choses. On décide consciemment quelles pièces inclure, comment les connecter, comment exposer leur fonctionnement à travers une interface. On crée des interfaces pour simplifier l'utilisation des objets. C'est un peu comme la programmation procédurale qui regroupe des morceaux de code machine en syntaxe et en sémantique de niveau supérieur. Il faut réfléchir, décider comment connecter les pièces pour créer un niveau supérieur. La conception crée des abstractions physiques en regroupant le fonctionnement interne d'un objet. Ce regroupement permet de coordonner plus facilement les fonctionnalités disparates d'un système de l'extérieur.
On voit bien que l'abstraction informationnelle et l'abstraction physique sont liées. La réflexion utilisée dans la conception nous amène à remarquer les caractéristiques communes de certaines choses disparates. Le levier de vitesses fonctionne parce qu'il est connecté à un ensemble de pièces internes de niveau inférieur qui partagent un but commun. Une telle construction physique a été réalisée en utilisant notre capacité mentale à remarquer des schémas et à regrouper ces schémas en une forme de niveau supérieur. L'abstraction physique est le reflet des abstractions conscientes que nous faisons avec notre esprit.
On voit bien que le progrès technologique se fait grâce à l'abstraction, et que l'abstraction se réalise par la conception. Mais la conception a un coût, car on ne peut pas concevoir sans voir comment les pièces internes d'un système se heurtent.
Concevoir, c'est raisonner sur les liens entre les niveaux d'abstraction. C'est pour ça que la conception dépend du déterminisme. La conception ne fonctionne que si on peut évaluer comment les résultats d'un système sont produits, au sens déterministe du terme. On ne peut pas regrouper le fonctionnement interne d'une transmission dans un levier de vitesses de niveau supérieur si on ne peut pas voir comment les différents engrenages interagissent. On ne peut pas regrouper le langage C dans des modules C++ si on ne peut pas voir comment le langage C fonctionne explicitement. C'est la base de toute justification de la conception. Si on ne pouvait pas raisonner sur la façon dont chaque pièce interne interagit pour produire des résultats, nos conceptions ne seraient guère plus que des conjectures et des suppositions.
Le déterminisme concerne les systèmes ou processus dont le comportement est entièrement prévisible en fonction de leurs entrées et des règles qui régissent leur fonctionnement. Si vous donnez les mêmes entrées initiales à un système déterministe encore et encore, il produira toujours les mêmes sorties. Cette notion de répétabilité, de prévisibilité et d'absence d'aléatoire est intégrée à la notion de conception. La conception part du principe qu'il existe un ensemble d'étapes explicites qui vont de l'entrée à la sortie. Si ce n'était pas le cas, alors le choix de pièces et de connexions spécifiques serait futile.
C'est important de distinguer les systèmes déterministes des non déterministes. Un système non déterministe est un système dont le comportement n'est pas entièrement prévisible. Contrairement aux systèmes déterministes, qui produisent la même sortie pour un ensemble d'entrées donné à chaque fois, on peut s'attendre à ce que les systèmes non déterministes produisent des comportements ou des résultats différents, même si on leur fournit les mêmes entrées et les mêmes conditions initiales. Le même ensemble de voitures et de conducteurs, conduisant à la même vitesse, arrivant à une intersection sans panneaux d'arrêt ni feux de circulation, ne produira pas un flux de circulation purement prévisible. Il y aura une grande variation dans la séquence des mouvements et le flux des véhicules. Un système qui produit des résultats différents, bien qu'on lui fournisse les mêmes entrées, ne peut pas être conçu.
Certains lecteurs pourraient s'arrêter ici, en proclamant que l'exemple précédent doit être faux. Car nous savons que les systèmes de circulation peuvent en effet être conçus, et ils ajoutent évidemment un comportement prévisible au flux de la circulation. Mais il ne s'agit pas de concevoir la circulation elle-même, il s'agit de concevoir un cadre extérieur qui régit un système non déterministe (la circulation). Les systèmes de circulation actuels ne tentent pas de contrôler les interactions spécifiques entre les véhicules, ils se contentent de placer des limitations externes qui s'appliquent à tous les véhicules. C'est un peu comme un gouvernement qui crée des cadres réglementaires qui régissent les marchés libres. Toute tentative de conception du système lui-même, comme dicter les interactions spécifiques entre les voitures ou entre les clients et les vendeurs, peut interférer avec le fonctionnement d'un système non déterministe.
Le non-déterminisme est directement lié à la difficulté d'un problème. De même qu'on ne peut pas concevoir (en interne) un système non-déterministe, les problèmes difficiles ne peuvent pas être résolus par le déterminisme. Les problèmes difficiles, comme nous le verrons, sont des problèmes qui nécessitent des essais et des erreurs et des heuristiques pour être résolus. Un problème difficile n'est pas quelque chose de plus difficile par rapport à des problèmes simples, mais plutôt une situation catégoriquement distincte qui exige un type de solution très différent.
Pour comprendre à quel point une solution doit être différente lorsqu'il s'agit de résoudre des problèmes difficiles, il suffit de regarder la nature. Comme nous l'avons déjà dit, les solutions de la nature résolvent les problèmes les plus difficiles de tous. Ces problèmes naturellement difficiles sont présentés par les environnements naturels, et sont résolus par des objets qui ne convertissent pas les entrées en sorties en utilisant un mélange simpliste de pièces connectées de manière déterministe. La nature résout ses défis grâce à la réalisation de structures émergentes. Cela signifie que la nature ne crée pas de solutions qui ont des étapes bien définies entre les entrées et les sorties. Une telle construction ne pourrait pas résoudre les problèmes naturellement difficiles, car les situations de la nature sont faites d'innombrables facteurs et interactions qui les définissent. Il ne s'agit pas de collecter suffisamment de règles pour tenir compte de la complexité de la nature ; en fait, il ne s'agit pas du tout d'un jeu de règles. Même si nous pouvions façonner un objet avec une règle pour chaque contingence possible, il ne parviendrait pas à résoudre un problème difficile.
Considérer les problèmes difficiles comme des versions plus difficiles des systèmes basés sur des règles, c'est comme essayer de décrire la mécanique quantique à l'aide de la mécanique classique. Une description classique n'est pas du tout proche de ce qui se passe, car le domaine quantique n'est fondamentalement pas classique. Il ne s'agit pas d'une question de degré ou d'approximation, il s'agit d'une chose entièrement différente.
Les solutions de la nature recèlent une véritable complexité, ce qui signifie que leurs résultats ne sont pas le produit d'interactions additionnées ou d'un chemin de procédures séquentielles. La nature crée des configurations de matière qui produisent les résultats nécessaires d'une manière entièrement différente du traitement basé sur des règles. Nous examinerons ce mécanisme différent plus tard, mais pour l'instant, il est essentiel de comprendre que les solutions de la nature sont fondamentalement différentes des systèmes simples produits par les humains. Non seulement les solutions de la nature ont beaucoup de non-déterminisme, mais elles ont aussi besoin de ce non-déterminisme pour fonctionner comme elles le font.
Prenez la reconnaissance faciale, une prouesse réalisée naturellement par les humains et les systèmes d'IA avancés. Ce qui fait de la reconnaissance faciale un problème difficile, ce n'est pas seulement le nombre de facteurs liés au phénomène, mais aussi le fait que le mot "résoudre" signifie quelque chose de différent de notre cadrage déterministe habituel. En déterminisme, résoudre signifie ce que cela signifie en mathématiques, c'est-à-dire trouver une réponse spécifique, définitive ou un ensemble de réponses. Mais les systèmes non-déterministes sont plus proches de la notion de réponses probabilistes, avec un certain degré de justesse ; une version plus douce de ce que nous voyons en déterminisme.
Mais si cette analogie de douceur est plus proche de l'esprit du non-déterminisme, elle le présente toujours comme une version approximative de ce que nous voyons dans les systèmes déterministes. Par exemple, la plupart des approches informatiques qui cherchent une solution à des problèmes informatiquement difficiles utilisent des techniques comme l'optimisation pour trouver un résultat satisfaisant ou acceptable qui répond à certains critères ou objectifs. Mais, comme je le soutiendrai plus tard, l'idée que le non-déterminisme est une version approximative ou de second ordre du déterminisme est incorrecte.
La résolution qui se produit dans la complexité n'est pas une solution plus faible ou plus approximative, mais plutôt un type de solution complètement différent. De plus, le type de solution trouvé dans la complexité est de loin plus puissant et réaliste que tout ce qu'une solution précise et déterministe pourrait être. La notion même d'approximation n'est qu'un autre sous-produit d'une réflexion incorrecte sur les choses complexes, à travers le prisme de la simplicité. Les véritables solutions aux problèmes difficiles ne sont pas approximatives, elles calculent directement la réponse nécessaire en utilisant une notion fondamentalement différente de l'informatique. La distinction radicale entre l'exécution d'un calcul mathématique et la résolution d'un problème réel sera exposée plus tard.
L'absence de mécanismes causaux au cœur de la complexité exclut toute chance que la conception puisse produire le type de solutions qui rendent la complexité gérable. Il n'y a pas de paquets qui peuvent être créés pour exposer des interfaces connectées de manière déterministe aux utilisateurs. La dépendance de la conception au déterminisme signifie que la conception ne peut trouver des solutions qu'à des problèmes catégoriquement simples.
Cela nous amène à un carrefour critique posé par notre approche historique de la résolution des problèmes en construisant des choses : 1) Nous devons créer des abstractions physiques pour progresser, 2) la création d'abstractions physiques a toujours été faite par la conception, 3) la conception ne peut pas résoudre les problèmes difficiles, et 4) les problèmes difficiles sont ce que nous devons maintenant résoudre avec les choses que nous construisons.
La façon dont nous créons actuellement des abstractions physiques va bientôt prendre fin. La conception ne peut pas créer les choses dont nous avons besoin pour construire des solutions. La complexité inhérente aux situations auxquelles nous sommes maintenant confrontés exige quelque chose que la conception ne peut pas fournir. Nous ne pouvons pas raisonner sur les pièces et les connexions, car le mécanisme par lequel les solutions de la nature résolvent les problèmes est intrinsèquement différent.
Il a toujours été une sorte de concrétisation déplacée de parler de la nature comme si elle était une machine déterministe. Parfois, c'est simplement une façon naïve de regarder le monde, d'autres fois, cette transgression se manifeste dangereusement dans la société et la politique. Mais maintenant, la notion que la nature est semblable à une machinerie basée sur des règles entrave directement le progrès. Seule une reformulation radicale de ce que signifie construire des choses permettra de rendre l'avenir gérable.
Le changement fondamental de classe de problèmes, et les solutions nécessaires pour les résoudre, sous-tend le changement philosophique nécessaire pour fonctionner efficacement à l'ère de la complexité. Le défi n'est pas simplement d'accepter la dégradation de la compréhension causale, mais de redéfinir nos concepts de connaissance, de compétence et notre approche de l'innovation humaine. Nous devons construire différemment.
Ne pas pouvoir continuer à progresser par le biais de la conception n'annule pas le fait que l'abstraction est nécessaire au progrès. Un problème plus difficile ne peut pas être résolu en reliant simplement plus de pièces dans un objet différent. Les pièces doivent être regroupées en constructions de niveau supérieur pour que la génération suivante puisse les utiliser. C'est ainsi qu'un grand nombre de pièces sont placées correctement dans des objets plus complexes. Il est trop exigeant en termes de calcul d'organiser des milliers ou des millions de pièces individuellement, délibérément et avec la bonne coordination. Les pièces de niveau inférieur doivent trouver la cohésion informationnelle nécessaire pour résoudre le problème d'un niveau supérieur, et l'abstraction est la façon dont cette cohésion est réalisée.
C'est vrai pour toute notion de progrès. Considérez comment l'esprit humain crée des abstractions pour comprendre notre monde. Nous ne pouvons pas naviguer dans la vie sans placer ce que nous voyons et entendons dans des entités de niveau supérieur. Si nous ne pouvions pas catégoriser les choses comme des menaces ou des opportunités, des amis ou des ennemis, de la nourriture, du danger, un abri, etc., alors nous ne pourrions pas survivre. En créant des abstractions mentales dans l'esprit, qui englobent des choses superficiellement différentes dans des catégories uniques, nous réduisons considérablement la charge cognitive nécessaire pour se déplacer dans la vie.
Cette capacité à repérer des liens entre différentes choses s'étend à toutes nos innovations. Tout, des nouvelles philosophies aux nouvelles technologies, naît parce que nous pouvons lier à la fois l'information et les choses physiques en de nouvelles entités. C'est l'abstraction qui rend les défis difficiles réalisables en termes de calcul, car l'abstraction est ce qui produit de nouvelles structures informationnelles et physiques qui calculent, sans avoir besoin d'une correspondance un à un entre le détail d'un problème et la procédure d'une solution. C'est l'abstraction qui organise les choses de telle sorte que la coordination interne nécessaire des pièces puisse tenir compte de la multitude de facteurs à l'intérieur des défis plus difficiles. Bref, il n'y a pas de progrès sans abstraction.
C'est aussi vrai pour la nature que pour les humains. La nature progresse grâce à son processus de changement et de développement au fil du temps. Les solutions de la nature résolvent continuellement des problèmes contre des facteurs de stress environnementaux changeants. Si nous prenons du recul et que nous regardons l'innovation humaine dans son ensemble, il s'agit d'un problème résolu par la nature, puisque les humains sont des organismes qui interagissent en masse pour résoudre des problèmes. Mais en ce qui concerne nos inventions spécifiques, les humains créent leurs nouvelles abstractions par la conception, comme nous l'avons déjà dit. Les pièces qui sont assemblées le sont délibérément, en utilisant des informations causales sur la façon dont ces pièces interagissent. Ce ne peut pas être ainsi que la nature crée ses abstractions. La nature n'utilise pas un raisonnement conscient pour lier des pièces en constructions de niveau supérieur. Et pourtant, la nature résout des problèmes qui sont bien plus difficiles que tout ce que l'homme aborde avec ses ponts et ses moteurs de fusée.
Cela pose une question essentielle. Si le progrès par l'abstraction est une propriété universelle, hébergée par tout système qui évolue pour résoudre des problèmes plus difficiles, comment la nature crée-t-elle ses abstractions ?
L'abstraction physique, dans les deux cas, est toujours le regroupement de fonctionnalités en groupes de niveau supérieur et l'exposition d'une interface, mais le regroupement dans la nature n'est pas un agrégat conçu de manière déterministe, c'est une manifestation statistiquement automatique de la matière. Si tout cela vous semble trop vague, soyez assurés que le reste de ce livre décrira ce que je veux dire. Mais ce qui compte à ce stade, c'est l'admission que les abstractions physiques de la nature, bien qu'essentielles pour le progrès, ne sont pas conçues. Il n'y a pas d'effort conscient de la nature pour choisir quelles pièces et interactions constituent un regroupement, et donc l'abstraction dans la nature doit avoir un mécanisme fondamentalement différent.
Cela soulève la question : comment la nature "sait-elle" quelles pièces combiner en constructions de niveau supérieur si elle ne peut pas raisonner sur les pièces à inclure et sur la façon de les connecter ? Comment la nature crée-t-elle ses regroupements ? Comment le processus aveugle de la sélection naturelle peut-il repérer les similitudes qui relient un niveau de matière au suivant ?