Faster, cheaper, more widely available secondary storage devices to store programs to non-volatile memory. This was needed, as it was cumbersome to have to type code in by hand in order to use the computer in a useful way, which would be lost upon every reboot due to the system saving it to volatile memory. The requirement for a convenient high-level language and a translator for such a high-level language to the corresponding machine code.