Functional programming languages (like LISP, Scheme and SML) failed largely because they made it very easy to do very difficult things, but it was too hard to do the easy things.
Recently, I am reviewing and writing about the continuation and its applications to service orchestration or work flow implementations. The continuation is natively supported by LISP, Scheme and SML, but not by Java. I have no experience on those old languages, but I suspect that they must deal with the highly abstracted aspect of continuations.
The next big challenge in software architecture is concurrency. Raw clock speed has just about reached its physical limit. Chip companies are now putting multiple copies of the same CPU onto a single chip. The result is that applications can no longer just be run faster. They have to be run in parallel in some way.
I think concurrency and asynchronism are the major power and challenge of the SOA world.