![]() |
L'Art de la programmation scientifiqueFoire Aux Questions |
![]() |
© 2003-2004 Piet Hut et Jun Makino | Retour à la page d'accueil |
Notre but à long terme est d'établir une communauté de professionnels et amateurs, intéressés par la diffusion de la science selon des moyens pratiques, selon une méthodologie librement inspirée par les différents projets Open-Source tels que le célèbre projet Linux.
La science est d'ailleurs peut-être bien le plus ancien et le plus grand projet open-source de l'histoire. Depuis l'époque de Galilée, plus d'une douzaine de générations de scientifiques ont travaillé ensemble pour produire un corps de connaissances publiques sur le monde naturel qui est unique à la fois dans sa précision et dans le fait qu'il transcende les barrières traditionnelles des cultures et religions.
Le projet ACS ambitionne de rallumer l'esprit des Lumières, où toute personne éduquée était invitée à rejoindre les scientifiques professionnels dans leurs investigations. Nous avons simplement échangé les salons traditionnels pour le web, et les expériences sur table pour des ordinateurs portables.
Un moyen rapide de commencer est de lire notre ouvrage plus ancien Moving Stars Around. Vous y trouverez une introduction complète, en 250 pages, illustrée avec des exemples de code en C++. Depuis les intégrateurs très simples jusqu'au schéma de Hermite, les lecteurs seront invités à effectuer des expériences d'effondrement froid, à étudier la formation d'étoiles doubles et à adapter les exemples de code à leurs propres besoins.
Une approche plus détaillée du travail avec des codes N-corps peut être trouvée dans notre série de tomes sur Kali, puisque nous y développons un environnement logiciel de tout premier plan pour la simulation des systèmes stellaires denses. Ici aussi, nous commençons de zéro, depuis les intégrateurs simples pour le problème à deux corps, jusqu'à un large éventail d'intégrateurs d'ordre supérieur pour les problèmes N-corps généraux.
Étant donné que notre langage de prédilection, le Ruby, n'est probablement pas familier à nos lecteurs, les volumes sur Kali introduisent ce langage en même temps que les notions de mathématiques, physique et informatique nécessaires à l'étude du problème à N corps.
Ruby combine la flexibilité d'un langage de script avec la puissance d'un langage entièrement orienté objet. Pour un projet logiciel de grande envergure, tel que le développement de Kali, il est essentiel d'utiliser l'encapsulation de données telle que permise par le C++. Toutefois, en développant du nouveau code il est impossible de savoir à l'avance quelle structure de données sera la plus adaptée. Le prototypage rapide, qui est presqu'impossible en C++, est tout aussi nécessaire pour développer du code qui soit à la fois bien pensé et facile à lire, et non englué dans un lourd héritage de décisions passées.
Non, le langage Ruby en lui-même est trop lent pour des simulations scientifiques sérieuses. Toutefois, il est acceptable de remplacer quelques lignes critiques en temps de cacul par du code C, accélérant ainsi le code Ruby originel à une vitesse approchant celle d'un code C sans trop de problème. Voir Vol. 6: Speedup pour des exemples détaillés.
La plupart des ouvrages
scientifiques résument l'état actuel de la
connaissance dans un domaine « après que la
poussière soit retombée ». Les
étudiants se voient présenter un cheminement
logique clair qui présente peu de ressemblance avec le
processus historique d'essais et d'erreurs qui sous-tend toute
découverte scientifique, grande ou petite. En comparaison,
il y a peu d'information disponible qui enseigne aux
étudiants à faire des erreurs et à
apprendre d'elles. Notre but est donc au contraire de
présenter l'essentiel de la connaissance tacite qui est
essentielle au lancement d'un projet de recherche en science
calculatoire.
Initialement, nous pensions
être capables de présenter notre série
d'ouvrages en dix volumes. Cependant, lorsque nous avons
achevé notre premier tome, Moving
Stars Around, et que nous
l'avons publié sur le web en octobre 2003, nous avons appris
deux leçons importantes :
1) avant de commencer à expliciter la connaissance
implicite, on n'a aucune idée de l'étendue
réelle de sa connaissance ; 2) quand on commence ce travail,
on apprend énormément,
augmentant l'étendue de ses connaissances au fur et
à mesure qu'on les met par écrit. Nous
considérons maintenant que plusieurs dizaines de volumes
constituent une estimation plus réaliste, et encore ne
parlons-nous ici que de la série Kali.
Nous avons emprunté
le nom au sanskrit kali,
signifiant sombre,
comme dans l'expression kali
yuga, l'ère des
ténèbres dans laquelle nous sommes actuellement
selon la mythologie hindoue. Le même mot apparaît
dans le nom de la déesse hindoue Kali,
décrite comme noire. Le terme sombre
semblait approprié
pour notre projet, puisque nous nous focalisons sur les aspects tacites
de la connaissance qui n'ont jamais été mis en
lumière jusque là et qui ne peuvent probablement
pas être présentés par une
série d'affirmations claire et logique. Nous pensons que nos
dialogues sont plus à même de transmettre
l'infinie variété de nuances de la connaissance,
moins formelles et moins claires, qui accompagnent toute entreprise.
Et comment ! vous êtes notre cible privilégiée. Pour tout dire, nous avons écrit ces ouvrages avec une version rajeunie de nous-même en tête. Nous espérons que les textes et codes présentés ici vous seront utiles pour votre recherche personnelle. Au-delà, nous espérons que vous contribuerez vous-même à cette œuvre par vos additions et variantes : vous êtes invités à nous contacter, et autant que notre temps le permettra nous tâcherons de répondre à chacun d'entre vous. De plus, vous serez en mesure de trouver des annonces d'écoles d'été et autres activitées liées à l'ACS sur notre page d'actualités ("What's New?").
Nous vous encourageons également à former vos propres groupes de support, dans lesquels vous partagerez vos expériences de travail avec le matériel ACS. Vous aurez bien plus de temps entre vous pour répondre aux questions et suggestions usuelles que nous ne le pourrons si nous répondons individuellement à chacun d'entre vous. Et plus vos collaborations seront sérieuses, plus nous serons motivés pour vous aider à implémenter les grandes suggestions que vous ne manquerez pas de nous proposer.
Oui, si vous avez un quelconque intérêt pour les systèmes stellaires denses. Que vous soyez un observateur ou un théoricien, à partir de 2005 le projet Kali vous donnera les outils pour lancer des simulations dans un environnement agréable. Notre présentation est conçue pour être auto-contenue, sans présumer de connaissances préalables au-delà de l'astrophysique de base. Si vous trouviez qu'il manque quoi que ce soit à ce propos, veuillez nous contacter.
Bien sûr ! Nous
espérons grandement que vous
téléchargerez notre logiciel, et explorerez les
paradis virtuels sur votre ordinateur, de la même
façon que vous explorez les paradis réels avec
votre télescope. Nous avons tenté de
réaliser une présentation auto-contenue. De plus,
nous continuerons à ajouter des explications et à
fournir plus de pointeurs vers d'autres sources de savoir pour
compléter l'information d'arrière-plan, autant
qu'il sera nécessaire.
Si vous trouvez que des points cruciaux ne sont pas encore clairement expliqués, ou manquent, vous êtes invité à nous le faire savoir. Nous ne pourrons peut-être pas trouver le temps de vous répondre et de vous remercier individuellement, mais soyez assuré que vos commentaires seront grandement appréciés.
Comme nous sommes encore dans
la phase initiale de mise en place du projet ACS, nous portons
principalement notre attention sur l'écriture d'une
quantité suffisante de volumes pour pouvoir présenter un
environnement de simulations N-corps totalement opérationnel.
Nous pensons achever cette phase initiale au cours de
l'année 2005. À partir de là, il y
aura de plus en plus d'opportunités pour nous rejoindre dans
notre ambition de produire un laboratoire d'astronomie
virtuelle.
Les différents
domaines pour le développement logiciel iront de domaines
pointus dans l'astronomie calculatoire et les méthodes
numériques juqu'aux domaines généraux
des graphismes et interfaces utilisateurs, ainsi que la
parallélisation de code.
En outre, nous aurons besoin de beaucoup d'aide pour porter notre
environnement sur un grand nombre de plate-formes et de
systèmes.
Au fur et à mesure que notre projet grandira, nous aurons besoin de volontaires pour répondre aux questions courantes, et pour aider les débutants à démarrer. De surcroît, il serait très appréciable de diposer de traductions de nos textes en d'autres langues que l'anglais.
Si vous pensez être en mesure de vous impliquer sérieusement pour nous aider dans l'un de ces domaines, quel qu'il soit, merci de nous contacter.