c,c# oder c++ für numerische Simulationen
-
Hallo,
ich habe schreibe ab und an kleine Simulationsprogramme z.b
ramdom walk
molekulardynamik
monte carlo
populationsdynamik
usw.in Rahmen meines Phyiskstudiums in c. So wie kleine Steuer und und Spassprogramme mit Delphi.
Ich möchte nun auf eine Sprache beschränken und tiefer einarbeiten. Ich bin mir nur nicht sicher ob nun c, c# oder c++ dafür am besten geeignet sind??
Ich persönlich würde folgende Anforderungen stellen:Übersichtliche Programmstruktur
visuelle Darstellung von Ergebnissen (z.b x,y,z Bildchen)
verfügbare Literatur
guter Compiler und gute Entwicklungsumgebung
eventuell auch die Möglichkeit zur 3d Programmierung
natürlich möglichst einfachFreue mich auf jede Antwort, gebt alle euren Senf dazu ab
John Doe
-
Ich würde persönlich zu C++ greifen, einfach weil es mir am besten für solche Aufgaben gefällt und weil es gerade für wissenschaftliche Anwendungen eine breite Codebasis gibt. Ähnliches gilt für C. Für alle gibt es jedenfalls Libraries um die Ergebnisse zu visualisieren und der Rest ist Geschmackssache.
-
Johannes @upb schrieb:
Übersichtliche Programmstruktur
Hmm, dafür bist du zuständig.(?)
Johannes @upb schrieb:
visuelle Darstellung von Ergebnissen (z.b x,y,z Bildchen)
Ist in allen möglich. In C# ist es aber IMHO recht einfach, mal schnell ne GUI zusammenzuklicken.
Johannes @upb schrieb:
verfügbare Literatur
Hmmm... kann ich nicht wirklich was zu sagen. Vermutlich das meiste/beste für C++.
Johannes @upb schrieb:
guter Compiler und gute Entwicklungsumgebung
Gibts vermutlich für alle(bei C weiß ichs nich.
).
Johannes @upb schrieb:
eventuell auch die Möglichkeit zur 3d Programmierung
Ist bei allen möglich.
Johannes @upb schrieb:
natürlich möglichst einfach
Dann nimm nich C++.
-
Johannes @upb schrieb:
Übersichtliche Programmstruktur
C#
visuelle Darstellung von Ergebnissen (z.b x,y,z Bildchen)
C#
verfügbare Literatur
Diese Anforderung erfüllt jede der drei Sprachen.
guter Compiler und gute Entwicklungsumgebung
C#
eventuell auch die Möglichkeit zur 3d Programmierung
natürlich möglichst einfachDefinitiv C#.
(ich weiß ich weiß, gewagtes Posting in einem C++ Forum
)
-
interpreter schrieb:
(ich weiß ich weiß, gewagtes Posting in einem C++ Forum
)
Zumal man überall auch C++ als Antwort hätte geben können.
Und gerade für 3D könnte man mit C++ in Verbindung mit OpenGL solche Anwendungen auch problemlos auf unterschiedlichen Plattformen zum Laufen bringen.
-
guter Compiler und gute Entwicklungsumgebung
ich finde, das MS Visual Studio für C# Anwendungen besser ist, als für C++. Gründe:
- bei C# Projekten gibt es eine übersichtliche Klassenansicht - UML ähnlich
- Dokumentieren ist super einfach durch eingebaute XML Dokutags - mit minimalen Zeitaufwand läßt sich eine MSDN ähnliche Dokumentation derstellen. Wahlweiße kann auch ein JavaDoc ähnliche Dokumentation erstellt werden, usw. (und ReflectionMechanismen die von Dokumentationstools wie NDoc ausgenutzt werden)
(Es gibt zwar DoxyGen - finde ich aber etwas unübersichtlich - NDoc macht da bessere Arbeit)
- Es gibt einen GUI Designer
-
Vertexwahn schrieb:
guter Compiler und gute Entwicklungsumgebung
ich finde, das MS Visual Studio für C# Anwendungen besser ist, als für C++. Gründe:
- bei C# Projekten gibt es eine übersichtliche Klassenansicht - UML ähnlichGibts auch in VC++.
Vertexwahn schrieb:
- Dokumentieren ist super einfach durch eingebaute XML Dokutags - mit minimalen Zeitaufwand läßt sich eine MSDN ähnliche Dokumentation derstellen. Wahlweiße kann auch ein JavaDoc ähnliche Dokumentation erstellt werden, usw. (und ReflectionMechanismen die von Dokumentationstools wie NDoc ausgenutzt werden)
Gibts auch in VC++. (ich meine diese XML-Docu)
Vertexwahn schrieb:
- Es gibt einen GUI Designer
Gibts komischerweise auch in VC++.
-
vielleicht wär sowas wie matlab/simulink das richtige für dich. gibbet auch freeware-clones davon. guckst du: http://de.wikipedia.org/wiki/MATLAB
-
Artchi schrieb:
Vertexwahn schrieb:
guter Compiler und gute Entwicklungsumgebung
ich finde, das MS Visual Studio für C# Anwendungen besser ist, als für C++. Gründe:
- bei C# Projekten gibt es eine übersichtliche Klassenansicht - UML ähnlichGibts auch in VC++.
Vertexwahn schrieb:
- Dokumentieren ist super einfach durch eingebaute XML Dokutags - mit minimalen Zeitaufwand läßt sich eine MSDN ähnliche Dokumentation derstellen. Wahlweiße kann auch ein JavaDoc ähnliche Dokumentation erstellt werden, usw. (und ReflectionMechanismen die von Dokumentationstools wie NDoc ausgenutzt werden)
Gibts auch in VC++. (ich meine diese XML-Docu)
Vertexwahn schrieb:
- Es gibt einen GUI Designer
Gibts komischerweise auch in VC++.
komisch das ich alle diese Features in der IDE noch nicht gefunden habe - wo denn erklär mal! Wo gibts z. B. einen UML ähnliche Klassenübersicht - und sag bloß nicht die hätte ich im Objekt Browser
-
Ich wuerd sagen wenn du mit C angefangen hast, dann bleib mit C. Wie du aus den vorherigen Antworten sehen kannst: alle 3 Sprachen erfuellen deine Aufgaben. Nur ists von C ein ziemlicher Sprung auf C++ und C#, da man in den beiden Sprachen normalerweise objektorientiert programmiert... Fuer groessere Projekte mag OOP (ObjektOrienterte Programmierung) prinzipiell besser geeignet sein, aber C ist immerhin die Sprache der Wahl fuer den Linux-Kernel, GNOME, ....
Was vielleicht fuer numerische Simulationen interessant waere, ist Unterstuetzung fuer "genaue" Fliesskommazahlen... wie du vielleicht eh schon weisst, koennen float bzw. double - Datentypen die meisten Bruchzahlen gar nicht korrekt darstellen. C und C++ bringen von Haus aus keine Unterstuetzung fuer exakte Fliesskommazahlen mit, bei C# weiss ich's nicht.Was deine Anforderungen angeht:
Übersichtliche Programmstruktur
Geht mit allen 3 Sprachen. Wenn du prozeduralen C-Code gewoehnt bist, wird dir "echte" OOP anfangs allerdings vielleicht etwas komisch vorkommen. Aber Uebersichtlich wirds in allen 3en
visuelle Darstellung von Ergebnissen (z.b x,y,z Bildchen)
Mal abgesehen von 3D-Programmierung (siehe unten) haben alle 3 Sprachen die Moeglichkeit, grafische Oberflaechen zu erstellen. Am einfachsten geht das sicher mit C#. Weder C noch C++ bieten von Haus aus die Moeglichkeit, GUIs (grafische Oberflaechen) zu erstellen, aber dafuer gibts entsprechende Bibliotheken im Netz (siehe den FAQ-Eintrag: http://www.c-plusplus.net/forum/viewtopic-var-t-is-81596.html)
verfügbare Literatur
C und C++ sind schon aeltere Sprachen, dementsprechend viel Literatur findet man im Netz, zum Teil auch gratis. Hier auf der Seite findest du unter "Tutorials" bereits einiges an Links dazu. Fuer C++ koennte ich dir "Thinking in C++" empfehlen, gibt es in 2 Baenden gratis im Netz unter www.mindview.net
Fuer C# weiss ich nicht, wie die Situation ausschaut.guter Compiler und gute Entwicklungsumgebung
Gibt es ebenfalls fuer alle 3 Sprachen. Fuer C/C++ wuerde sich als Entwicklungsumgebung z. B. "Code::Blocks" mit dem GCC als Compiler anbieten (gratis unter www.codeblocks.org).
Von Microsoft gibts das Visual Studio 2005 Express relativ billig (frueher gabs das mal gratis, k.A. ob das angebot noch gilt) sowohl fuer C, C++ als auch fuer C#.
Fuer C# gaebs ausserdem noch "SharpDevelop" als Entwicklungsumgebung.eventuell auch die Möglichkeit zur 3d Programmierung
Geht auch in allen 3 Sprachen. Fuer C und C++ wuerde sich OpenGL anbieten, C# soll AFAIK einen ziemlich guten DirectX-Zugriff bieten. Vorteil von OpenGL ist sicher, dass die geschriebenen Programme auch unter Linux, Solaris etc. funktionieren. kA ob das fuer dich interessant ist.
natürlich möglichst einfach
Ansichtssache. Aber im Prinzip halte ich (ACHTUNG: persoenliche Meinung) C# fuer einfacher als die anderen beiden, weil es gewisse Gefahren- bzw. Fehlerquellen einfach von vornherein ausschliesst (du kannst in C# z. B. nicht selber Speicher mit malloc() besorgen, bzw. musst nicht mehr mit free() den Speicher wieder freigeben, es gibt keine Pointer....)
Als Alternative koennt ich dir noch Python empfehlen:
Ist IMO (achtung: wieder eigene Meinung) wesentlich einfacher als die 3 von dir vorgeschlagenen Sprachen, schaut wesentlich "sauberer" aus, erfuellt auch alle deine Anforderungen. Die Sprache ist allerdings "langsamer" im Sinne von Programmlaufzeit, dafuer normalerweise (Achtung: Verallgemeinerung, fuer die ich keine Quellen habe) "schneller" im Programmieren, weil man weniger Fehler macht und gewisse Dinge einfach "einfacher" gehen als z. B. in C++.
Python wird soweit ich gehoert habe recht gern fuer numerische Simulationen eingesetzt. Auch gibt es direkte Unterstuetzung fuer beliebig grosse Ganzzahlen (d.h. du kannst int's haben, die wesentlich groesser sind als 2 Milliarden) und exakte Fliesskommazahlen.
-
Wie wär's mit Fortran?
-
groovemaster schrieb:
interpreter schrieb:
(ich weiß ich weiß, gewagtes Posting in einem C++ Forum
)
Zumal man überall auch C++ als Antwort hätte geben können.
Du wirst doch wohl nicht ernsthaft behaupten wollen, dass C++ einfacher ist als C#; dass man mit C++ leichter Ergebnisse visualisieren kann und dass es irgendwas eleganters/"einfacheres" gibt als C#/MDX?
-
net schrieb:
vielleicht wär sowas wie matlab/simulink das richtige für dich. gibbet auch freeware-clones davon.
Wo gibt es denn einen Simulink-Clone?
-
Walli schrieb:
net schrieb:
vielleicht wär sowas wie matlab/simulink das richtige für dich. gibbet auch freeware-clones davon.
Wo gibt es denn einen Simulink-Clone?
weiss nicht. such doch mal mit google oder sowas.
-
Ah, Scilab hat sowas sehe ich gerade. Naja, da arbeite ich aber trotzdem lieber mit dem Original weiter.
-
Johannes @upb schrieb:
guter Compiler und gute Entwicklungsumgebung
Blue-Tiger schrieb:
Als Alternative koennt ich dir noch Python empfehlen:
Gibt's da eigentlich auch ne gute Entwicklungsumgebung?
-
rzht schrieb:
Johannes @upb schrieb:
guter Compiler und gute Entwicklungsumgebung
Blue-Tiger schrieb:
Als Alternative koennt ich dir noch Python empfehlen:
Gibt's da eigentlich auch ne gute Entwicklungsumgebung?
ich verwende SPE (http://www.stani.be/python/spe), bringt eigentlich alles mit, was ich brauche
-
Hallo,
danke erstmal für die vielen Antworten. Ich möchte gerne noch etwas anfügen.
Gibt es für C auch eine ähnliche Entwicklungsumgebung wie für C# bzw C++ (Microsoft Visual C#, C++ )??
Und was ist der Hauptunterschied zwischen c++ und dem neuen c# ??
Und kann man mit c# auch anwendungen für Linux schreiben, denn bei uns wird auch sehr gerne Linux verwendet und wir hatten schon des öfteren Probleme mit Kylix und Delphi !
-
Johannes @ upb schrieb:
Gibt es für C auch eine ähnliche Entwicklungsumgebung wie für C# bzw C++ (Microsoft Visual C#, C++ )??
in der c++ ide kannste auch c projekte machen.
Und was ist der Hauptunterschied zwischen c++ und dem neuen c# ??
c# ist von microsoft, c++ nicht. :p
Und kann man mit c# auch anwendungen für Linux schreiben, denn bei uns wird auch sehr gerne Linux verwendet und wir hatten schon des öfteren Probleme mit Kylix und Delphi !
naja sagen wir mal problematisch(siehe mono-project), und die ide's sind afaik ziemlich buggy.
-
Johannes @ upb schrieb:
Und was ist der Hauptunterschied zwischen c++ und dem neuen c# ??
Und kann man mit c# auch anwendungen für Linux schreiben, denn bei uns wird auch sehr gerne Linux verwendet und wir hatten schon des öfteren Probleme mit Kylix und Delphi !C# war die Antwort von Microsoft auf den Boom von Java in der Industrie. C# ist Java sehr ähnlich(VM,GC, Bytecode).
Ich empfehle Dir ganz klar C++, da bei numerischen Berechnungen und Simulationen es auf Geschwindigkeit ankommt. Zudem hast Du dann keine Probleme unter MacOS, BSD, Linux und anderen Unices. Für solche Aufgaben ist C++ zusammen mit OpenGL Industriestandard.