Type systems are uncomposable leaning towers
I can't decide to use the PHP type system for some of my program then the Haskell type system elsewhere I can't combine them they're infectious they don't preserve well over the wire
They're often used for more than one purpose suboptimally
I'm either in 100% agreement with the language's type system or I'm unhappy in some aspects and so I'm unhappy with the language
People seem to choose their languages more on the type system than more fundamental aspects of their language
I think what most users want is static analysis and they don't understand how that is different from a type system they just assume you have to have a type system for static analysis
There's also no conversation about how complex a type system should be to support static analysis in fact some type systems are full blown turing complete
I think there's a more interesting conversation to be had around correctness in a collaborative environment that we're not having at large because type systems exist and consume the conversations
So language developers continue finding the perfect one that is a million little choices working together that must be perfect for everyone
It's a itch that will never be satisfied
> People seem to choose their languages more on the type system than more fundamental aspects of their language
The type system constraints *are* the most fundamental issue and the majority of the focus of any programming language designer.
On another note I would even add that this:
> Adding a type system to an existing dynamic language is a great exercise in showing all of the different ways type systems restrict the expressive power of programming languages.
Is a pro, not a con as the author makes it sound.
Most people want simple stupid predictable and readable code they need to change to pay their bills.
If people want expressiveness they can install their lisps or other languages full of macros and extensions.
Languages that unsurprisingly have never scaled despite how many fans they have: every single author reinvents the wheel, writes its own DSLs, reinvents their own patterns.
Haskell is also plagued by this, by allowing compiler extensions jumping from project to project is a pain, reading code in textual form is a pain, you consistently need compiler or runtime support.