A computer-implemented method comprising the step of: performing an initial compile process comprising: translating a high level program into a host program comprising a low level instruction stream for controlling a data path of an integrated circuit; and interpreting the high level program to generate a low level code, wherein the low level code defines a hardware definition of hardware components on the data path of the integrated circuit for implementing the low level instruction stream on the integrated circuit; and wherein the hardware definition is generated based on a throughput measurement of the hardware definition, a goal of reducing the number of initial compile processes, or a combination thereof; characterized in that the hardware definition also includes hardware components of the programmable logic of the integrated circuit that are unnecessary in the low level instruction stream; and the method further comprising the step of performing, after the initial compile process, a secondary compile process comprising: determining (118, 120) whether modifications of the high level program (12, 112) can be implemented using the hardware definition of the initial compile process and within efficiency bounds, if so, implementing modifications of the high level program by modifying the low level instruction stream based upon modifications of the high level program and using the hardware components of the hardware definition without modifying the hardware definition obtained by the initial compile process; and if not, performing another initial compile process using the high level program (12, 112) including said modifications. performing an initial compile process comprising: translating a high level program into a host program comprising a low level instruction stream for controlling a data path of an integrated circuit; and interpreting the high level program to generate a low level code, wherein the low level code defines a hardware definition of hardware components on the data path of the integrated circuit for implementing the low level instruction stream on the integrated circuit; and translating a high level program into a host program comprising a low level instruction stream for controlling a data path of an integrated circuit; and interpreting the high level program to generate a low level code, wherein the low level code defines a hardware definition of hardware components on the data path of the integrated circuit for implementing the low level instruction stream on the integrated circuit; and wherein the hardware definition is generated based on a throughput measurement of the hardware definition, a goal of reducing the number of initial compile processes, or a combination thereof; characterized in that the hardware definition also includes hardware components of the programmable logic of the integrated circuit that are unnecessary in the low level instruction stream; and the method further comprising the step of performing, after the initial compile process, a secondary compile process comprising: determining (118, 120) whether modifications of the high level program (12, 112) can be implemented using the hardware definition of the initial compile process and within efficiency bounds, if so, implementing modifications of the high level program by modifying the low level instruction stream based upon modifications of the high level program and using the hardware components of the hardware definition without modifying the hardware definition obtained by the initial compile process; and if not, performing another initial compile process using the high level program (12, 112) including said modifications. determining (118, 120) whether modifications of the high level program (12, 112) can be implemented using the hardware definition of the initial compile process and within efficiency bounds, if so, implementing modifications of the high level program by modifying the low level instruction stream based upon modifications of the high level program and using the hardware components of the hardware definition without modifying the hardware definition obtained by the initial compile process; and if not, performing another initial compile process using the high level program (12, 112) including said modifications.