Comment by snowwlex
> You can magnify the effect of a powerful language by using a style called bottom-up programming where you write programs in multiple layers, the lower ones acting as programming languages for those above. If you do this right, you only have to keep the topmost layer in your head.
And if you do it wrong (overengineering), you would need to learn not just one, but as many programming languages as there are layers...
That's IMHO what OOP (as understood in Java world) tends to evolve to...