views:

2079

answers:

3

I'm curious...I've read much of Python being on the approved list of languages used by Google employees, and I know they employ Guido. That said, is their use of Python focused mainly on managing servers and applications, and not for developing the applications themselves? If so, why? It seems most I read indicates they use Java for the heavy lifting. Is this because there's an inherent limitation in using Python for things like GMail, etc?

+26  A: 

While Google has never published any official stats on the issue, I think it's fair to say that, overall, C++ and Python dominate most "Google infrastructure" (which is fairly heavy "lifting", believe me;-), while Java and Javascript are more common at the application level (which deliver application fuctionality to the user, running on top of the Google infrastructure).

Of course, there are plenty of exceptions, such as YouTube and code.google.com, which are mostly Python (and a very little bit of C++) as opposed to Java, on one side, and Android (which is mostly-Java) on the other. As it's pretty clear that YouTube's "heavy lifting" no less than, say, Google Docs, I believe this basically indicates that the choice of languages in each area is largely historical.

Alex Martelli
I'd be surprised if they used Python more than Java.
cletus
Why would that surprise you?
ironfroggy
+11  A: 

To summarize Alex with his own words about the use of Python at Google:

Python where we can, C++ where we must.

The quote is already some years old but still valid.

wr
Yep, but don't forget the context, http://groups.google.com/group/comp.lang.python/browse_thread/thread/af75a3e91a03ec18/ -- '''software projects that are part of our "deep infrastructure"''' (many other fields such as not-so-deep infrastructure and all sorts of internal-only utilities may fairly be described similarly); I've never worked on user-facing apps, such as, say, Google Docs (they of course _rely_ on the infrastructure, but have their own "business logic" and [often JS+CSS+HTML] user interfaces).
Alex Martelli
Define 'can' and 'must'. Is it something like "It is a straight forward requirement so we _can_ use Python", and it is way too slow to use Python so we _must_ use C++"?
Rosdi
+1  A: 

Yes.

Daniel Martin