La science s'appuie sur la modélisation informatique - Alors, que se passe-t-il quand ça ne va pas?

De la découverte transformante de la pénicilline aux théories de la relativité et de la mécanique quantique, la science a progressé avec une vitesse ahurissante avant même qu'il y ait des ordinateurs. Une grande partie de ceci est due à la robustesse de la méthode scientifique: les résultats scientifiques sont validés en étant reproduits et étendus par d'autres scientifiques.

Mais la façon dont nous faisons de la science change - nous dépendons de plus en plus de modèles informatiques complexes pour comprendre la nature. Et il s'avère que ces modèles peuvent être presque impossibles à reproduire - ce qui signifie qu'une pierre de touche importante de la science est contestée. Alors, quelles sont les répercussions réelles de ce changement et que pouvons-nous y faire?

La science pré-moderne - connue sous le nom de «philosophie naturelle» - était empirique. La science empirique utilise les observations passées pour faire des prédictions sur l'avenir, qui peuvent ensuite être testées. Tycho Brahe, un astronome danois du 16ème siècle, a réussi à faire des observations précises et complètes du ciel de cette manière.

La science moderne est cependant théorique. La science théorique fait aussi des prédictions, mais elle les dérive de modèles mathématiques plutôt que d'observations antérieures. Pensez aux lois du mouvement d'Isaac Newton, telles que la loi inverse de la loi de la gravitation.

Par exemple, il y a une équation décrivant l'orbite de la Terre autour du soleil. Cette équation peut être utilisée pour construire un modèle d'ordinateur dans lequel vous pouvez juste brancher certaines variables et voir comment la solution change. Vous pourriez simplement insérer une date future et lire la position de la Terre à cette date. Vous pouvez également utiliser le même programme pour modéliser d'autres systèmes planétaires - tout est basé sur les mêmes mathématiques. Tout ce que vous avez à faire est de brancher différentes masses et diverses autres propriétés des corps impliqués.


graphique d'abonnement intérieur


De telles équations mathématiques sont excellentes lorsqu'elles sont disponibles - mais souvent elles ne le sont pas. Par exemple, nous savons qu'il n'y a pas d'équation simple qui résout le soi-disant "problème à trois corps», Qui décrit trois corps en orbite autour et influençant l'un l'autre par des forces gravitationnelles - comme la lune, la terre et le soleil.

Une grande partie de la science actuelle traite des systèmes encore plus compliqués, et manque également des solutions exactes. Ces modèles doivent être «computationnels» - décrivant comment un système change d'un instant à l'autre. Mais il n'y a aucun moyen de déterminer l'état exact à un moment donné dans le futur autrement qu'en «simulant» son évolution de cette manière. La prévision météorologique est un exemple familier; Jusqu'à l'avènement des ordinateurs dans les 1950, il était impossible de prédire le temps à venir plus rapidement qu'il ne l'était réellement.

La science actuelle consiste typiquement à concevoir un modèle mathématique qui décrit un système compliqué, puis à le transformer en une simulation computationnelle, et à exécuter la simulation pour faire des prédictions afin de valider le modèle.

Lorsque la modélisation échoue

La modélisation est utilisée dans tous les domaines scientifiques - allant de l'astrophysique à prévision climatique à la bioinformatique et à l'économie. Mais il y a augmentation du débat sur le fait que cette science est difficile à valider par la reproduction.

Il s'avère que décrire simplement des méthodes expérimentales en mots ne suffit pas. C'est en partie parce que les langues naturelles comme l'anglais sont tout simplement trop vagues pour décrire les calculs avec précision. Il y a, après tout, une raison pour laquelle les programmeurs utilisent des langages de programmation. L'un des plus grands défis dans le développement de logiciels est de convertir des exigences vagues en spécifications précises de comportement.

Les humains - même les scientifiques - sont après tout faillibles. Transformer n'importe quelle information dans un programme introduit presque invariablement des bugs en cours de route. Par exemple, de nombreux scientifiques dépendent d'outils d'exploration de données tels que des feuilles de calcul, conçus pour être faciles à utiliser et non pour être robustes. Il est très facile de simplement résumer la mauvaise plage de cellules dans une feuille de calcul, sans recevoir d'avertissement. C'était l'un des défauts méthodologiques dans un document sur lequel le Parti républicain américain a fondé ses politiques d'austérité.

De même un étude récente Sur les feuilles de calcul 15,770 rendues publiques au cours de l'enquête sur la société américaine Enron, il est apparu que 24% des feuilles de calcul contenant au moins une formule contenaient des bogues évidents, tels que l'addition de cellules vides.

En sciences naturelles, le Mars Climate Observer, une sonde spatiale lancée dans 1998 pour étudier le climat sur Mars, a été perdue un an plus tard parce qu'une partie du logiciel de contrôle a utilisé par erreur des unités impériales au lieu de métriques. Une autre étude de neuf mises en œuvre indépendantes de la même expérience géoscientifique - utilisant le même jeu de données, les mêmes algorithmes et le même langage de programmation - ont montré très peu d'accord sur les résultats obtenus.

De plus, même si le lecteur d'un document de recherche peut réussir à interpréter le sens précis de l'auteur, puis à le traduire sans faute en un programme, son exécution comporte toujours des pièges. Une classe de problèmes particulièrement délicate découle de la façon dont les ordinateurs traitent les nombres : bien qu'ils puissent manipuler des nombres entiers tels que 42 et -17 avec une précision parfaite, les techniques standard de manipulation de nombres réels tels que ??3.14 et ??2?1.414 ne permettent qu'une précision approximative. Ces approximations signifient que des manières apparemment équivalentes de calculer la même valeur peuvent donner des résultats différents.

Alors qu'est ce qui peut être fait? Si même les développeurs de logiciels experts ne peuvent pas produire de logiciels fiables, quel espoir y a-t-il pour les programmeurs amateurs comme les scientifiques?

Une ligne de travail consiste à produire des outils pour concevoir des langages de programmation «spécifiques à un domaine», chacun adapté à une classe particulière de problèmes, tels que le comportement des agents sur les marchés économiques ou la diffusion de médicaments entre les cellules. Ceux-ci ont pour but de faciliter la tâche aux spécialistes de décrire les calculs directement en termes familiers, plutôt que d'avoir à les coder indirectement dans un langage de programmation généraliste.

Une seconde approche vise à concevoir des «systèmes de types» plus expressifs mais toujours conviviaux pour les programmes. Cela faciliterait la détection d'erreurs «idiotes», telles que des cellules vides dans des feuilles de calcul, ou le mélange de valeurs dans différentes unités. Cependant, il ne peut pas exclure toutes les erreurs de logique. Une troisième ligne est de développer des bibliothèques de code utilisables pour l'arithmétique exacte, en évitant les problèmes d'approximation.

Il y a toutes les chances que ces approches puissent aider à résoudre le problème, ou au moins éliminer une partie du risque. Après tout, le monde a besoin de la science et les scientifiques ont besoin d'ordinateurs - ce n'est pas susceptible de changer de sitôt.

A propos de l'auteur

Jeremy Gibbons, professeur d'informatique, Université d'Oxford. Responsable du thème de recherche Langues de programmation.

Cet article a paru sur The Conversation

Livre connexe:

at Marché InnerSelf et Amazon