I have always heared that compile time languages (Java, C++ etc) are statically typed and interpreted languages (PHP, Python etc) are dynamically typed, But the question is why they are, Why not a compile time language can be dynamically type and vice versa?
This depends strictly on the language e.g. Java has mixed mode where the code that runs less often is only interpreted. Code compilation can be expensive so if the compiled code is not executed many times after the compilation the effort spent compiling will not be worth it.
Why dynamically type languages are interpreted and statically type languages are compile time language?