Yeah, sorry I wasn't very specific in my first post. Actually I will be doing a PhD in Energy Science with focus on nuclear materials. I guess I was looking for advice with regards to numerical languages for algorithms, design patterns and optimization. Thanks meanrev for the pages and I will be sure to check them out.
No problem, I wasn't calling for an apology!
I'm not familiar with energy science or nuclear materials, but at the end of the day, it's most likely that you will end up using the most popular language at your department for most of the time (I'm guessing it's probably going to be MATLAB, lots of numerical analysis and BVPs). I'd take a look at old syllabuses of computational courses you're probably going to take, to get an idea of what's popular.
Thereafter, I second both Vanadium 50 and NegativeDept's advices. In the long run, I would rather focus on better programming skills than better domain-specific knowledge of a particular language. It's like an investment with better long-term yield.
This means things like:
- Learning a text editor like Vim, Emacs - and remember to tune your editor to your preferences, e.g. low contrast color scheme.
- Learning to use source control (pulling any of the open source projects that I mentioned is a way to start)
- Learning productivity tools and ideas such as in The Productive Programmer (Ford)
- Equipping yourself with a couple of power tools in
http://www.hanselman.com/blog/Scott...DeveloperAndPowerUsersToolListForWindows.aspx
- Learning LaTeX (this has been the single biggest time saver for me)
- Building GUIs
NegativeDept said:
I think these are good suggestions. At my department, Python/NumPy/SciPy and Maple are popular. I like SciPy but hate Maple and use MATLAB and Mathematica instead. I really like Eigen, but I think I'm the only person at my university who has ever used it!
I hate Maple. I think MATLAB has a similar substitute called MuPAD in the symbolic toolbox, which I've used for linear programming. Good to hear about Eigen.
As for what's considered respectable outside of academia... I've been in grad school for the last several years, so I disqualify myself from answering.
This is a good point, I can't say I'm familiar with what goes on outside of academia.
Lastly, deciding on a language is probably least important as Vanadium 50 said, but it's oddly the one question you will keep asking yourself each day as you get better (at least I do; every time I have to use a Python script to generate a C++ source and a shell script to compile it, interop Fortran and C#, manipulate strings in MATLAB etc.). C++ is probably the most employable skill in my industry, and probably most others. I generally think that someone who can program in C++ will be indifferent to programming in other languages. There are plenty of guys who can write in Java, Objective-C, Python etc., because these are relatively easy to get into, so the competition is tougher. In contrast, very few people know low-level optimizations and scaling a large number of processes across nodes.