Any ‘argument’ can be pretty much summarised with these memes:
Personally, (1) holds more sway for me over (2) and I dare say for almost everyone out there. At least the guy in (2) is still “correct”. So arguments usually will favour static typing.
Dynamically typed languages ARE inferior in the sense that they are missing compiler features. These compiler features are solving valid pain points for a lot of people and teams - and so are being adopted. Rust for example has a borrow checker and a programming model to produce code in a non-gc runtime. It’s awesome.
And then you get articles like this from people that have bought into it, used it for a long time and developed their view of it:
Being “correct” in a programming sense is not the equivalent of passing compiler checks. Sometimes the “correct” thing to do might be something that compiler does not allow. Or maybe the compiler is always right. This is something that’s really hard to justify without looking at the specifics of the situation.
However, the people that write the rules don’t necessarily use the same rules for themselves. Idris (a more Haskell version of Haskell) is not written in Haskell but Chez Scheme. Julia is backed by a lisp. It’s worth asking the question why this is.