1. A system for providing distributed compilation of statically typed languages, the system comprising: a processing resource; and a memory resource comprising instructions that when executed by the processing resource cause the processing resource to: identify, in source code of a target module, a plurality of first order dependencies of the target module and indirect dependencies of the target module, wherein the plurality of first order dependencies are modules that the target module directly depends upon, and the indirect dependencies are modules that the target module indirectly depends upon via the first order dependencies; traverse each of the plurality of first order dependencies to remove, from the source code of the target module, code references to the indirect dependencies of the target module; compile the source code of the removed indirect dependencies to generate a plurality of module stubs, wherein the plurality of module stubs includes references to the first order dependencies without the indirect dependencies; and compile the source code of the target module using the plurality of module stubs to generate a target program.