Introduction to Programming Environments
Program development (implementation) typically consists of a (large) number
of loops through the following cycles:
The above scheme is inefficient and ineffective for several reasons:
- Many simple syntax errors can be avoided by using a
syntax driven editor.
Such an editor knows about the syntax of the programming language being
used and can detect errors such as missing or extra parentheses, incorrectly
placed operators, unterminated strings, etc.
- In order to compile the source code one needs to know dependencies
between source files in order to compile exactly those files that are needed.
A make procedure was first introduced in Unix to automatically
decide which files need to be compiled.
The X-Windows system was the first to introduce a makedepend program
to determine the dependencies automatically.
- When the program is executed it cannot be easily inspected to find out
what is going on. Analyzing a dump afterwards may not reveal where the error
occurred.
Because debugging doesn't work well on many systems, a majority of programmers
still do debugging by adding "print" statements to their programs to display
the values of certain variables at different stages of the program.
- This development cycle is especially inefficient for graphical
user-interfaces because every minor change to the design (or layout)
of the interface takes a whole cycle to view the visual effect of a change
in the source code.
In order to encourage the use of editors that are syntax-savvy,
compile tools that know about dependencies,
source-level debuggers and visual designers,
integrated programming environments are being built that combine
the strengths of these tools in one package.