It is a mistake to think that "combining all features" will make a better language.

You are more likely to end up with a bloated, complex, unreadable mess.

Good language design requires choice and trade-offs to be made. Arguably the best / most revolutionary / most successful languages are the ones that **take something out** and provide a better alternative rather than add new things in. e.g.

 - Structured programming languages (C, Pascal) - takes out "goto", replaces with procedures and structured loops etc.
 - Java - takes out "manual memory management", replaces with GC/managed memory
 - Haskell/Clojure - takes out "uncontrolled mutable state"
 - Lisp - takes out most "language syntax", replaces with a flexible homoiconic tree of s-expressions

There's a great talk on this top by Uncle Bob Martin - [The Last Programming Language][1]


  [1]: http://skillsmatter.com/podcast/agile-testing/bobs-last-language