When we start in the world of programming, it is essential to understand the different types of programs we can create (and this is something that is often forgotten to explain in development courses).
In general, we can classify programs into four fundamental types:
- Console applications
- Graphical User Interface (GUI) applications
- Services or daemons
- Web applications
Usually, when you learn to program, you start by making one type or another (for example, console or web applications). But sometimes the focus is so narrow that transitioning from one to another can be a bit confusing.
Knowing the types, and their differences (which, deep down, aren’t that many) allows us to have a broader view. This way we can “lose the fear” of switching from one type of development to another.
Console Applications
Console applications are programs that run in the computer’s command line or terminal. These applications are known for being simple and efficient. Instead of a complex graphical interface, console applications rely on text and commands to interact with the user.

For example, I have a console application that helps me manage blog posts. Since I don’t need a graphical interface for anything, and I have many commands and options available, a CLI application works perfectly for me (or even better) than a GUI application.
In many courses, you will start by making console applications, because they are the simplest to begin with.
Graphical User Interface (GUI) Applications
Graphical User Interface (GUI) applications are programs that use visual elements to interact with the user (such as windows, buttons, menus, etc). These applications stand out for being easier to use and because they provide a better visual experience.
To give an example of a GUI application, think of a word processor like Microsoft Word or Open Office Writer. These applications allow users to create and edit text documents using an intuitive and visually pleasing interface.

To develop GUI applications, programmers use specialized libraries and frameworks, such as Tkinter for Python, WinForms or WPF for C#, or JavaFX for Java.
These tools provide predefined components and functionalities that simplify the creation of graphical interfaces.
Services
Services are programs that run in the background and are designed to perform specific tasks on a computer or network. Unlike console or GUI applications, services do not interact directly with users. Instead, they provide functionalities and resources that other programs can use.
An example could be the operating system service that manages networks. It is a program that runs without user interaction and is responsible for identifying networks and making them available to other programs.
Web Applications
Web applications are programs that run on a server and are accessed through a web browser. These applications have gained popularity due to their ability to work on different platforms and operating systems without the need to install additional software, just with a browser.
For example, an example of a web application would be a social network. Users can access it through a web browser on their computer or mobile device and use its functions like posting content, interacting with other users, or posting photos or file attachments.
