A lot of very interesting topics came out here, thank you all for the links and thoughts!
Interestingly, I start to have the feeling that our vocabulary differs so much that it is hard to understand each other.
e.g. This great article talks about static typing, which is roughly using function signatures to restrict dispatch in the hope that errors can be found without running the program:
On the other hand static_hasmethod
is semantically equivalent with hasmethod
, it is only called static because it is compiled away thus has no run-time overhead. That is an entirely different type of staticism.
The retval of static_hasmethod
cannot be inferred without executing the program completely, because adding new methods to the queried function will trigger recompilation of the call site and change the returned value.
So I double down on that the main problem is dynamism in the sense of dynamic code generation and code loading, but it would be great if you could persuade me that’s not the case.