It amazes me that someone could write down that principle and then design an untyped programming language.
Assembler is untyped (just bytes and words). I'm not big into Python, but I'm pretty sure it has types, but they are late/runtime bound.
Dynamic types are probably not a good choice for an army of idiots, but if dynamic types were so completely unworkable, you would think that they would disappear, eh?
That said, I'd rather see avionics written in Ada than Python, but not every problem needs that level of scrutiny and pain.
That's almost never the case if you're in a situation where you're reading code
def add(a, b):
return a + b
In a dynamically-typed language, you can't actually know if this dead-simple function will throw an exception, until you know the entire call graph leading up to where this function was called. That's fine in small scripts, but really freakin hard if you have call-stacks 10 levels deep. let add x y = x + y
Looks reasonable to me, and this is statically type-checked