1. A non-transitory computer accessible memory medium that stores program instructions executable by a processor to: receive a first data flow program, wherein the first data flow program is an object oriented program comprising instances of one or more classes, and wherein the first data flow program is executable to perform a first function; and automatically convert the first data flow program to a second data flow program, wherein the second data flow program does not include the instances of the one or more classes, wherein the second data flow program is executable to perform the first function, wherein the first data flow diagram utilizes a plurality of classes from a class inheritance hierarchy, wherein, to automatically convert the first data flow program to a second data flow program, the program instructions are executable to convert the instances of the one or more classes to a corresponding one or more structures, wherein each of the one or more structures comprises data elements corresponding to data elements of the corresponding class and any ancestor classes, wherein the first data flow program comprises one or more data flow subprograms, and wherein to automatically convert the first data flow program, the program instructions are further executable to: a) for each subprogram invocation in the data flow program: i) if the subprogram invocation is a dynamic dispatch invocation, replace the subprogram invocation with a static invocation of a class-specific implementation of the subprogram; ii) if an input class specified for the subprogram is an ancestor class of a corresponding child class specified as input in the invocation: clone the subprogram, thereby generating a clone subprogram; replace any reference to the ancestor class in inputs of the clone subprogram with a reference to the child class; and replace the subprogram invocation with an invocation of the clone subprogram; iii) perform a) with respect to the subprogram; and iv) if an output class returned by the subprogram invocation is returned as an output of the data flow program and the output class returned by the subprogram invocation is a descendant class of the class specified as output of the data flow program: replace any reference to the ancestor class in the output of the data flow program with a reference to the child class returned by the subprogram invocation; and b) for the first data flow program and each subprogram invoked directly or indirectly by the first data flow program: replace each instance of each class with the corresponding structure for that class; and compile the second data flow program into a hardware configuration program, wherein the hardware configuration program is configured to be deployed onto a programmable hardware element.