1. A system for providing distributed compilation of statically typed languages, the system comprising: a processing resource; and a memory resource operatively connected to the processing resource, the memory resource comprising: a dependency analysis module that when executed causes the processing resource to: identify a plurality of first order dependencies of a target module, wherein each of the plurality of first order dependencies is associated with one of a plurality of dependent modules; and traverse each first order dependency of the plurality of first order dependencies to: remove a plurality of code references from source code of a corresponding module of the plurality of dependent modules, wherein each of the plurality of code references refers to a type defined in an indirect dependency of the target module; and compile the source code of the corresponding module to generate a module stub of a plurality of module stubs; and a compilation module that when executed causes the processing resource to compile source code of the target module using the plurality of module stubs to generate a target program.