Gradual typing allows software developers to choose either type paradigm as appropriate, from within a single language.[1] In many cases gradual typing is added to an existing dynamic language, creating a derived language allowing but not requiring static typing to be used. In some cases a language uses gradual typing from the start.