Programming languages have been for long a matter of “taste”, usually with a strong “emotional” content tied to the choice (I am just remembering the “old” “Java vs C++” battle… 8-])
The truth is, if you are an efficient programmer, more concerned about “getting the job done” than in “fundamentalist passions”, you are more likely to use many languages, in different contexts; I guess that is what most of us do, anyway. There are no “right” or “wrong” choices, but there are more appropriated choices for a particularly task, and often, more than one.
The new trend now, seems to be “mix & match”, which for rapid application development and prototyping of scientific applications, may “work as a charm”. It is now possible to script many toolkits (R, MatLab, etc) using a language of your choice, so why make a redundant effort, when there are tools that are specialized on it?
This article approaches this question very well, I think.
Moreover I think Python can have a deserved protagonist role on this approach. It is a very flexible language, that is of course high-level, but with a low-level “feeling” (maybe because of the similar syntax to C?)
P.S.: for GIS geeks, there is already a plugin for IPython in QGIS…