Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

I'd like to know the general procedure of how an IDE is built/compiled/created.

Additionally, what are some tools/scripts used to create an IDE?

I don't mean to say that compiling IDE needs an IDE. It was just a general assumption made by me that since IDE is just a piece of software too so it sounds logical to me that they may use the previous version of IDE to build the next one. I want to understand how the IDEs are built.

share|improve this question

closed as too broad by MichaelT, gnat, GlenH7, Robert Harvey, jmo21 Oct 15 '13 at 11:20

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs. If this question can be reworded to fit the rules in the help center, please edit the question.

They are made into executables the same way any other programming project is. There's nothing special about an IDE; it's just a piece software like any other. –  Robert Harvey Mar 7 '13 at 5:08
What's even more confounding is: C++ was written in C++. –  Casey Mar 7 '13 at 5:45
Visual Studio is not a compiler. FYI, the IDE (as we know it) came after the compiler. –  Austin Henley Mar 7 '13 at 7:07
The main confusion OP seems to have is that he apparently thinks the only way to compile things is by pressing a button or selecting a menu option in an IDE. Which of course is not the case. –  jwenting Mar 7 '13 at 7:50
@l46kok if you've compiled code before without an IDE, why do you think compiling an IDE needs an IDE? You should know better. –  jwenting Mar 7 '13 at 10:53

3 Answers 3

To understand the answer, you need to understand the "self hosting" concept.

Self hosting refers to when a project is sufficiently advanced to support its own development.

For example, consider Git, from Wikipedia:

The development of Git began on 3 April 2005. The project was announced on 6 April, and became self-hosting as of 7 April.

Consider Visual Studio 2002 - it would have been written in Visual C++ 6.0 (largely). Subsequent versions would be written in the current product, or perhaps even they eat their own dogfood when development has reached a certain milestone.

share|improve this answer
So then am I correct to assume the example I've written above regarding VS 2012 and Eclipse is correct? –  l46kok Mar 7 '13 at 5:13
Well it is probably "compiled" with a fairly complex MSBuild script (VS2012) but it is likely the initial development for VS'12 would have occurred in 2010. –  Sam Mar 7 '13 at 5:15

Typically to compile the next version of an IDE/compiler, you would use the previous version of the compiler. (If you make an optimising compiler, it can then compile itself to make a more performant version of the same thing.) And it really is "compilers all the way down", except that the first compiler was a human converting the language to machine code.

A famous example comes from Lisp; the definition for eval was so simple that Steve Russel realised he could write it in machine code, and he ended up with a working Lisp interpreter.

share|improve this answer

An IDE is just an application like any other, which just happens to be focused on writing text files that contain code, and invoke compilers, linkers and other development tools with certain settings.

As such, there are no limits to how you develop a particular IDE. You could write an IDE in Python that is used to develop programs in OCaml and Haskell.

A more advanced IDE will require access to some compiler-like and/or run-time environment features to provide things such as autocompletion of user-defined entities, error highlighting during typing of code instead of compilation, development hints, ... That doesn't mean the IDE necessarily has to be a compiler, or be based on a compiler, it could still just have specialized tools that provide those stages of compilation (e.g. parsing) that are needed for the IDE features.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.