A program can be designed with the barest of tools, paper and pencil, or in the programmer's head. In the realm of such informal environments, a program design may contain vague concepts expressed in an informal notation. Before he or she can execute this program, the programmer needs a programming environment, typically a complex system with many distinct components: a computer and its oper…