Static Typing
- stricter, catches more errors
- can prove that the program is free of type errors
- no runtime overhead
- can be inconvenient: might need additional code/annotations
- not all properties can be checked statically (array bounds)
- error messages from the type checker can be hard to understand
- type annotations help document the code
- types can be used to control the behaviour of code (overloading)
- indispensable for serious software development:
- proves the absence of certain errors
- helps with interface design
- helps with refactoring
- advantages apply mostly to symbolic computations, less so to numeric ones