45 votes

La liste de lecture pour programmeur scientifique

Je suis en train de devenir un scientifique programmeur. J'ai assez de fond en Mathématiques et en Stat mais plutôt manquent d'expérience en matière de programmation. Je l'ai trouvé très difficile à apprendre comment utiliser un langage de programmation scientifique, car la plupart de référence pour les SP sont proches de trivial.

Mon travail implique des statistiques et de la modélisation financière et aucun avec la physique du modèle. Actuellement, j'utilise Python largement avec numpy et scipy. Fait R/Mathematica. Je sais assez de C/C++ pour lire le code. Aucune expérience en Fortran.

Je ne sais pas si c'est une bonne liste de la langue pour un scientifique programmeur. Si cela est, ce qui est une bonne liste de lecture pour l'apprentissage de la syntaxe et de modèle de conception de ces langues dans les scientifiques paramètres.

36voto

Tim Points 4953

À un moment donné, vous aurez besoin de l'arithmétique en virgule flottante. Il est difficile de bien le faire, moins difficile de le faire avec compétence et facile de le faire mal. Ce papier est une lecture incontournable:

Ce que tout informaticien devrait savoir sur l'arithmétique en virgule flottante

25voto

Je recommande absolument

De scientifiques et d'ingénieurs C++: Une Introduction avec des Techniques de pointe et des Exemples par Barton et Nackman

Ne soyez pas rebutés par son âge, il est excellent. Recettes ou numérique dans la langue de votre choix (tant que c'est en C,C++ ou Fortran) est compendious, et excellent pour l'apprentissage à partir de, pas toujours les meilleurs algorithmes pour chaque problème.

J'aime aussi

En parallèle du Calcul Scientifique en C++ et MPI: UNE Approche Harmonieuse à des Algorithmes Parallèles et leur mise en Œuvre par Karniadakis

Le plus tôt vous commencer le calcul parallèle le mieux.

12voto

Shane Points 40885

Ma première suggestion est que vous regardez le top 5 des universités pour votre domaine spécifique, regardez ce qu'ils sont l'enseignement et que les professeurs sont de l'aide pour la recherche. C'est la façon dont vous pouvez découvrir la langue ou de l'approche.

Également avoir un coup d'oeil à ce stackoverflow question ("pratiques-pour-la programmation-dans-un-scientifique-de l'environnement").

Vous êtes en train de faire de la statistique/modélisation des finances? J'utilise R dans ce domaine moi-même, et il est rapidement devenu le standard pour l'analyse statistique, en particulier dans le domaine des sciences sociales, mais dans la finance (voir, par exemple, http://rinfinance.com). Matlab est probablement encore plus largement utilisé dans l'industrie, mais j'ai le sentiment que cette situation pourrait changer. Je voudrais seulement revenir à C++ en dernier recours, si la performance est un facteur majeur.

Regardez ces questions pour les aider à trouver du matériel de lecture liées à la R:

En termes de recommandations de livres à la statistique et des finances, je pense que la meilleure option générale est David Ruppert du "Statistique et de la Finance" (vous pouvez trouver la plupart de la R code ici et le site de l'auteur a code matlab).

Enfin, si votre calcul scientifique n'est pas de la statistique, puis je pense effectivement que Mathematica est le meilleur outil. Il semble pour obtenir très peu de mentions parmi les programmeurs, mais il est le meilleur outil pour la recherche scientifique pure, à mon avis. Il a beaucoup plus de soutien pour des choses comme l'intégration et équations aux dérivées partielles que matlab. Ils ont une belle liste de livres sur le wolfram site web.

10voto

Artelius Points 25772

En termes de langues, je pense que vous avez une bonne couverture. Python est idéal pour l'expérimentation et le prototypage, Mathematica est bon pour aider à l'théorique des choses, et C/C++ sont là si vous avez besoin de faire de sérieuses de nombreux calculs.

Je pourrais vous suggérons également de développer une appréciation d'un langage d'assemblage et également un langage fonctionnel (comme Haskell), pas vraiment à utiliser, mais plutôt à cause de l'effet qu'ils ont sur vos compétences en programmation et style, et des concepts qu'ils ramener à la maison pour vous. Ils pourraient également être utile un jour.

Je voudrais aussi qu'il est essentiel d'apprendre à propos de la programmation parallèle (simultanées/distribué) car c'est le seul moyen pour accéder à la sorte de la puissance de calcul qui est parfois nécessaire pour résoudre des problèmes scientifiques. L'exposition à la programmation fonctionnelle serait très utile à cet égard, si vous n'avez pas utiliser un langage fonctionnel pour résoudre le problème.

Malheureusement je n'ai pas beaucoup à penser à la façon de lire, mais vous pouvez trouver Le Scientifique et l'Ingénieur du Guide de Traitement Numérique du Signal utile.

6voto

James Black Points 26183

Je dirais tout de la composition numérique des livres de recettes (choisir une langue) pour être utile.

Selon les langues que vous utilisez ou si vous allez faire de la visualisation, il peut y avoir d'autres suggestions.

Un autre livre que j'aime vraiment, c'est Orienté Objet la mise en Œuvre de Méthodes Numériques, par Didier Besset. Il montre comment le faire de nombreuses équations en Java et smalltalk, mais ce qui est plus important, c'est qu'il fait un travail fantastique avec aidant à montrer comment optimiser les équations pour une utilisation sur un ordinateur et la façon de traiter avec des erreurs en raison de limitations sur l'ordinateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X