The hardware, and all the software in the system are available to, and extensible by application programmers.
In addition to manual reference counting, application programmers may choose to make use of 'autorelease pools'.
It may include the program counter, stack pointer, and other numbers that are not easily accessible to the application programmer.
However, their application programmers reported they did not have the expertise in-house.
So, all the work of keeping up with changes relies on the application programmer.
This practice greatly reduces the number of details that application programmers must know and manage.
Higher level programming languages abstract details of the hardware, making differences between specific processors less obvious to the application programmer.
Most event-driven programming environments already provide this main loop, so it need not be specifically provided by the application programmer.
A fairly complex data presentation protocol permitted application programmers to format a screen for any number of business purposes.
It was not uncommon for application programmers to interface directly with hardware without support from the manufacturer.