Disclaimer: I am a Physics/Computer Science major graduating this semester. I've done research for 4 years
now, with most of my scientific computing geared towards Physics. I'm heavily geared towards certain types of
languages because of this, and this should encourage you all the mother to explore your options and what's being used
Meem1029 wrote: can't think of any cases where you would need to use c instead of c++, as the two are very similar. C++ is basically C with classes added.
C++ is nothing like C "with classes added." If you've seen any modern iteration of C++, it's evolved way beyond that.
You can just as easily write C in C++, but writing idiomatic C++ is not "with classes" in the slightest bit.
In terms of actual programming languages, I would tell you to figure out what's being done in whatever field you're
going into, and then learn that. If lots of code is written in C++, do that. Or if it's in Matlab, Mathematica, or
whatever else, go for those. I've done research in random matrix theory, condensed matter physics, computational
physics, computational biology and I can say that there's no two fields which work in the same way. Figure out what
they're doing, then learn that.
If there's no preference, I would say play around with one of each of the following categories:
OOP: C# or Java
Low level, procedural: C or C++ (tbh I'd put C++ in it's own category)
Dynamic: Ruby or Python
Figure out how to write idiomatic programs in whatever it is you're doing. Then see which language paradigm suits
itself best towards the work you expect to be doing. That's about all I can say really, since what you use depends so
heavily on what you plan on doing.
If you intend on doing any sort of high performance computing, I'd seriously consider learning at least C or C++. I can't
think of any serious HPC that's not done in either C, C++, or Fortran. It's changing, but when you need the raw performance
nothing beats them.