Je recherche des ressources sur les modèles de conception et les principes des logiciels numériques, potentiellement mais pas nécessairement en mettant l'accent sur les approches orientées objet des codes numériques.
Je connais le texte, Writing Scientific Software: A Guide for Good Style , mais cela traite encore beaucoup de choses comme les problèmes de virgule flottante, comment et quand optimiser, etc.
Je cherche des informations sur la vue d' ensemble de la conception de codes numériques, pas sur tout ce qui concerne les algorithmes et autres.
J'espère qu'il y a des ressources pour cela, et il ne suffit pas de parcourir bibliothèque après bibliothèque, d'autant plus qu'il n'y a pas de guide pour faire les choses correctement en matière de conception, à part ma propre connaissance des bons idiomes et des bonnes pratiques en C ++.
(Ce n'est pas spécifique à une langue, mais s'il y a un contenu spécifique à une langue, je préférerais C ++.)
la source
Réponses:
Ayant développé un logiciel numérique depuis 20 ans maintenant, je trouve que nous avons probablement utilisé la majorité des modèles de conception décrits dans le livre du Gang of Four ( voir ici ). En fin de compte, les logiciels numériques ne sont que des logiciels complexes à grande échelle, il n'est donc pas surprenant que les mêmes considérations de conception s'appliquent que dans d'autres logiciels.
Il existe, bien sûr, un certain nombre de cas qui sont vraiment spécifiques aux algorithmes numériques (voir, par exemple, ici ), mais connaître l'ensemble "traditionnel" de modèles de conception est déjà un bon début.
la source
Je recommande ce Matthew G Knepley. Langages de programmation pour le calcul scientifique. arXiv preprint arXiv: 1209.1711, 2012 ( https://arxiv.org/pdf/1209.1711.pdf )
Je conseille également de regarder et de lire d'autres codes, par exemple triangle, PETSc, MoAB, deal.II, fenics et bien d'autres. Toutes les solutions ne fonctionneront pas pour vous, mais à la fin, faire face et apprendre des autres (développeurs expérimentés et codes réussis) est la meilleure leçon pour concevoir du code.
De plus, je pense qu'il vaut mieux se joindre à un projet existant et devenir contributeur ou développeur. Parfois, vous aimez lancer quelque chose de nouveau, mais vous devez avoir des arguments solides pour le faire.
la source