High performance computing has traditionally relied on languages such as Fortran, C, and C++.
While these languages continue to be important, their use involves considerable training and expenditure of time in developing, compiling, and debugging the programs. Furthermore, there is no easy way of visualizing/analyzing results of numeric computations within these languages. Recently, increased use is being made of two computation tools: Matlab (commercial) and Python (free).
The chief advantages of these two "languages" are:
1) Ability to rapidly prototype.
2) Availability of a large set of libraries to perform specific computing tasks. Matlab has the libraries as add-ons (costing extra!) while python has a growing list of libraries developed by enthusiastic users/developers.
3) Rapid visualization/animation. Matlab is particularly well suited for a novice as it has a single point of entry for all tools. Python has a good set of tools and more are being added constantly.
One area of interest to most users is the performance penalty one has to pay for using these tools. There is some good news on that front. Many benchmarking exercises have been performed using both Matlab and Python (with Numpy) and the performance is quite good (see links below). In particular, Matlab and Python (with Numpy) have similar performance characteristics. While compiled languages (eg., Fortran, C, C++) still perform better for many tasks, they cannot compare with Matlab or Python
for rapid prototyping. Furthermore, both python and Matlab interface well with routines written in Fortran, C and C++. I have given some links below that add more details to the points discussed here.
Python:
---------
Usually python + numpy + matplotlib, but there are others. One could get started with something like Entought Python Distribution (EPD).
Matlab:
---------
Python and Matlab:
------------------------
Performance comparison of Matlab, Python, Fortran, C, C++, etc.
-----------------------------------------------------------------------------------
Comparison between different languages is difficult. This is especially true for Matlab and Python as both are evolving constantly. Also, the performance with different languages depends on the particular algorithms, compilers (if any) and compiler options, additional numerical libraries (eg. Intel MKL), and the hardware characteristics. Thus, one should not take the results of any particular comparison too seriously and look for general characteristics.