I think the difference has to do with the way functional programming makes *statements* about a problem as though it's a math problem, where as imperative programming clearly describes a *process*. In the business world, computer programs wrap or replace physical processes, so you may find a language that reflects this to be more intuitive. It turns out that the functional style (because it minimizes mutability and side effects) lends itself to making safe use of multiple processors - something we will see more of in the future. Also, most modern functional languages have collections with iterators you can pass functions to. These methods can split their workload over multiple processors very efficiently without you even knowing about it. The `for` loop is already obsolete. Those of us using a language that doesn't have this feature just don't know it yet.