Question: Scientific computing is algorithm intensive and can also be data intensive. It often needs to use a lot of memory to run analysis and release it before continuing with the next. Sometime it also uses memory pool to recycle memory for each analysis. Managed language is interesting here because it can allow the developer to concentrate on the application logic. Since it might need to deal with huge dataset, performance is important too. But how can we control memory and performance with managed language?

Answer: 
[Python](http://www.python.org/) has become pretty big in scientific computing lately. It is a managed language, so you don't have to remember to free your memory. At the same time, it has packages for scientific and numerical computing ([NumPy](http://numpy.scipy.org/), [SciPy](http://www.scipy.org/)), which gives you performance similar to compiled languages. Also, Python can be pretty easily integrated with C code.

Python is a very expressive language, making it easier to write and read than many traditional languages. It also resembles MATLAB in some ways, making it easier to use for scientists than, say, C++ or Fortran.

The [University of Oslo](http://www.uio.no/) has recently starting teaching Python as the default language for all science students outside the department of informatics (who still learn Java).

[Simula Research Laboratory](http://simula.no/), which is heavily into scientific computing, partial differential equations etc., uses python extensively.
The best option is Python with NumPy/ SciPy/ IPython. It has excellent performance because the core math is happening in libraries written in highly optimized C and Fortran. Since you interact with it using Python, everything from your perspective is clean and managed with extremely succinct, readable code and garbage collection.