Die Leseliste für wissenschaftliche Programmierer [closed]
Lesezeit: 6 Minuten
Leon
Ich arbeite daran, ein wissenschaftlicher Programmierer zu werden. Ich habe genug Hintergrundwissen in Mathematik und Statistik, aber eher wenig Programmierhintergrund. Ich fand es sehr schwierig zu lernen, wie man eine Sprache für die wissenschaftliche Programmierung verwendet, da die meisten Referenzen für SP nahezu trivial sind.
Meine Arbeit beinhaltet statistische/finanzielle Modellierung und keine mit physikalischen Modellen. Derzeit verwende ich Python ausgiebig mit numpy und scipy. Fertig R/Mathematica. Ich kenne genug C/C++, um Code zu lesen. Keine Fortran-Erfahrung.
Ich weiß nicht, ob dies eine gute Liste von Sprachen für einen wissenschaftlichen Programmierer ist. Wenn dies der Fall ist, was ist eine gute Leseliste zum Lernen Syntax und Designmuster dieser Sprachen in wissenschaftlichen Umgebungen.
Welche Sprachen werden Sie verwenden?
– Jakob Schwarz
4. November 2009 um 5:03 Uhr
@ James. Alles, was die Arbeit schnell (beim Prototyping) oder effizient erledigt. Ich bin auf fast nichts beschränkt, sondern muss für andere lesbar sein.
– Leon
4. November 2009 um 15:21 Uhr
“Entwurfsmuster dieser Sprachen in wissenschaftlichen Umgebungen”: das ist das Problem. Sogar die Bücher, die vorgeben, dieses Zeug zu behandeln, sind normalerweise Bullsh*t. Lernen Sie C++ und lassen Sie sich von Erfahrung (und numerischen Rezepten) lehren, oder bleiben Sie bei R oder Numpy (beide sind großartig).
– Alexander C.
23. Januar 2011 um 12:24 Uhr
Irgendwann wirst du Fließkomma-Arithmetik brauchen. Es ist schwer, es gut zu machen, weniger schwer, es kompetent zu machen, und leicht, es schlecht zu machen. Diese Abhandlung ist Pflichtlektüre:
Wissenschaftliches und technisches C++: Eine Einführung mit fortgeschrittenen Techniken und Beispielen von Barton und Nackman
Lassen Sie sich nicht von seinem Alter abschrecken, es ist ausgezeichnet. Numerische Rezepte in Ihrer Lieblingssprache (solange es C, C++ oder Fortran ist) ist umfangreich und eignet sich hervorragend zum Lernen, nicht immer die besten Algorithmen für jedes Problem.
ich mag auch
Paralleles wissenschaftliches Rechnen in C++ und MPI: Ein nahtloser Ansatz für parallele Algorithmen und ihre Implementierung von Karniadakis
Je früher Sie mit dem parallelen Rechnen beginnen, desto besser.
Verwenden Sie unter keinen Umständen numerische Rezepte, um zu versuchen, eine Programmiersprache zu lernen.
– Grafik-Noob
18. Dezember 2009 um 0:01 Uhr
Scheiße, zu spät, um etwa 25 Jahre. Oh, was für ein verschwendetes Leben. Und ich bleibe bei meinem Kommentar, dass NR ein hervorragender Text zum Erlernen des wissenschaftlichen Programmierens ist, bei dem es um viel mehr als eine Programmiersprache geht.
– Höchstleistungszeichen
18. Dezember 2009 um 9:00 Uhr
Numerical Recipes war vor 25 Jahren in Ordnung, aber heute ist es ein Witz.
– JD
1. Juli 2010 um 22:31 Uhr
Shane
Mein erster Vorschlag ist, dass Sie sich die Top-5-Universitäten für Ihr spezifisches Fachgebiet ansehen, sich ansehen, was sie lehren und was die Professoren für die Forschung verwenden. So können Sie die relevante Sprache/den Ansatz entdecken.
Ebenfalls werfen Sie einen Blick auf diese Stackoverflow-Frage (“Praktiken-für-die-Programmierung-in-einer-wissenschaftlichen-Umgebung”).
Sie machen Statistik-/Finanzmodellierung? ich benutze R selbst in diesem Bereichund es wird schnell zum Standard für statistische Analysen, insbesondere in den Sozialwissenschaften, aber auch im Finanzwesen (siehe z. B. http://rinfinance.com). Matlab wird in der Industrie wahrscheinlich noch weiter verbreitet sein, aber ich habe das Gefühl, dass sich das ändern könnte. Ich würde nur als letzten Ausweg auf C++ zurückgreifen, wenn die Leistung ein wichtiger Faktor ist.
Sehen Sie sich diese verwandten Fragen an, um Hilfe bei der Suche nach Lesematerial zu R zu erhalten:
Wenn Ihr wissenschaftliches Rechnen nicht statistisch ist, dann denke ich schließlich, dass Mathematica das beste Werkzeug ist. Es scheint unter Programmierern sehr wenig Erwähnung zu finden, aber es ist meiner Meinung nach das beste Werkzeug für rein wissenschaftliche Forschung. Es bietet viel bessere Unterstützung für Dinge wie Integration und partielle Differentialgleichungen als Matlab. Sie haben ein Schöne Bücherliste auf der Wolfram-Website.
Was die Sprachen betrifft, denke ich, dass Sie eine gute Abdeckung haben. Python eignet sich hervorragend zum Experimentieren und Prototyping, Mathematica ist gut, um bei den theoretischen Dingen zu helfen, und C/C++ sind da, wenn Sie ernsthaft Zahlen knacken müssen.
Ich könnte auch vorschlagen, dass Sie eine Wertschätzung für eine Assemblersprache und auch für eine funktionale Sprache (wie Haskell) entwickeln, die nicht wirklich zu verwenden sind, sondern eher wegen der Auswirkungen, die sie auf Ihre Programmierfähigkeiten und Ihren Programmierstil haben, und wegen der Konzepte, die sie nach Hause bringen für dich. Sie könnte auch eines Tages nützlich sein.
Ich würde es auch für wichtig halten, sich mit paralleler Programmierung (gleichzeitig/verteilt) vertraut zu machen, da nur so die Rechenleistung verfügbar ist, die manchmal für wissenschaftliche Probleme erforderlich ist. Der Kontakt mit funktionaler Programmierung wäre in dieser Hinsicht sehr hilfreich, unabhängig davon, ob Sie tatsächlich eine funktionale Sprache verwenden, um das Problem zu lösen.
Ich bin ein wissenschaftlicher Programmierer, der erst in den letzten 2 Jahren in das Feld eingetreten ist. Ich interessiere mich mehr für Biologie und physikalische Modellierung, aber ich wette, wonach Sie suchen, ist ziemlich ähnlich. Während ich mich auf Jobs und Praktika bewarb, gab es zwei Dinge, von denen ich dachte, dass sie nicht so wichtig zu wissen wären, aber dafür sorgten, dass ich am Ende Chancen verpasste. Eines davon war MATLAB, das bereits erwähnt wurde. Das andere war das Datenbankdesign – egal in welchem Bereich von SP Sie tätig sind, es wird wahrscheinlich eine Menge Daten geben, die irgendwie verwaltet werden müssen.
Das Buch Datenbankdesign für Normalsterbliche von Michael Hernandez wurde mir als guter Einstieg empfohlen und hat mir bei meiner Vorbereitung sehr geholfen. Ich würde auch sicherstellen, dass Sie zumindest einige grundlegende Dinge verstehen SQL wenn du es nicht schon tust.
F’x
Ich würde vorschlagen, dass eines der numerischen Rezeptbücher (wählen Sie eine Sprache) nützlich ist.
Je nachdem, welche Sprachen Sie verwenden oder ob Sie Visualisierungen durchführen, können andere Vorschläge gemacht werden.
Ein weiteres Buch, das ich sehr mag, ist Objektorientierte Implementierung numerischer Methoden, von Didier Besset. Er zeigt, wie man viele Gleichungen in Java und Smalltalk macht, aber was noch wichtiger ist, ist, dass er einen fantastischen Job macht, indem er hilft zu zeigen, wie man Gleichungen für die Verwendung auf einem Computer optimiert und wie man mit Fehlern aufgrund von Einschränkungen auf dem Computer umgeht.
Donald Knuths Buch über seminumerische Algorithmen.
14086300cookie-checkDie Leseliste für wissenschaftliche Programmierer [closed]yes
Welche Sprachen werden Sie verwenden?
– Jakob Schwarz
4. November 2009 um 5:03 Uhr
@ James. Alles, was die Arbeit schnell (beim Prototyping) oder effizient erledigt. Ich bin auf fast nichts beschränkt, sondern muss für andere lesbar sein.
– Leon
4. November 2009 um 15:21 Uhr
“Entwurfsmuster dieser Sprachen in wissenschaftlichen Umgebungen”: das ist das Problem. Sogar die Bücher, die vorgeben, dieses Zeug zu behandeln, sind normalerweise Bullsh*t. Lernen Sie C++ und lassen Sie sich von Erfahrung (und numerischen Rezepten) lehren, oder bleiben Sie bei R oder Numpy (beide sind großartig).
– Alexander C.
23. Januar 2011 um 12:24 Uhr