A few years ago I never understood what the hype about Google was all about. My parents, both software engineers, told me that I would be set for life if I could land a job with Google. The pay was good and so was the company’s environment. But to me Google seemed boring. Their website was plain compared to others and I didn’t really understand what Google did. I just used it to get to websites it was never my final destination. I thought to myself, what would I do at Google? I mean someone searches for something and Google finds it. Right? So it seems like there is nothing else to do. All I’d be left with would be grunt work nothing creative.
As I matured more, I quickly learned that I’d taken Google for granted. Sure, Google is most well known for its search engine and what it does exactly what it sounds like, searches for websites matching the search query. But this seemingly simple task is actually complicated. Google has to sift through the two hundred fifty million websites currently on the web and rank them by relevance all in a few tenths of a second. And it goes through thirty four thousand searches of these searches every second. That’s not all that Google does it. It owns the mobile operating system Android, YouTube, and the blogging site, Blogger.
I came to appreciate Google more after taking my first Computer Science course, CS 61A, here at Berkeley. In that class we learned the programming language Scheme. Scheme has little use outside of the classroom and many people find it to be esoteric. Unlike many of my classmates I liked Scheme. It was simple and concise. Things that would take me ten or twenty lines of code in another language could be done in three or four in Scheme. Scheme is also not widely used because it is functional programming language and most of the “real” programming languages are imperative. I became somewhat disappointed to learn that I would probably end up programming in another language, maybe Java, instead of the elegant Scheme. That was until I learned about parallelism and the uses functional programming languages in this aspect. Parallelism is splitting a large problem into smaller ones and computing them simultaneously. It turns out that Google uses parallelism extensively for efficiency. Instead of having one machine doing all of the work, the work is divided and done simultaneously by several machines. At first I didn’t quite understand the point of doing this. Why not just have one really fast computer instead of several slower ones? The answer is heat dissipation. For processors to go faster, the amount of transistors on each chip has to increase. The higher transistor density, the hotter the chip gets. Processors reached the limit on temperatures. Any higher temperatures and the processor will literally melt itself. That is the reason why almost all computers nowadays have multiple processors. The way of the future will be multiprocessor. That is the only way for computers to go faster without frying themselves. It is only a matter of time before everything electronic goes multiprocessor and functional programming becomes the “real” way to program.

