From Out of the Tar Pit:
… the type of complexity we are discussing in this paper is that which makes large systems hard to understand. It is this that causes us to expend huge resources in creating and maintaining such systems. This type of complexity has nothing to do with complexity theory — the branch of computer science which studies the resources consumed by a machine executing a program. The two are completely unrelated — it is a straightforward matter to write a small program in a few lines which is incredibly simple (in our sense) and yet is of the highest complexity class (in the complexity theory sense).
Good explanation of simple vs. complex and easy versus hard, by Rich Hickey (clojure). Also much about how that relates to the practices of software development. Quite funny too.
http://www.infoq.com/presentations/Simple-Made-Easy
A significant challenge to the ideas of this paper is that multi-paradigmatic approaches to software development are generally not taught in computer science and infrequently addressed in self-study/learning resources for other hackers.
I suspect (and am attempting to learn) a style of software development in a single language that permits functional, declarative (logic/relational), and imperative code will maximize simplicity (and maybe productivity/efficiency). But this requires a solid foundation in those different styles of hacking and enough practice with real world coding to bring them together effectively.
Even presuming that we have an environment that supports the domain specific sub-“languages for the different components — (that) can offer more in terms simplicity than can the unstructured adoption of any single general language,” selling this approach as a net win to employers of programmers seems unlikely. Maybe small shops and teams can adopt these approaches though.
BTW, I think probably the best way forward is a single general language, probably one of the Lisp-y ones (or Oz or ML, not familiar enough to say), where you can more easily implement (or simply use existing libraries of) different paradigms easily.