One source of endless confusion in programming circles is the unnecessary coupling, in our minds, of an idea (paradigm?) and a concrete tool that attempts to implement that idea. Examples would be functional programming and Haskell; or object-oriented programming and Java; or relational data and SQL. The confusion I have observed comes in at least two flavors:
- “If you want to do real functional programming you must use Haskell” or
- “I don’t like SQL so relational databases are crap”
Yes! And of course, one can have purely functional islands in their C or C++ code just like one can have logical islands in their Prolog code. The real difficult part seems to be the judgements one has to make along the way. Which part of your application needs constraints? Which part is truly functional and which part is inherently stateful? What can be done with a regular expression and what is impossible?
Dogmatic thinking that takes away the burden of judgements is just so attractive… and then we end up with strong, comforting messages like this one:
Well