I am familiar with C++, FORTRAN and MATLAB. C++ is difficult to grasp as it is object oriented. Most scientific problems do not need object oriented approach. MATLAB is also object oriented, but user does not have to deal with that directly. In MATLAB, there are several in built functions, such as sum, mean, correlation and plenty of others, which are frequently needed in scientific computations. So every time one does not have to write codes for these tasks. Some scientific problems require to find the eigenvalues and eigenvectors of a matrix. If one wants to write the code in C++, then he has to first study the theory behind them and then has to think the logic to find them. So, his actual work will be delayed. There are many experts in the field. So, instant help will be available. That may not be the case for Python. As far as matrix operations are concerned, MATLAB is rich of several functions. Toolboxes are also highly useful. Of course, I have seen people who have not clearly understood the process of edge detection in image processing are also able to complete their project on edge detection.
You need more than one. However, Matlab and python are the best. they are easy. More understandable than C++. They are scripting languages. Which mean you can start without any knowledge of objects and functions. You do not have to define your variables. A Lot of good and easy things you can find in them. Do not forget that you have to plot your results in the end. Matlab is the best in doing this.
Finally, in research you do not need GUI as the otput of your work. So Python and Matlab are the best for you
The choice of a particular language for scientific computing may vary from user to user depending on the nature of computational work one is aiming. For numerical computation of physical observable one may prefer FORTRAN 77-90 because it is easy to handle. For hardware communication based computation one may prefer Python over other languages. Eg basic science experiments can easily be demonstrated using discrete circuit components connected to a micro controller based kit interfaced with PC/Laptop writing instruction codes in python programming language. Though I am not much familiar with Matlab, I think it is useful manipulation of graphs, matrices, polynomials etc. However FORTRAN+Origin+Latex combination could do lot more. For C or C++ one has to bear in mind lot of commands......
I had to make that choice a few years ago. In school (Engineering) I've learned Matlab, Fortran and Mathematica. For that reason for the first 6 months of my research career I used a language called Octave (which is very similar to Matlab but it's open source), and C++ (when performance was needed).
Using high level languages such as Octave, Mathematica, Matlab, R or Python can bring you a lot of advantages like shortening development time by lot (and I do mean - A LOT). They have their shortcomings like not being as fast as C or Fortran, and occupying more memory (although this has other advantages).
When I had to make that choice I new that I was going to need a good language for scientific software development that gave the possibility of:
1) Doing numerical computation
2) Making Graphical User Interface
3) Having good support in both 2D and 3D visualization
4) And also the possibility of interacting with other languages
5) Free and Open-Source
My choice was Python. With it you can make the full cycle of scientific software development (think of Python as high level C++). I'm mentioning this by real experience. One of my latest software, GEOMS2, is made with Python:
http://sourceforge.net/projects/geoms2/
Also check some of it's features (in visualization) here:
For 2D (with 3D features) visualization I would advise matplotlib, pyqtgraph, chaco:
http://matplotlib.org/
http://www.pyqtgraph.org/
http://code.enthought.com/projects/chaco/
For 3D visualization check VTK, Mayavi, PyOpenGL:
http://www.vtk.org/
http://code.enthought.com/projects/mayavi/
http://pyopengl.sourceforge.net/
For numerical computation I would advise numpy, scipy, scikit-learn, pandas:
http://www.numpy.org/
http://www.scipy.org/
http://scikit-learn.org/stable/
http://pandas.pydata.org/
And than there's a bunch of libraries for several fields of science (but you better open another topic for it). Before finishing this long answer I would just like to give links to several different Python packages that already bring both python and many other languages:
Like it has been stated already it will depend on your needs. What do you mean by "scientific computing" ? Is that analysis of scientific data and related advanced statistics and machine learning methodology or is it high performance (meaning heavy CPU and/or memory loads) scientific computing (also goes by HPC) ?
For the latter, python, R and pretty much all high level languages will not deliver the required performances. Fortran and C/C++ are the way to go. Note that their exists a lot of legacy scientific code in Fortran. Also, matlab do provide parallel computing functionalities (through libraries ?). Without any experience in it I cannot tell whether it would be competitive vs Fortran or C/C++.
For data analysis, Python is arguably the best choice nowadays. It is free, easy to learn and read, has a very active community of contributors. It is also as popular in academia than in business making it a great tool if you ever want to look for a job in the private sector. Notable libraries: numpy/scipy for scientific data manipulation, pandas for data analysis, scikit-learn for machine learning, matplotlib and bokeh for data visualization.
Note that for advanced scientific computing that won't require to run on a cluster, Python has Cython and F2Py which allow you to run portions of code (where the computational instructions reside) as C or Fortran code respectively thus speeding up the computation significantly. Python's library Numba provides similar advantages in an almost painless fashion with, as far as I experienced, slightly slower execution than Cython.
You have to choose language based on your own particular needs. There is not, and will never be, one best language. You learn several and use them for different things. That being said, Python, MATLAB, R, FORTRAN95 and C/C++ are the most common and for good reasons.
Thank you all & Dr. Pedro Correia. I know MATLAB, C, Fortran 90 and Python. I have started learning C++ and was wondering its need for my career & Also I wish to master one of them, like making my tool.
Like other colleagues mentioned C++ is specially important when you need speed and a better hold on the memory you are spending.
Nowadays hardware is considered "cheap" by comparison with "development time" (after all you can buy two very good computers with a month average paycheck of a software developer) and the consequence is that more and more people are starting to use high-level languages. Other consequence is that people that are not "Computer Scientists" (by academia), like myself, are starting to compete with those who are. The reason for this is that programming has become far more "straightforward" (at the lack of a better word) in the last decade or so.
If you want to master a language today thing about what you'll be doing in the next 3 to 5 years. Some points to help you make your own analysis:
1) I expect to be making a lot of black box algorithms which require performance. I may have to deal with tech like parallel computing, cluster computing, and GPU computing. I won't need GUI, Web or Visualization features. -> Than you probably want C++ or Fortran
2) I expect to be making end user scientific applications with GUI and visualization, and sometimes performance is going to be an issue. I may have to explore tech like parallel, cluster and GPU computing. -> You'll probably want Python with a mix from C++ or Fortran (although there are parallel, cluster and GPU libraries for Python)
3) I don't need that much performance except on rare occasions, I just want something that will allow me to make small scripts very fast for simple functions. There might be a possibility of me needing some kind of end-user interface but nothing fancy. So it's development speed over anything else. -> You are probably looking for languages like Matlab, Octave or R.