Green Files

What is programming language, IDE and compiler?

Day: 05/31/2022 - Time: 16:56:51

Nowadays it is very common for people, especially when they are starting to program, not to understand very well all aspects of the software development process, the whole theory of computing, and the role of each tool in this process.


As people start out as computer users where the normal thing is to use a Microsoft Word for example, and that does everything he needs in terms of text editing, when she goes to program and they tell her to install Visual Studio, Eclipse, Android Studio or some other IDE she thinks that's the programming language.

The IDE (Integreted Development Environment) is the integrated development environment (note that it is male), that is, it is the program that integrates the various tools necessary for software development, helping the whole process to be easier.

Its main function is to help the programmer edit the code that will be used to create his program.

Another very important thing that all IDEs do is call the compiler, or interpreter, within certain parameters to generate and/or execute the created program if it does not contain errors.

It also helps:

-debug programs while running with various facilities;

-manage projects and their settings

-run tests, mount the deploy or even do it;

-do static analysis;

-version control;

-access database;

-automatically generate codes for certain coding standards, such as screens and reports;

-provide easy access to documentation;

-various aids during the code editing process.

This can vary from IDE to IDE and how it is configured. As the name says, these tools are usually integrated. Of course some are there by default, but many of them depend on an external program to perform the task. The language compiler itself is usually something external.

An IDE can support multiple languages ​​(have specific tools to support the use of a given language).


The compiler is the program that analyzes and generates the executable of what is being created. It takes human-readable text - what the programmer wrote - and transforms it into machine-understandable code, a binary code that has instructions for what the processor should execute (there are cases of intermediate code).

Obviously it is not a special, magical program. He is just a data processor like so many others. He reads texts and transforms them. In a way it is a relatively simple program. Of course, there is complexity in interpreting the entire grammar of a language and each one has its degree of complexity.

During this process, syntactic and semantic errors are checked, optimizations can be made, and a generation of new target code is performed.

In some cases it is possible to interpret this code instead of the traditional compilation process, even though the interpretation involves an internal compilation process.

The compiler must understand the rules by which a particular programming language was built, and must ensure that all of them were followed by transforming the code written obeying these rules.

In general the compiler is a console program, but there are cases that they are libraries that can be used together with other programs.

There are compilers that support several languages, although there is usually a certain separation (generally there is a single compilation platform but different compilers).

Programming language

The programming language is this set of rules. It is what defines the syntax and semantics to be obeyed. Just like every natural language, but in this case it is a more limited, more logical and purposeful language.

These languages ​​can be C, C++, C#, Java, BASIC, COBOL, Fortran, Pascal, Go, D, PHP, JavaScript, Python, Ruby, Perl, Lua, Lisp, Haskell, etc.

There are so many because each one has a strong point, in addition to better serving a specific type of problem, it meets the tastes of different people. There are cases that it is not the language itself that makes it viable for a problem, but the infrastructure that was built around it.

This set of rules is defined by a grammar and probably a formal specification, although in some more specific cases the compiler's implementation defines how the language behaves. In general, this occurs in non-standard languages ​​that only have one compiler for them.

Understand How is a programming language developed?.

It is common for compilers not to follow the specification 100%, usually due to failure, or even more, because of adding capabilities that the specification does not specify. Evidently this is the exception, otherwise it would start turning into another language.

Where do you program?

You use the IDE to make development work easier, but it is just an enabler and not to be confused with the programming language. Any problem you're having with the code you're writing is a problem with the language and not the IDE. Making a comparison with other languages, if you don't know how to write a word in Portuguese or how to build a sentence, you can't say that this is a difficulty you are having with Microsoft Word, it's a difficulty with Portuguese.

A problem with the IDE occurs during the general development process, when something fails or the difficulty encountered is in the IDE you have a problem with it. Comparing again, when you are not able to make a paragraph in Word, it is a difficulty with Word.

When any of the tools used fail or you encounter difficulty in isolation you have a problem with it specifically. This may be up to the compiler, but rarely a problem is with the compiler itself.

Most of the glitches or difficulties that the person encounters during the process is during the compilation process, but because the code has some problem, not because the IDE or the compiler is not working. So the problem is with the programming language.

And no, the bug is not in the IDE or the compiler. The bug is in your written code. It is easier to hit the lottery than a person new to programming to find a bug, especially in the compiler, preventing the correct use of the language.

An IDE can use different compilers, not only for different languages, but also for the same language. The language is unique (although it may have dialects), the compilers are not, and the IDE even less so. The fact that most people use a particular IDE for a language does not make it part of the language.

An IDE is totally unnecessary for using a programming language (well, there may be some esoteric language that requires it). The compiler is absolutely necessary, although in some cases it is more of an interpreter.

Examples of compilers and IDEs


Compilers like GCC support languages ​​like C, C++, Objective C, Fortran, Java (it's very rare for anyone to use it for it) and others. Note that GCC is just one of the existing compilers for C and C++ languages. It works on all mainstream platforms and many others. Understand by platform, processor architecture or operating system. In some it may require a different distribution, as is the case with Windows. In this operating system it is customary to use MinGW, but the compiler is basically GCC. Some people also use the Cygwin distribution, but it's rare.

The C and C++ languages ​​are standardized and have several compilers that meet their specifications. Among them Clang, Visual C++ (Note that it does not call Visual Studio C++ which would be the IDE for this language, despite the name, the compiler works on the command line and has nothing visual, this part is in the IDE) and Intel C++ Compiler, just to name the most popular and active ones.

Code::Blocks is one of the most used "standalone" IDEs. Those who use the Qt library often use the Qt Creator. Some people like CodeLite, C++Builder, or XCode. CLion starts to have adepts.

These are languages ​​where IDEs abound and all the important ones that allow the use of multiple languages ​​offer some level of support for them, at some level. Unfortunately there are some pretty bad ones listed in courses (Dev C++, cough cough).


Java is another language that has several compilers. The best known is the one made available by Oracle. Some deviate a bit from the standard and there is controversy as to whether it should be called a Java compiler, even Microsoft once had one. Another well-known is the compiler for Android which has its own characteristics. In addition to Eclipse and Android Studio, already mentioned, NetBeans is widely used with this language or C/C++. IntelliJ is another.


C# has the old compiler, the new one which is now a compilation platform, and the Mono compiler. Visual Studio is the most used IDE for this language, but there are others, such as SharpDevelop or MonoDevelop. Today is Visual Studio Code is used a lot, for other languages ​​as well.


BASIC has several dialects, each with its own compiler. But dialect may be different enough for us to regard as different languages. Visual BASIC is probably the best known of these, and it often runs alongside Visual Studio.


JavaScript is usually interpreted or compiled at the time of use. This is usually done in the browser and each has its own compiler. IE/Edge, Chrome/Opera, Safari, etc. Most of the IDEs mentioned support JS well, another is WebStorm.


PHP is an interpreted language. There is an official platform of it that can be complemented or distributed in different ways. It is rare for a different distribution and especially a separate implementation from the official one to have any kind of traction in the market. There are a huge number of IDEs for PHP, but it's rare to have one stand out more than others.


Python, and especially Ruby, have compiler options, but they don't tend to be very successful either. Several IDEs are available, including extensions to the IDEs mentioned above, as they are designed to support multiple languages.

There is at least one case of language and IDE getting mixed up, even though they are different things, Delphi.

I could go on citing several other languages ​​with their compilers and IDEs, but I think this gives a good basis for asking more specific questions later.

online IDEs

I don't know if you can call it a real IDE, but there are several that can be used for quick code like ideone,, .NET Fiddle, Compiler Explorer, etc.


It is important to understand these differences to develop better.

And it is important to know this to use the correct tags and better describe the problem. Don't say your problem is in the IDE when it's actually in your code written in a certain language (use the language tag and not the IDE you're using). The fact of using an IDE does not usually help anything in these cases. Only when there is a problem that can only occur in its use.

It is more important to inform the compiler when the language tends to have several.