The problem is most pronounced in the cases where a programmer wishes to hear the processing of an existing soundfile in real-time, as the output is being produced. However, the implementation of the random access functions discussed below are more complex in design due to this internal buffering. For example, a microprocessor that handles floating point data well will probably execute signal processing code faster if presented with floating point samples. However, some applications run faster when the audio samples are presented as long integers. Therefore, in reading and writing these samples from and to disk, it would simplify programming if there were only one function, with one name, that handled all of these different types.
Overloaded functions are functions with the same names that take different types of arguments.
Consequently, several different versions of a procedure can be written, all with the same name., thus simplifying the naming schemes in a large software project. Since the AIFF native type is two's complement integer, all of the read and write procedures automatically convert from two's complement 16-bit integer to the parameter type, without the user having to the conversion himself. A major issue in all software design is how to test and debug code. Many architectures for audio manipulation do not provide good error handling mechanisms, or the error codes returned by audio procedures are often cryptic. For example, the following code tries to open a 22050 Hz, mono 16-bit file, and upon failure, prints the error to standard error.