Mark Chu-Carroll on functional programming:
At Google, we generally program in three languages: C++, Java, and Python. None of them are functional languages: all are state-heavy, imperative, object-oriented languages. But the more I've read and written code in this code-base, the more I've found that functional code is the best way of building large things. When I look at a piece of code, if the code is basically functional, I've found that it's much easier to understand, much easier to test, and much less likely to produce painful bugs. It's gotten to the point where when I see code that isn't functional, I cringe a little. Almost everything that I write ends up being at least mostly functional - the places where I use non-functional code, it's because the language and compiler aren't up to the task of keeping the code efficient.
Read the whole article here.