Programs normally undergo significant alterations during development.  As a program develops, programmers often think of alternate ways to perform certain functions in a program.  For example, a programmer may start with a basic sort function, only to learn later that although the basic function performs its intended function, the program is inefficient because the basic version of the function is inefficient. 
Program developers introduce alternate versions of the function by cutting out the old code and pasting in the new code.  The program is compiled again using the new code and tested for efficiency.  Several iterations of new code may be developed before the program performs as desired. 
Once a program is developed, or throughout the development process, the program is tested in order to determine whether the program performs as expected.  Often source code is introduced into a program under test in order to determine the internal state of a process.  One way to test or debug a program is to include “write” statements in the source code that write variables of interest to a file or the screen.  Thus, the source code may have certain functions that are useful for testing, but must not execute upon program release.  A developer removes these statements from the source code before a final compilation.