<P> The earliest computing machines had fixed programs . Some very simple computers still use this design, either for simplicity or training purposes . For example, a desk calculator (in principle) is a fixed program computer . It can do basic mathematics, but it cannot be used as a word processor or a gaming console . Changing the program of a fixed - program machine requires rewiring, restructuring, or redesigning the machine . The earliest computers were not so much "programmed" as they were "designed". "Reprogramming", when it was possible at all, was a laborious process, starting with flowcharts and paper notes, followed by detailed engineering designs, and then the often - arduous process of physically rewiring and rebuilding the machine . It could take three weeks to set up a program on ENIAC and get it working . </P> <P> With the proposal of the stored - program computer, this changed . A stored - program computer includes, by design, an instruction set and can store in memory a set of instructions (a program) that details the computation . </P> <P> A stored - program design also allows for self - modifying code . One early motivation for such a facility was the need for a program to increment or otherwise modify the address portion of instructions, which had to be done manually in early designs . This became less important when index registers and indirect addressing became usual features of machine architecture . Another use was to embed frequently used data in the instruction stream using immediate addressing . Self - modifying code has largely fallen out of favor, since it is usually hard to understand and debug, as well as being inefficient under modern processor pipelining and caching schemes . </P> <P> On a large scale, the ability to treat instructions as data is what makes assemblers, compilers, linkers, loaders, and other automated programming tools possible . One can "write programs which write programs". This has allowed a sophisticated self - hosting computing ecosystem to flourish around von Neumann architecture machines . </P>

This type of memory stores data and instructions that the cpu is likely to need next