

Every Paradigm Has its Place - Rickasaurus
http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/17/every-paradigm-has-it-s-place.aspx

======
arohner
The corollary to this is extremely important: Every paradigm has a place where
it doesn't belong. OO, FP and whatever flavor of the month all have places
where they shine, and places where they don't. And arguably, it's more
important to know where a paradigm _doesn't_ work, than where it does.

Don't believe the hype. OO isn't perfect everywhere, and neither is any other
tool. Learn a bunch of different tools so you can apply the proper one.

~~~
Rickasaurus
I feel like this is a really good point but am having trouble coming up with
many concrete examples. For example, I've felt like every declarative attempt
at game AI has been absolutely horrible.

~~~
arohner
One easy example is FP in low level, performance sensitive code. There are
many algorithms where there is an FP implementation that is almost as fast as
the imperative, mutable state version, but there are several algorithms with
no known equivalent speed FP version. Also, even when the speeds are
equivalent, sometimes the imperative mutable version is simpler.

Conversely, FP shines compared to imperative mutable state in things like
concurrency. I have clojure code where I can replace a call to 'map' with a
call to pmap (parallel map), and take advantage of multiple cores just by
adding one character. Try doing that in C.

------
silentbicycle
Of course, if you find this article interesting, look at CTM (Peter Van Roy
and Seif Haridi's _Concepts, Techniques, and Models of Computer Programming_
(<http://www.info.ucl.ac.be/~pvr/book.html)>) The papers it links to are
excerpts from the book.

One of the best books on programming I've ever seen, IMHO.

