For more advanced use of the software and hardware support, the environment will need an asynchronous data exchange protocol. The standard approach is to use something like a unix pipe for communication and to pass an encoded (variable length) data block through this pipe for reconstruction at the other end. We can assume that hardware accellerators will not have advanced compilers or graphical display output. Debugging must often be done using print statements and a basic ASCI file data output stream becomes essential. Standard data files should thus be in human readable ASCI where possible.
Clearly the software library must be capable of supporting a basic kernal of functionality including only file i/o and algorithmic processing but excluding all graphical interface functions. The libraries will thus need to be well defined with a clear hierarchal separation. Machine vision libraries should be independent and modular, though this could be considered as standard programming practice.
Efficient use of some hardware may require a specific language support mechanism (eg: parallelism or vectorisation).