This is a great article but... it may be just me but I'm allergic to the word "modern". I feel it's a word trying to manipulate my emotions (who wants to be out-of-date?) without actually contributing anything objective to the discussion. For example the sentence<p>> A modern language that is aiming for performance should take this very important aspect of language design into account.<p>could have been rewritten as<p>> A language that is aiming for performance should take this very important aspect of language design into account.<p>and been clearer and more objective for it.
I agree; there are a lot of reasons to have generics in a language, performance one of them as demonstrated; but anyway it doesn't make sense if in a strictly, statically typed language we are forced to do dynamic typing to make data structures and algorithms reusable; however, i don't understand why everyone always goes for generic types; generic modules can do that too and are much easier to understand and implement.
> The counter for this argument is that we can always specialize the code for our needs, right? Except… that this isn’t something that happens.<p>This feels like a weird assertion, especially when immediately followed by an example where such manual specialization happens
I guess nobody would call it “modern” but it is quite possible to have the compiler do type inference and automagically specialize functions with the user not even knowing it is happening behind the scenes. No generics needed.
This is such crap. Modern programming languages (or any other tools) need to be well suited for a specific problem domain, not meet some generalized arbitrary criterion. And modern systems (as in actual low-level software, not web browsers or databases or games) suffer from a severe lack of security and reliability, not performance.