[Peter Norvig](http://norvig.com/), Director of Research at Google, gave the keynote at [SciPy 2009](http://conference.scipy.org/), [“What to demand from a Scientific Computing Language—Even if you don’t care about computing or languages”](http://www.archive.org/details/scipy09_day1_03-Peter_Norvig), a conference about scientific programming in Python. His requirements were:
1. *Batteries included* means the standard distribution of the language gives all the tools to do standard things. Here’s where IDL beats Python hands down because the standard distribution of Python is not geared to scientific analysis at all. There are 3rd party distributions such as Python(x,y) or the Enthought Toolkit, but these still need to make progress on ease of install, cross-platform availability, and matching all the functionality of IDL. Of course, Python comes with much greater non-scientific functionality and it is free (as in beer and as in speech).
2. *Expressions, not statements* means the syntax of the language mimics the syntax of mathematics. The vectorized operations of IDL and NumPy in Python go along way here. The garbage collection in Python makes it a bit easier to create objects within expressions instead of creating a variable to contain them so that they can be freed later.
3. *Parallelize* is the ability to use multiple cores. IDL actually uses multiple cores fairly well for many of its core operations, unlike Python.
4. *Documentation, examples, unit tests, tutorials, mentoring* is a mixed bag for both Python and IDL. I think the API documentation for IDL is better than for Python’s scientific routines, but Python has a more active online community (even for just the scientific routines). There are many more resources for core Python.
Norvig worked at NASA Ames and brings his experience of the needs of scientific computing to the [talk](http://www.archive.org/details/scipy09_day1_03-Peter_Norvig).