Static languages need to know the type of every variable at compile time. Examples of static languages include C, Pascal, and Eiffel. Code written in static languages typically compiles efficiently, and strong type-checking at compile-time reduces the risk of errors.
Dynamic languages allow the programmer to create variables without explicitly specifying the type of information they contain. This simplifies prototyping and cleans up certain kinds of object oriented code. Typical dynamic languages include LISP, Perl, and SmallTalk.
Dylan provides a good balance between the advantages of static and dynamic languages. The programmer may choose to specify or omit type declarations as desired. Code using explicit variable types can be compiled very efficiently, and type mismatch errors can be caught at compile time. Code omitting those type declarations gains the flexibility of a dynamic language.</>