Other types of applications

Of course, we have several other categories that software can fall into. Let's look at some of them.

Systems software

The software in this category helps the user, applications, and computer hardware to interact and function together. These applications create an environment that other programs can work in. When a computer is powered on, the first thing that is loaded into the computer's memory is system software applications. They will mostly run in the background, even if some of them can have a visual user interface. Because these programs work directly with the computer's hardware, they are often referred to as low-level software.

The most well-known type of application we find in this category is operating systems. As we saw in Chapter 1, Introduction to Computer Programs, they let other software run and take care of the direct communication with the hardware.

The most well-known operating systems for desktop computers and laptops are as follows:

  • Microsoft Windows
  • macOS and macOS X (for Apple devices)
  • Linux

For smartphones and tablets, we have the following operating systems:

  • Android
  • iOS (for Apple devices)
  • Microsoft Windows Mobile

Programming software

In this category, we find the tools and applications used by programmers when they write and test software. First, we need the programs that are the actual language the programmers use. To be able to write a program in C++, Java, Python, or any other language, we must first install the software that will take care of the translation of the source code into machine code (see Chapter 2, Introduction to Programming Languages).

A programmer often uses specialized text editors that will assist them when writing code. Some programs are even more advanced and will provide not only an editor for writing the code but a range of other built-in tools that are useful to have access to when writing programs. These are called Integrated Development Environments (IDEs). An example of a built-in tool is a debugger, which is a program that will help the programmer to find errors in the code.

Serverless applications

A serverless application is a specialized variant of cloud-based applications. It can come in several different forms. Common to all these variants is that the cloud provider runs the servers needed, and dynamically manages all the resources the application needs. What this means is that we, for example, will not need to buy storage of a fixed size. The provider will add more storage as we need it, and we will pay for the storage we use. We can compare this to a scenario where if our hard disk is full, it just keeps increasing its storage capacity to meet our needs for more space.

This kind of software is interesting if you want to automate the maintenance of servers, storage, and other aspects of your infrastructure. These solutions are intelligent, so they can adapt to changes, for example, by giving us more storage when we need and reducing it again when the need drops.