Die Leseliste für wissenschaftliche Programmierer [closed]

Lesezeit: 6 Minuten

Benutzeravatar von leon
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:

Was jeder Informatiker über Gleitkommaarithmetik wissen sollte

Benutzeravatar von High Performance Mark
Höchstleistungsmarke

Ich kann es nur empfehlen

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

Shanes Benutzeravatar
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:

  • geeignete-funktionale-sprache-fur-wissenschaftliches-statistisches-computing
  • bücher-zum-lernen-der-r-sprache
  • was-kann-in-r-gemacht-werden-was-mit-python-numpy-scipy-nicht-gemacht-werden kann
  • r-for-finance-tutorials-ressourcen

In Bezug auf Buchempfehlungen in Bezug auf Statistik und Finanzen denke ich immer noch, dass die beste allgemeine Option ist David Rupperts „Statistik und Finanzen“ (Den größten Teil des R-Codes finden Sie hier und Die Website des Autors enthält Matlab-Code).

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.

Leider habe ich nicht viel zum Lesen vorzuschlagen, aber Sie werden es vielleicht finden Der Leitfaden für Wissenschaftler und Ingenieure zur digitalen Signalverarbeitung hilfreich.

Benutzeravatar von Tordal
tödlich

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.

Benutzeravatar von F'x
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.

1408630cookie-checkDie Leseliste für wissenschaftliche Programmierer [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy