I can forgive languages like C, C++, LISPs, and even Java to some extent, because at the time we needed performance (where we used C/C++) and we didn't know any better (where we might have used a LISP).
However, there is a glut of modern languages that appear to have been developed by studiously ignoring the last 30 years of programming language research. JavaScript, Python, Ruby, Go, Erlang, and before you think I'm hating on dynamic languages, C#, F# and Scala too.
Concepts such as static types, immutability, parametric polymorphism, tail call elimination, first-class functions, higher-order functions, type inference, type classes, higher-kinded types, and rank-n types have all proven themselves and are absolutely essential to avoid code duplication and enable code reuse. Additionally, concurrency and parallelism become almost trivial when these features are present.
My question is: why are we still creating crippled languages, that do not allow for modularity, reusability, equational reasoning and easy concurrency and parallelism, when we know how to design better languages that do allow for these things?