Glossary
Assembly language
An assembly language is a low-level programming language which is processor-specific and has a direct correspondence between its instructions and those available on said processor.
Automatic memory
Automatic memory is a form of memory which is stored on the stack. This type of memory allocation is automatic and its lifetime is the duration of the scope it is allocated in. Hence, there is no need to explicitly release the allocated memory.
Command line interface
A command line interface (CLI) is a user interface where interaction between the user and the computer is done textually. For example, when you interact with your shell in a terminal, you are using a CLI.
Compiler
A compiler is a program that translates code written in a source language into an equivalent code in a target language. Generally, compilers translate code from a high-level programming language into a low-level language which will then be used to create an executable file.
Dynamic memory
Dynamic memory is a form of memory which is stored on the heap. This
type of memory is usually allocated by calling functions from the
malloc family in the standard library. Its lifetime is that of the
program, until it is released by calling free. A program exiting
without releasing all of its dynamic memory is said to be leaking.
File descriptor
A file descriptor is an integer that uniquely identifies an open
file. When a process is started, 3 file descriptors are
automatically opened by the kernel: stdin, stdout and stderr.
Graphical user interface
A graphical user interface (GUI) is a user interface that includes graphical elements such as windows, icons, buttons... GUIs can be seen as the counterpart of command line interfaces and are generally manipulated using a keyboard and mouse.