Wednesday, December 3, 2008

Now is not the time to learn functional programming

I've been seeing tons of stuff like this lately. Here's the basic premise: I say that functional programming is the next big thing. I drop some names like Scala, Haskell and F# to sound like I know what I'm talking about. I mention concurrency. Then I proceed to show you an example of fibonacci or some other equally wiki-able piece of code. Slashdot effect ensues. Or so the story goes.

I don't buy into the functional hype for one reason: it doesn't solve any widespread problems. Look at why C got popular: assembler was hard. Java: memory management was hard. PHP: REST was hard. Maybe not hard for you, but it's hard for a lot of people.

Functional programming per se doesn't abstract away anything gory. If I have a list that two processors want to update at the same time, it's not FP that will magically make everything work, it's the implementation of a locking mechanism that will.

The reason why I think it's good to learn FP (and not necessarily *now now NOW*) is that it allows you to reorganize code into something that resembles human languages more, not because someone that never wrote (and more importantly, maintained) concurrency stuff in FP said you should learn it.

No comments:

Post a Comment