What is an Integrated Development Environment?
At my job there are a number of proprietary applications written in Visual Studio. Visual Studio is a Microsoft package of compilers/interpreters and debugging aids, collectively known as an "integrated development environment" (IDE).
Compiler
Computer hardware responds to a type of computer language called machine code, which is expressed in strings of ones and zeros (binary code). Assembly languages, such as C, use symbols like conventional numerals and letters; in programming parlance, such symbols are called mnemonics, because they can be memorized. A program called an "assembler" translates assembly code for the computer processor. A compiler renders high-level programming languages such as Pascal, BASIC, or COBOL into machine code.
Assemblers tend to be specific to one particular processor; the assembler converts symbols into machine code in a general one-to-one correspondence; an analogy can be made to converting Imperial units of weights and measures into their metric equivalents. Compilers tend to interface with the OS kernel, so they are not so processor specific, but their output must be compatible with that particular kernel, while the compiler can only recognize code from a particular programming language (of which there are many). I say this because assembly languages and their assemblers are often referred to by the processor they served, while compilers are typically known for the language (and operating system) they were written for. The appropriate analogy here is that of translating from, say, English to mathematical notation. There is hence a correspondingly greater range of flexibility and functional specialization.
Very few programs today are written entirely, or even predominantly, in assembly code. Instead, programmers normally use a "high-level" language, such as C, Pascal, BASIC, or FORTRAN to write applications. "High-level" means that the programming language uses more familiar words as commands. Today, compilers and assemblers are typically so fast that there is relatively reason to use a lower-level language to program.
Interpreter
(main article)
An "interpreter" is a program that executes another program line by line, rather than translating it into assembly or machine code. When an interpreter runs a program, it responds to errors differently than would a computer running the compiled version of the same program. Since the compiled program is merely a translation, an error would potentially cause the computer running the program to crash. An interpreter can stop and send an error message.
Debuggers
Debuggers are programs that can identify problems in a program they are "running." They can also supply the programmer with clues as to the error in the program, such as, indicaticating where the error occurred in the program and a general diagnosis of the problem. Debuggers can also be used to defeat a program, such as those providing copy protection.
Screen capture of Macro Debugger, MS Word
VARIETIES OF IDE's
Visual Studio is a common form of IDE, obviously; it supports several different computer languages: C#, J#, and Visual Basic. Another IDE that supports multiple programming languages is Sun Microsystem's NetBeans IDE (J2SE, web, EJB and mobile applications) and the open source Eclipse (which can potentially support C/C++, CFML, Fortran, Lua, PHP and Perl, Ruby, Python, telnet and database). Sybase Powerbuilder is both a type of computer language and an IDE for building Powerbuilder applications.
In the past, it was more common for IDE's to support a single programming language (e.g., Borland's TurboPascal). Multi-language IDE's typically include additional tools that help port an application to a different language, such as database mapping tools.
Labels: compilers, development environment, programming