A major difference between statically typed and dynamically typed programming languages is that for the former, the compiler resolves method calls and compiles references in the compiled program (in the case of a JVM language in the generated Java byecode), while in a dynamic programming language such as Groovy, Clojure, and Python, these decisions are taken while running the program.
As always in life, both the approaches have their own advantages and disadvantages:
Programming Style | Advantages | Disadvantages |
Static |
|
|
Dynamic |
|