While static typing is widely accepted as being necessary for secure program execution, dynamic typing is also viewed as being essential in some applications, particularly for distributed programming environments.
Additional Key Words and Phrases: Dynamic typing, marshalling, parametric polymorphism, static typing
Languages such as Ada [1979] and ML [1990] improve the flexibility of static typing by providing parametric polymorphism, that allows static type-checking of reusable software components which operate generically over data structures such as lists, sets, trees, etc.
Despite the aforesaid advantages of static typing, some form of dynamic (runtime) typing has been proposed for statically typed languages.
Although static typing is widely regarded as useful and necessary for large-scale programming, the need for some degree of dynamic typing has also been recognized.
Although the absence of static checking requires the programmer to find and fix some bugs at runtime (the traditional rationale for
static typing), its presence compels the programmer to reason much more indirectly about the program.
Strong static typing is an important language characteristic that affects design and is particularly easy to notice when dealing with container data structures.
Languages with strong static typing usually include the type of container elements in the type of the container, such as list <string> in C++ or string list in ML.