https://betterprogramming.pub/type-systems-in-programming-languages-static-vs-dynamic-and-strong-vs-weak-ed1bb542b06