Compilers turn source code instructions into architecture specific executable code. For instance, C compilers are typically named cc. To compile the program hello_world1.c, a developer could enter the command:
On most systems, this would create an object code file named hello_world1.o and executable file called hello_world1. Creating the executable file from the object code file is also referred to as "linking" the program. Many compilers also perform the linking step automatically unless instructed not to. Most modern development environments do not require the typing of any commands to invoke the compiler or linker. Rather, these commands are automatically invoked through a simple button-click on the development tool's user interface.
After compiling a program, a programmer will debug the program to find and correct any errors. While simple debugging can be done by such primitive techniques as inserting print statements into the code, most developers would rather use some sort of graphical source code debugger. A modern debugger lets a developer step through the execution of code one line or one function at a time. At each step, the value of program variables can be examined, and if necessary, set to new values. Most debuggers also allow developers to set breakpoints at arbitrary lines of code or at specified functions. Debuggers will also catch most fatal errors and allow the developer to examine the state of the program at the time of the error.
Modern development environments combine editors, compilers, and debuggers into a single graphical tool that simplifies the edit-compile-debug cycle where programmers spend so much of their time. In addition, a good development environment will include other tools such as:
a graphical editor for creating user interface code
context sensitive editors and search tools
class browsers for object-oriented code and call tree browsers
performance analysis tools
source code control tools