# Theory: IDE
Writing just one program involves a whole variety of tasks:
you write the code,f find and fix errors that inevitably arise,
then the code has to be compiled, run, and documented. And guess
what, all of this has to be done over and over again (well, that's just great).
With small programs like **Hello World**, you can perform these tasks using
a simple text editor to write your source code, and a set of tools to translate
and start the programs. Some text editors can even highlight the syntax, which
simplifies the writing process, but this may not suffice on working on something
larger and more complex.
As a professional developer, you need a specialized tool to navigate through
multiple-file programs, modify, compile, run, and debug them, display syntax errors,
and so on. **Integrated Development Environment (IDE)** is precisely that: it offers
a single program in which developers can deal with all these common tasks.
## Brief historical background
Most modern IDEs are graphical, though the first ones were used back in the era when
no one dreamed of graphics. They were built on a text-based interface and could only
be operated using function keys and hotkeys to invoke various functions. This was,
for example, Turbo Pascal, created by Borland:

The first IDEs were designed to be operated via a console or terminal, which were new
in themselves. Indeed, before that, programs were generally created on paper and
entered into the machine using pre-prepared paper media such as punched cards or
punched tapes.
Here are some specific historical examples.
Dartmouth BASIC wast the first language designed to run in a console or terminal.
This ancient IDE was controlled by commands not even using menus and hotkeys. However, it did allow you to edit source code, manage files, compile, debug, and run
programs in a manner fundamentally similar to modern IDEs.
Then it was time for Maestro I. It is a product from Softlab Munich that was the world's
first integrated development environment for software. Can you believe it held a leading position
in its niche for almost twenty years? Today, though, Maestro I belongs to history.
As you see, humanity did not immediately come to the multifunctional IDEs.
## What is a modern IDE?
IDEs were created to maximize programmer productivity through tightly coupled components
with simple user interfaces. This allows the developer to do fewer steps to switch between
different modes, as opposed to discrete development programs. However, modern graphical
IDEs are a complex software package. It means, one can achieve the necessary acceleration
of the work process only after training. Anyway, there are no big difficulties here either:
many IDEs are quite interactive, and the interfaces of one manufacturer are often very similar,
so it is not too hard to switch from one IDE to another.
There are a lot of IDEs for different programming languages. Some support only a single
language, while others support multiple or can be extended with plugins. For instance, multiple are:
<span style="color: #00BEFF;">IntelliJ IDEA</span>, <span style="color: #00BEFF;">Eclipse</span>, <span style="color: #00BEFF;">NetBeans</span>, <span style="color: #00BEFF;">Android Studio</span>, <span style="color: #00BEFF;">Visual Studio Code</span>. IDEs for one specific
programming language are <span style="color: #00BEFF;">Delphi</span>, <span style="color: #00BEFF;">Dev- C ++</span>, <span style="color: #00BEFF;">IDLE for python</span>, <span style="color: #00BEFF;">PyCharm</span>.
As an example, this is what IntelliJ IDEA IDE looks like:

All of these environments can be run on Windows, Mac OS, or GNU/Linux.
## IDE components
In general, the development environment includes:
<ol>
<li>
<strong>Text Editor</strong>, which is designed to work with text files interactively
It allows you to view the contents of text files and perform various cations like inserting,
deleting, and copying text, contextual search, replacement, sorting strings, viewing character
codes and converting encodings, printing. They often contain additional functionality, such as syntax
highlighting.
</li>
<li>
<strong>Translator (compiler and/or interpreter)</strong>, which translates a text written in a programming
language into a set of machine codes and does this either immediately before starting the program (compilation)
or line by line (interpretation).
</li>
<li>
<strong>Build automation tools</strong>, which get the code ready and put everything together.
</li>
<li>
<strong>Debugger</strong>, which looks for errors in the code and immediately reports them
</li>
</ol>
<img style="width: 250px; height: auto;" src="https://imgur.com/0FDVfkH.png">
By and large, using an IDE makes you a more productive developer because it provides tight-knit components
with a similar user interface. It also automates some routine tasks, and even gives you advice and feedback.
That's all because the purpose of the integrated environment is to combine various utilities into one product.
This approach allows developers to focus into one product. This approach allows developers to focus on solving their
core problems, while common and standard operations are taken care by an IDE.
## Conclusion
To sum up,
- IDE is a specialized tool that navigates through your multiple-file programs,
modifies, compiles, runs, debugs them, and also displays syntax errors;
- Modern IDEs are graphical and interactive;
- some IDEs support only a single language, while others support multiple languages.