One way of paraphrasing “the complexity of a programming language” is “how difficult is it to learn the language until you are productive”. Obviously, measuring complexity in the above manner is interesting, but not the whole picture: Some concepts are more powerful than others. And sometimes adding a new concept decreases the complexity of a language, without making other concepts completely obsolete. As an example, look at ECMAScript 6 classes . They will simplify inheritance, but you still need basic knowledge of constructors. Furthermore, much complexity is contained in software stacks (runtime library, 3rd party libraries, etc.).