Weche Programmiersprache Physik?



  • Steffo schrieb:

    Thilo87 schrieb:

    Danke, wird das auch im wissenschaftlichen Bereich verwendet?

    Ja. Einfach mal googlen...

    ...das ist ja mal ein toller beweis



  • Hallo,

    möchtest du nur mathematische Berechnungen anstellen oder auch Visualisierungen?
    Schau dir aber auf jeden Fall mal die Liste unter Physik-Engine an.
    Die Programmiersprache wählt man nach den besten Tools aus - daher kämen auch C++ oder C# in Betracht.



  • Wohl Matlab oder C++. Java willst du wirklich, wirklich nicht, wenn du auch nur einmal was mit Vektoren/Matrizen bauen musst. 😉 (Oder mit BigInt Klassen oder Ähnlichem.)



  • Danke euch allen, ich denke ich werde mich mal an C++ versuchen. Da gibt es auch schön viele Tutorials und Videos und vor allem Physik-Engines :p



  • cooky451 schrieb:

    Wohl Matlab oder C++. Java willst du wirklich, wirklich nicht, wenn du auch nur einmal was mit Vektoren/Matrizen bauen musst. 😉 (Oder mit BigInt Klassen oder Ähnlichem.)

    Wobei es erstaunlicherweise (zumindest für mich) sehr viele wissenschaftliche Programme in Java gibt. Da braucht man nur auf sourceforge suchen, ich glaube, allein da ist schon das meiste aus der Kategorie "Wissenschaft" in Java.



  • Jaja, und dann findet man Sweet Home 3D. 😃



  • Mechanics schrieb:

    Da braucht man nur auf sourceforge suchen, ich glaube, allein da ist schon das meiste aus der Kategorie "Wissenschaft" in Java.

    Ich glaube nicht, dass diese "Wissenschaft" gemeint war.



  • 17girlsinarow schrieb:

    Mechanics schrieb:

    Da braucht man nur auf sourceforge suchen, ich glaube, allein da ist schon das meiste aus der Kategorie "Wissenschaft" in Java.

    Ich glaube nicht, dass diese "Wissenschaft" gemeint war.

    Da gibt es haufenweise Frameworks und Simulationen, unterschätz das nicht.



  • Thilo87 schrieb:

    leistungsstarke Simulationen

    C++ mit CUDA



  • Thilo87 schrieb:

    Danke, wird das auch im wissenschaftlichen Bereich verwendet? Also bis zum Physik-Studium ist es noch eine Weile, aber je früher ich anfange, desto besser kann ich es später 😉

    In meiner Umgebung wird verwendet:
    - C und C++ (für fast alles)
    - MATLAB und Mathematica (für viele verschiedene Dinge)
    - Delphi (von Technikern und Elektronikern)
    - LabVIEW (von Technikern und Elektronikern)
    - FORTRAN (für Simulationen in der Astrophysik)
    - R (für Statistikzeugs)
    - IDL (für Simulationen in der Astrophysik)
    - Python (in der Bildverarbeitung)

    Java ist mir noch nicht so häufig begegnet.

    R finde ich übrigens stark unterbewertet.



  • hustbaer schrieb:

    Thilo87 schrieb:

    leistungsstarke Simulationen

    C++ mit CUDA

    Witzbold, und auf was für einem Cluster hab/brauch ich eine Grafikkarte? ...



  • Auf einem Cluster mit Tesla-Karten.


  • Mod

    gastfrage schrieb:

    Witzbold, und auf was für einem Cluster hab/brauch ich eine Grafikkarte? ...

    Das witzige ist, dass du dann eventuell gar keinen fetten Cluster brauchst, sondern bloß Grafikkarten für läppische 1000 Euro.

    audacia schrieb:

    In meiner Umgebung wird verwendet:
    - C und C++ (für fast alles)
    - MATLAB und Mathematica (für viele verschiedene Dinge)
    - Delphi (von Technikern und Elektronikern)
    - LabVIEW (von Technikern und Elektronikern)
    - FORTRAN (für Simulationen in der Astrophysik)
    - R (für Statistikzeugs)
    - IDL (für Simulationen in der Astrophysik)
    - Python (in der Bildverarbeitung)

    Java ist mir noch nicht so häufig begegnet.

    R finde ich übrigens stark unterbewertet.

    So sieht's ungefähr auch bei mir aus. Simulationen fast alle in C, C++ oder Fortran, gelegentlich unterstützt durch CUDA & Co. Wobei die Frage ob Fortran, C oder C++ vor allem eine Altersfrage zu sein scheint, Fortran benutzen eigentlich nur Leute über 40 und bei den jüngeren ist C++ beliebter als C. Bei C gegen C++ zählt aber auch stark, ob man Code "vererbt" bekommen hat, man muss halt nehmen, was man bekommt.

    Persönlich mache ich inzwischen sogar die Nicht-Simulationen in C++, bloß durch kleine Bashscripte unterstützt. Ich bin einfach so viel besser in C++ als in Python oder R, dass ich darin letztendlich schneller bin, auch wenn es eigentlich eine suboptimale Wahl für eine Aufgabe ist.


  • Mod

    http://www.maphy.uni-hannover.de/de/studieren/cip/

    Cuda ist eigentlich C basiert aber es gibt natürlich auch Dinge wie
    http://www.doc.ic.ac.uk/teaching/distinguished-projects/2009/w.jones.pdf

    Java scheint für Lowlevel Simulationen (Prozessoren und so Zeug) recht beliebt zu sein. Außerdem kann man sein Handy damit programmieren, was ziemlich praktisch sein kann, ganz abgesehen von Minicomputeralgebrasystemen im Handy.

    Und es gibt auch ein beliebtes C Buch, veraltet und vergriffen, aber didaktisch gut und Physikfreundlich:
    http://www.amazon.de/Programmieren-lernen-für-Teens-mit/dp/3827318025/

    und überhaupt, alles was Spaß macht, und die Neugier und Einfallsreichtum beflügelt.



  • gastfrage schrieb:

    Witzbold, und auf was für einem Cluster hab/brauch ich eine Grafikkarte?

    Das ist gar nicht so unüblich. Schau mal hier, da findet sich schon der eine oder andere GPU-Cluster in den Top-10.



  • C++ scheint derzeit die Sprache im Bereich des Scientific-Computings zu sein. Man findet aber noch sehr viel FORTRAN und C. Sehr interessant und neu in dem Bereich ist zB Crays Chapel. Matlab, R, Mathematica, und haufenweise Domänenspezifischsprachen haben auch ihre Verbreitung aber natürlich ihre Grenzen bei größeren Modellen.

    Steffo schrieb:

    Java. Ist plattformunabhängig, sehr verbreitet und es gibt viele Bibliotheken dafür.

    Ja und? Java hat Stärken in anderen Bereichen. Aber für Scientific Computing ist es nicht wirklich brauchbar. Sprachen in dem Bereich sollten sind entweder Domänenspezifisch oder bieten zumindest Operatorüberladung und ähnliche Geschichten. Matrix.add(m,Matrix.mul(a,b)) ist halt einfach deutlich schlechter lesbar als m+a*b.

    Mechanics schrieb:

    Wobei es erstaunlicherweise (zumindest für mich) sehr viele wissenschaftliche Programme in Java gibt. Da braucht man nur auf sourceforge suchen, ich glaube, allein da ist schon das meiste aus der Kategorie "Wissenschaft" in Java.

    Sourceforge? Also letzter Commit von Anfang 2003 ;). Naja, natürlich findet man Programme die mit Java geschrieben sind. Das liegt wohl vor allem an der Ausbildungspolitik der Unis in den letzten 10 Jahren. Aber ist es wirklich eine gute Wahl für wissenschaftliche Berechnungen? Ich meine nicht. Java hat halt andere Aufgabenbereiche. Wenn man JVM nutzen will, dann kann man sich zB Fortress (oder X10?) anschauen. Wobei ich nicht weiß, wie es um Fortress steht, seit dem sie aus dem HPC-Sprachen Wettbewerb geflogen sind und Sun von Oracle übernommen wurde. Das Wiki begrüßt einen zumindest mit Fehlermeldungen. Aber immerhin arbeitet da Guy Steele dran (der Typ der bei C, Scheme, Java, Common Lisp, Emacs, Fortran, etc. beteiligt war)

    audacia schrieb:

    R finde ich übrigens stark unterbewertet.

    R ist schon sehr nett. Aber es hat sehr starke Limitierungen. Es ist einfach nicht für große Modelle/Simulationen ausgelegt. Ein Freund von mir, der mehr im Bio-Bereich arbeitet, hat mir neulich erzählt, dass da jemand eine 4GiB CSV-Datei laden wollte. Das hat halt 2 Tage auf dem ziemlich teuren Cluster gebraucht und hunderte GiB RAM benötigt. Man stößt damit also schnell an seine Grenzen.

    gastfrage schrieb:

    Witzbold, und auf was für einem Cluster hab/brauch ich eine Grafikkarte? ...

    Guten morgen. Mittlerweile sind Grafikkarten im Scientific-Computing-Bereich weit verbreitet. Schau dir einfach mal die Top500 Liste an. Die aktuelle Nr. 2 ist zB hauptsächlich auf Tesla-Karten gebaut.



  • rüdiger schrieb:

    R ist schon sehr nett. Aber es hat sehr starke Limitierungen. Es ist einfach nicht für große Modelle/Simulationen ausgelegt. Ein Freund von mir, der mehr im Bio-Bereich arbeitet, hat mir neulich erzählt, dass da jemand eine 4GiB CSV-Datei laden wollte. Das hat halt 2 Tage auf dem ziemlich teuren Cluster gebraucht und hunderte GiB RAM benötigt. Man stößt damit also schnell an seine Grenzen.

    Was für Schlüsse ziehst du jetzt daraus? Dass das an R liegt? Könnte aber genauso an den Programmierern gelegen haben...



  • Meine Erfahrungen mit R: Kleine Sachen Ok, grosse Sachen nicht Ok. Das trifft auf die meisten Scriptsprachen zu.



  • Steffo schrieb:

    Was für Schlüsse ziehst du jetzt daraus? Dass das an R liegt? Könnte aber genauso an den Programmierern gelegen haben...

    Wie genau? read.csv ist Teil der Standardlibrary von R. Was soll ein Anwenderfehler sein können, wenn das versagt?

    Ich hatte mit R auch schon meine Schwierigkeiten, wenn die Datenmengen nur groß genug wurden.


  • Mod

    Steffo schrieb:

    Java. Ist plattformunabhängig, sehr verbreitet und es gibt viele Bibliotheken dafür.

    Java ist nicht plattformunabhängig sondern im Gegenteil an die JVM gebunden. Das ist im Scientific Computing ein großer Hinderungsgrund (abgesehen von den anderen genannten Gründen).


Anmelden zum Antworten