I hear what you say, but there was a time when I thought imperative, non-structured programming was all there was, and anything like structured programming, then later OOP, then later FP, was just more complexity that was unnecessary. As I've grown to become more comfortable with each of those I've realised that they are more than just extra bells and whistles - they are ways of thinking.
As I continue to learn more about them, so I continue to become a better programmer even in languages that don't exactly match the paradigms. Learning structured programming has made my assembly coding better, even when I use all the nasty tricks available. Learning about FP, logic and constraint programming has made my C++ and Python coding better.
I'm sure I don't yet know everything, or even half of everything. I don't (often) use a pure FPL, but knowing, really knowing, about pure FP has made my thinking better.
Who knows what remains to be discovered or invented that will expand our thinking further.
I'm on to that, as you know from our email exchanges, but I don't like the idea of presenting the one as 'better' than the other.
Both FP and IP have earned their place in the toolbox, and even though I'm much more familiar and comfortable with the 'IP' portion of it I can see the power of some of the concepts behind FP. But I find it very hard to believe that FP is so much better than IP that it warrants talking down to the people using it.
> As I continue to learn more about them, so I continue to become a better programmer even in languages that don't exactly match the paradigms.
Agreed, and even while I definitely have not 'grokked' functional programming yet to the point where it would make sense for me to write some small utility in an FP language I can see how just learning about FP has influenced my coding style in other languages.
> Who knows what remains to be discovered or invented that will expand our thinking further.
Working on that :)
It's mostly a matter of constraints on this end, I probably took on more than I can handle in terms of work that simply needs doing and I hoped that through FP I would find some shortcut allowing me to become more productive. It has worked in a sense, some of the code I wrote for other projects has become more clean because of reading about and playing with FP, but in a concrete sense where I can substitute a functional language for an imperative one and get more mileage out of my days it hasn't (yet).
But I'm optimistic that one day it will, and as long as I can see it influence my thinking in a positive way I'll continue to study it.
One of the biggest eye openers so far was 'memoization', I'm not even sure that I understand it well enough to paraphrase it, but when looking at the source of hashlife it suddenly clicked: When you work in a functional way and you are guaranteed that there are no side effects stemming from lower layers you can replace the call to a function with a bunch of arguments, no matter how complex with its result. That literally blew my mind, even though in hindsight it is a blindingly obvious thing.
That such a 'small' thing as side effects could have such polluting effects on higher level code that a thing like memoization is impossible gave me a lot of energy to continue my 'quest' :)