Dynamic Vs Static Type Checking