It depends on what you want to do. If you are looking to do heavy computation and will need to optimize code performance then C++ is probably a good option. Python is my recommendation if you are not so concerned about overhead - it has the advantage of being a higher level language and of having a lot of libraries that are useful for scientific calculation. At an even higher level, Octave is useful for testing algorithms and plotting data and R is useful for statistical analysis and creating complex plots.
For me as a biologist it is very important to learn computer program that can be used for biology image analysis and today ImageJ is the best biology image analysis program, since ImageJ is developed in java language then java is the best computer program for me :)
It depends on what you want to do. If you are looking to do heavy computation and will need to optimize code performance then C++ is probably a good option. Python is my recommendation if you are not so concerned about overhead - it has the advantage of being a higher level language and of having a lot of libraries that are useful for scientific calculation. At an even higher level, Octave is useful for testing algorithms and plotting data and R is useful for statistical analysis and creating complex plots.
I am also trying to learn Python, many programs ( free open source code software) uses python scripting. I do not want to intervene with Lal's question so I am just following this thread for the moment.
I think FORTRAN is the best option for engineering and scientific purposes. I'm familiar with C++, VB, MATLAB and FORTRAN, but I recommend FORTRAN because of its speed, simplicity and power.
You should know that people who learned first FORTRAN are marked for all their lives. So, I prefer FORTRAN as the more close to the usual scientific reasoning. However, C++ is an excellent alternative. Both combined well with symbolic programs as Mathematica or Maple and sooner or later you will be willing to learn both.
What really slows computer-based projects down is not the computer, but the person before it, who has a tendency to re-program things that have already be programmed elsewhere, or to “patch up” code in order to add features – with the result that after a year nobody understands what the patch does, and how the code can be used without breaking something else. The answer to this is object-oriented programming. It takes some effort to learn it, but in the long run it is worth it!
So my recommendation is C++. Java is similar in syntax and concept, but is in fact a nuisance designed to slow computers down so that you can watch the bits moving. (But I have been told that it is getting better). Script languages like Python are useful for small jobs, but not for large projects nor for high-performance computing.
Fortran77 is easy to use and indeed close to scientific reasoning. But be advised that it will spoil your style, and that it can *really* get in your way with larger projects (I have seen subroutines with 50 parameters …). Its capability to handle strings is bad, it does not have dynamic arrays, and coupling with GUI functions is difficult. If it has to be Fortran, go for Fortran90 or similar dialects, which have borrowed some features from C.
Assuming that you are relatively new to the field and it is not your goal to maintain "dusty deck" code, but to develop your own and work with colleagues developing theirs, I think that one needs to learn:
1) C++ as this is the most prevalent language for deployed projects (as opposed to prototypes). Also, while I have no desire to start an argument, I think that learning C (being able to avoid the features of C++ that do not exist in C) is useful when one needs improved code efficiency. I realize that this is less important every year as compilers advance.
2) Python. "All the other kids are doing it." Seriously, it just seems to be something you have to know in the field these days.
3) A prototyping language. Yes, Python is good for this, but I still prefer to use Mathematica or Matlab for this purpose. Integrated stack, high-level, etc. I am guessing that most people would prefer Matlab (and it's free cousin, Octave) for this purpose, but if you have a lot of background in functional programming, Mathematica is a nice tool, IMHO (not an advertisement).
No matter what language(s) you learn, I strongly advocate attaining some minimal level of skill with the relevant tools associated with these languages. Profilers, etc. are useful, but unless you write perfect code the first time, every time (sometimes ... rarely ... it takes me *two* attempts :-) ), you really need to become familiar with a debugger (gdb, etc.).
Thanks for all your answers, I wasn't aware of some of the languages around like R and octave (a program I believe). I am looking to develop a working knowledge in bioinformatics especially mass spectra analysis.