Welche Programmiersprache für mich?

Status
Für weitere Antworten geschlossen.

faraday

Lt. Junior Grade
Registriert
Jan. 2010
Beiträge
487
Hallo liebe Leute,
ich habe jetzt 3 Monate Semesterferien und würde in der Zeit gerne mit einer Programmiersprache anfangen. Nun frage ich mich allerdings, welche Sprache für mich da die richtige ist.

Was möchte ich machen? Also, in erster Linie sollte die Sprache objektorientiert sein. Ich mag den Programmierstil sehr gerne. Zum Anderen möchte ich erstmal damit einfach nur herumspielen. Ein paar Dinge ausprobieren, ABER mit dem Hintergedanken, dass ich - als zukünftiger Physiker - eine Programmiersprache für wissenschaftliche Zwecke beherrschen sollte (Simulationen, Plots, lösen von DGLs etc.)

Ich schwanke momentan zwischen Java und C#, haber allerdings gehört, dass c++ wesentlich performanter ist, was mir beim wissenschaftlichen, rechenintensiven Programmieren durchaus zugute kommt. Ich möchte aber auch eine relativ ordentliche Bibliothek zur Verfügung gestellt haben.

Habt ihr eine Idee? Meine Tendenzen sind momentan: c++, Python, c#, Java, wobei Python ja nicht wirklich objektorientiert ist.

Liebe Grüße fara
 
"als zukünftiger Physiker" dann geh doch einfach in nächste Institut und frag was die so nutzen...

Ganz nebenbei, ein C Programmierer rät dir zu C, ein C++ Programmierer zu C++, ein Java Programmierer zu... na rate mal *g*
 
C, C++ - wenn es um Performance geht. C# ist dafür verglichen mit diesen beiden Sprachen einfach langsamer (Java in etwa gleichschnell). C++ hat große Verbreitung und du findest viele Bibliotheken.
 
Zukünftiger Physiker? Ganz klar: MatLab http://www.mathworks.de/products/matlab/.
Das wäre wohl das "richtige", aber ich denke an so was hast du jetzt ehr nicht gedacht...

Ansonsten halt die Brot_und_Butter, wird_immer_gebraucht-Sprache: C++.
 
Zuletzt bearbeitet:
KnolleJupp schrieb:
*ggg*

MatLab http://www.mathworks.de/products/matlab/

Das wäre wohl das "richtige" aber ich denke an so was hast du jetzt nicht gedacht...

ansonsten halt die Brot-und-Butter, wird-immer-gebraucht Sprache C++.

Nein, daran habe ich wirklich nicht gedacht. :D

SkaFan schrieb:
"als zukünftiger Physiker" dann geh doch einfach in nächste Institut und frag was die so nutzen...

Schöne Idee, aber da wird überall was anderes benutzt.
 
faraday schrieb:
(Simulationen, Plots, lösen von DGLs etc.)

Generell würde ich sagen wählt man die Programmiersprache nach den Anforderungen des konkreten Projektes.
Für die Sachen die du nennst könnte Matlab interessant sein.
 
DjNDB schrieb:
Generell würde ich sagen wählt man die Programmiersprache nach den Anforderungen des konkreten Projektes.
Für die Sachen die du nennst könnte Matlab interessant sein.

Ja. Aber Mathematica und andere Programme bieten sich da auch an. Was ich wirklich explizit machen möchte, ist eine essentielle Programmiersprache lernen. Das mit den Plots ist nur eine Zukunftsaussicht. :-)
 
Als Einstieg ins Programmieren wäre Python dennoch nicht verkehrt, einfach deshalb weil man schnell Dinge probieren kann ohne an formalen Fehlern zu verzweifeln, was gerade am Anfang schnell passiert. Wenn man dann den Draht zur Programmierung gefunden hat, sollte man denke ich mit Java/C++ fortfahren. Beide Sprachen haben ihre Vor-& Nachteile, bei einfachen Simulationen ist denke ich Java eine bessere Wahl, falls du irgendwann einmal doch Code schreibst, der dann seine paar Stunden läuft würde ich auf C++ tippen. Mal an der Uni sonst umhören, da kann man dir evtl besser helfen.
 
r00t~ schrieb:
Als Einstieg ins Programmieren wäre Python dennoch nicht verkehrt, einfach deshalb weil man schnell Dinge probieren kann ohne an formalen Fehlern zu verzweifeln, was gerade am Anfang schnell passiert. Wenn man dann den Draht zur Programmierung gefunden hat, sollte man denke ich mit Java/C++ fortfahren. Beide Sprachen haben ihre Vor-& Nachteile, bei einfachen Simulationen ist denke ich Java eine bessere Wahl, falls du irgendwann einmal doch Code schreibst, der dann seine paar Stunden läuft würde ich auf C++ tippen. Mal an der Uni sonst umhören, da kann man dir evtl besser helfen.

Das ist mal eine Ansage. :-) Was hälst du von C# statt Java?
 
"zu meiner Zeit" hat man an der Uni erstmal Assembler (einen virtuellen Maschinen-Code, der wohl an die IBM/370 angelehnt war) gelernt. Ganz einfach um überhaupt erstmal "in Algorithmen denken zu lernen". Physiker haben anschließend zu Forth gegriffen ;)

Ich bin auch immer noch der Meinung, dass man erstmal "die Maschine verstehen lernen" sollte, statt sich von Anfang an in die "abstrakten" Sprachen zu stürzen.

Man kann sich dann hinterher immer noch auf das einschießen was wirklich benötigt wird.
DGL's kann man sicherlich mit Matlab und Co. besser lösen als mit Perl/Python. Mit letzteren kann man aber schneller ein paar Texte zerlegen, analysieren usw.

Aber wenn man mit sowas (z.B. Perl) anfängt, ohne je vorher wirklich "normal" programmiert zu haben, dann ist man für den Rest seines Lebens versaut ;)

Wenn man das Programmieren "von der Pike an" erlernen will, dann führt an C++ wohl kaum ein Weg vorbei. Will man "mal eben schnell" ein "normales" Problem lösen (nicht unbedingt eine DGL), dann nehme ich PERL oder Python.
 
C# und Java sind sich in der Syntax, also wie der Code aussieht, sehr ähnlich. Du solltest eine davon erstmal gut kennen, bevor du einen Blick auf die andere wirfst. Über die Unterschiede stolperst du sonst nachher.

Ansonsten ist C# umfangreicher, was die Bibliotheken betrifft. Das heißt mehr Code, den du später brauchen könntest, ist bereits fertig. Ob du später darauf angewiesen bist, ist eine Frage des Projekts.

Für einen Anfänger finde ich C# schöner. Man kommt (meiner subjektiven Empfindung nach) schneller zum Ziel, was aber nicht zuletzt auch an der jeweiligen Entwicklungsumgebung liegt. In Visual Studio hat man nach kurzer Zeit eine Exe-Datei, welche man einfach handhaben und ausführen kann.

Bei Java sind ein zwei weitere Schritte nötig, um eine ausführbare Jar-Datei zu erhalten. Dafür bist du nicht an die Beschränkung gebunden, dass C# nur auf Windows praktikabel ist.

Zu meiner Person, ich schätze mich selbst als fortgeschrittenen Anfänger ein. Ich habe eine Vielzahl von Programmiersprachen kennengelernt und kleine Projekte darin erstellt. Ich habe aber keine Programmiersprache so weit vertieft, dass ich mich als Kenner der Sprache sehen würde.
 
Für DLGs könnte ich mir vorstellen, dass Prolog ne verdammt gute Wahl ist. Ich hab in dem Kram mal Scripte für Integral- und Differentialrechnung geschrieben, ging überraschend entspannend, wenn man den etwas verqueren Ansatz erst einmal verinnerlicht hat. Am Ende braucht man, um jede beliebige Stammfunktion erzeugen zu können, vielleicht so 60-80 Zeilen Code. Schade, dass ich den Kram bei nem Plattencrash eingebüßt hab...
 
@SymA: Dann ist für fast alle Anwendungsbereiche alles "etwa gleichschnell". :rolleyes:
Was für eine Aussage!
 
Ich mach jetzt erstmal Java. Der Hauptgrund ist, dass ich mit Java - wenn ich die Sprache gut beherrsche - zwei Dinge mit anstellen kann, die sich für mich als interessant herausstellen könnten: 1. Programmieren von Android Apps 2. Java-Applets für Webanwendungen bzw. generell Java basierende Homepages.

Später werde ich mich dann noch in C# einarbeiten, aber die Umstellung soll nicht sonderlich schwierig sein.

Danke für eure Hilfe und liebe Grüße! :-)
 
Bitte keine Java-Applets! Wir sind doch nicht mehr in den 90ern! ;-)

Wenn du Webanwendungen mit Java-Backend schreiben möchtest, lad dir Netbeans mit JavaEE runter und schau dir die Beispiele an, die dort mitgeliefert werden. Da gibts so viele Möglichkeiten, schöne Webanwendungen zu entwickeln.

Bei netbeans 7.3.1 sei beispielhaft das "Guessnumber-CDI Example" genannt, welches schonmal ein Grundgerüst hinsichtlich JSF, CDI, Validierung etc. liefert.

Ansonsten würde ich einen Blick auf Javascript riskieren. Immer wieder spannend, was man damit alles anstellen kann.
 
Du hast dich zwar schon entschieden, aber ich leg nochmal für Python meine Hand ins Feuer.

Ich studiere selbst Physik im 6. Semester und Python stand bei uns auch offiziell im Studienplan. Meiner Meinung nach ist Python ideal für den Einstieg, erlaubt aber auch komplexere Programme. Für wissenschaftliches Arbeiten ist Python einfach ideal aufgrund der ganzen zusätzlichen Bibliotheken.

Im wissenschaftlichen Bereich ist Python deutlich verbreiteter als Java oder C++. Mit numpy gibt es eine Bibliothek welche ein hochperformantes "n-dimensionales array" implementiert. numpy ist die Grundlage für eine Vielzahl von weiteren Paketen. Es gibt z.B. noch:
* scipy: Bibliothek für wissenschaftliches Rechnen, hat z.b. Funktionen für numerisches Integrieren, Optimieren, lineare Algebra, Statistik, Lösen von DGLs etc.
* matplotlib: Eine Plotting-Bibliothek, die dem Interface von MATLAB nachempfunden ist. Damit kann man wirklich schnell Plots erstellen, die auch noch gut aussehen.
* pandas: Eine Bibliothek zur Analyse von großen Datenmengen (z.b. Logdaten o.Ä.)

Das Schöne daran ist, dass die Bibliotheken alle untereinander kompatibel sind, da sie alle auf numpy aufsetzen. Du kannst z.B. deine Datenfiles mit pandas einlesen, mit scipy irgendeine Analyse durchführen und mit matplotlib plotten, ohne irgendwie die Arrays umwandeln zu müssen. Außerdem ist numpy (und ein Großteil von scipy) in C geschrieben, man hat also auch keine Performanceverluste.

edit: Hier ist ein schönes Beispiel, wie man die Lorentzgleichungen numerisch lösen und animieren kann: http://jakevdp.github.io/blog/2013/02/16/animating-the-lorentz-system-in-3d/
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Zurück
Oben