I'm surprised that the consensus here is for modern Fortran, and I grudgingly agree.
Whatever its failings, Fortran is the only language out there being designed explicitly for scientific programming. Scientific programming is both more subtle (per line) and less complicated (in structure) than, say, a web server, and it just needs different tools. Garbage collection, for instance, is almost never useful for solving large 2d/3d PDEs where your primary data structures are fixed.
Any programming language that doesn't even have multi-d arrays as first-class objects can be dismissed immediately for scientific programming. and that's all of the C-based languages. Any programing language which is inherently god-awful slow -- Java, I'm looking at you -- can be dismissed immediately. Any programming language which is proprietary and requires thousands of dollars of licensing fees -- Matlab -- can be dismissed immediately.
Python and related languages are good for prototyping, and plotting is easy, and once you've got things working can write the numerical kernels in compiled lanaguages for speed; but it again suffers from the lack of real arrays (Numpy is good, but not great) and it is s..l..o..w.
By the way -- don't ever by the Numerical Recipies books. They're crap, the algorithms they pitch are of date, and the code ranges from poor to wrong. Take a real numerical algorithms course - there's good ones on line - or buy a real numerical algorithms book -- and for the love of God, don't type in code from a book to do linear algebra or whatever; use the zillions of real, proffessional quality libraries out there.