1
source | link

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

    Post Made Community Wiki by mikera