1. A computer-implemented method of improving the ease with which a distributed application designed for parallel processing is created when developers of the distributed application are writing distributed parallel algorithms in a distributed runtime environment, by providing generic language support that is automatically customized by a compiler at runtime to support different input and output data types, the computer-implemented method comprising acts of: generating for one or more portions of software code for a distributed software application a corresponding generic function coded to work with multiple different data types, each generic function being written in a computer programming language that supports reflection, and each generic function comprising: a template coded to work with at least two different data types by providing at least two different functions using the different data types, the two different functions permitting input arguments of the different data types respectively; and a function signature describing which of a plurality of input and output data types the generic function is configured to work with; broadcasting the function signature and the signature's input and output data types to one or more ranks to enable addition of one or more additional functions to the generic function; receiving at an integrated development environment of a computing system a generic function generated for said one or more portions of software code for the distributed software application; for each received generic function presenting the function signature for the received generic function at runtime to a just-in-time (JIT) compiler so as to specify to the JIT which input and output data types the received generic function will work with; and identifying with a reflection module each generic function presented to the JIT and resolving each generic function to a function pointer after compilation by the JIT.