A lot of people talk about having an "epiphany" when they learned functional programming. I never put much stock in that until MapReduce really sunk in. Not that I'm a fanboy -- I still do almost everything in Java or Python -- but it was certainly one of those "aha" moments.
I wish this article was around when I started trying to figure it out. If you do actually get through it (and it's eminently accessible), it makes Spolsky's article on functional paradigm and MapReduce [http://www.joelonsoftware.com/items/2006/08/01.html] a lot easier to understand. And it's my bet that if you get around to reading both, you'll thank yourself for making yourself do it. Really.
Note that Python is also a functional language, in the sense that it has almost all elements and features that allow you to do functional programming. [1] So if you do a lot of stuff in Python, chances are good that you're already doing functional programming to some extent, without having noticed.
[1] The most annoying deficiency of Python is the missing implementation of proper local variables in sub functions, which means that Python has no real closures. Recent Python versions try to fix that via the "nonlocal" keyword, but that's not a really intuitive fix, compared to how this issue is solved in other functional languages like Haskell or LISP.
When I said that I'm not a fanboy, I didn't mean to say that I don't use functional languages, but rather, that I don't use purely functional languages, and certainly purely functional languages exclusively.
Although it should be noted that it is pretty ironic that Joel wrote that post in response to Java being taught so pervasively at schools, because Hadoop is implemented primarily in ... yup, Java.
You are right, reading joel's piece afterwards is super easy. It probably helps I have been doing a lot of node.js programming recently and so the functional stuff is kinda mundane now.
I guess. It would be a pretty stupid move of Google to sue any other company over this, because they would lose a lot of respect from development community.
I'd like to think so, but if a situation presented itself where it was a choice between angering developers and angering shareholders, I wouldn't bet against the shareholders.
Another part that plays into this is that you _have_ to patent something, or someone else will. Google pretty much had to register a patent or face getting pwnt someday.
You really have to do "defensive patenting" when you are this large or you might face problems when another person patents a key technology your business relies on.
I don't think google would ever pursue this patent against another company, because it is doubtful it will stand up in court. As such it probably would win a court trial if another company patented the tech, but it is much cheaper to just patent it yourself, stick the patent in a drawer, and continue taking over the world.
I wish this article was around when I started trying to figure it out. If you do actually get through it (and it's eminently accessible), it makes Spolsky's article on functional paradigm and MapReduce [http://www.joelonsoftware.com/items/2006/08/01.html] a lot easier to understand. And it's my bet that if you get around to reading both, you'll thank yourself for making yourself do it. Really.
Highly recommended.