Re: Just out of curiosity: Which languages are they using at Google and what for?



<alainpoint@xxxxxxxx> wrote:

I know Google are using Python for testing purposes.

....and many more besides, as per the other response.

But for the rest ?
is it PHP or Java or .NET?
Which technology is rendering the google main page?

I think you can get a reasonable idea by perusing the 800+ job offers we
currently have open;-), and eyeballing the several papers published by
Googlers -- between one and the other, it becomes pretty clear that we
use mostly Python, C++ and Java, plus of course a host of others for
special purposes (Javascript for AJAX purposes, C and Assembly for
kernel-hacking of various sort, SQL for relational databases, etc, etc),
including some highly specialized ones invented within Google for highly
specialized purposes (e.g., Rob Pike's "sawzall" for log-processing).


And of course th obvious question, why not Python?

You can read Pike et al's paper on sawzall to see why we would want a
special-purpose language for that specialized, very-high-volume task,
for example; I hope the reason for the other specialized ones, from
Javascript to Assembly to SQL, is pretty obvious in each case;-).

As among the "three big ones" -- Python, C++, Java -- there are good
reasons why the overall job is best done by a mix of them. I won't
address Java (we don't use any in my group, nor any of the groups we
interact with intensely), but the tradeoffs between Python and C++
should, again, be pretty clear. For example, C++ allows (and demands)
close control of where all your memory is going -- much harder to
achieve in garbage collected languages such as Python or Java (managing
memory IS a chore, but, under potentially heavy load, an important one).

Also, a consideration I also made at SDForum: at Google's volumes of
traffic, we need load-balancing among many machines, of course, but we
_also_ are unwilling to let user experience suffer from high latencies.
Now, you can scale the "bandwidth" of a cluster by throwing more servers
at the problem -- but latency does not work the same way: you can't make
a baby in 1 month by load-balancing among 9 mothers, as the saying goes.
So, having as few machine-instructions as feasible on the critical paths
that determine the user-perceived latency is important; even the very
first paper by Page and Brin describing what would later become Google
made the point indirectly -- they describe the "crawling" (where latency
is no big deal) as being implemented in Python, but the processing of
queries (where latency is crucial) in C++.


Alex
.



Relevant Pages

  • Re: Open Office Cocoa
    ... noi attualmente usiamo Flash per il playback dei Google Video ... lato client di Internet" usiamo piu` che altro ... AJAX e mi sembra che ci abbiamo fatto delle belle cosine, ... Quanto a Java client-side, non credo che Google al momento ne abbia ...
    (it.comp.macintosh)
  • Re: 7.0 wishlist?
    ... Publicly accusing a specific person of stupidity, on the other hand, is an insult. ... This is a forum for discussing Java programming, not for assigning blame and arguing over who is at fault. ... domain-specific libraries, and ImageIO plugins and the like. ... I've had to filter JSTOR because that site produced so many Google hits I couldn't use on so many diverse topics, and there's a ton of other candidates for the same treatment, mostly scientific journal sites. ...
    (comp.lang.java.programmer)
  • Re: Giving an application a window icon in a sensible way
    ... Java app. ... At the time I made the initial posting to this thread, a google ... applications (they involved requesting the icon from a URL, ... or accomplish things on your own. ...
    (comp.lang.java.programmer)
  • Re: Java Web Start on sites.google.com
    ... It seemed like a good candidate for Java Web Start. ... JWS complains that it is "Unable to load resource: ... OK - I did not try loading the JNLP (not after ... I was expecting Google to refuse the connection outright, ...
    (comp.lang.java.help)