| programming languages: design principles, implementation constructs | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|
| 1. programming languages: design principles, implementation constructs | << | >> |
iii. programming environments
- programming environment tools
"Note that I am NOT suggesting that Unix is a state-of-the-art programming environment. There are many that are better, but this is the one we're using." M. Scott.
Unix examples
editors (structure?) vi, emacs ...
pretty printers cb, indent ...
pre-processors
esp. macros cpp, m4, watfor ...
debuggers (needs symbol table) adb, sdb, dbx, gdb ...
style checkers lint, purify, ...
module management make
version management sccs, rcs
assemblers as
link editors, loaders ld, ld-so
perusal tools more, less, od, nm ...
program cross-referencing ctags
The better, state-of-the-art environments have more integration to them.
For example,
Cedar, Smalltalk, Interlisp at Xerox PARC
Common Lisp on Symbolics
Sabre C on Unix
MPW on Macs
Visual Studio on PCs
integration means
if you get a syntax error message from the compiler your editor
window pops up with the cursor at the mistake, for you to fix
if your program gets a subscript error you pop up in the debugger
without doing anything special
the compiler has something like 'make' built in; it won't let you
link together incompatible versions of things
type checking works across separately-compiled modules
the editor has automatic access to cross-referencing information
on your program, so if you want to see all the places you call
'foo' it's easy
etc.