We write code into a text file, and this file is processed by the computer.
It can be processed in 2 ways, depending on the programming language used. I already mentioned we can separate programming languages in 2 big groups: compiled and interpreted.
If the programming language is compiled, the program is analyzed by a program called compiler, and it must be compiled before it can be executed.
In this case our program, written to text files, is transformed into an executable file, which is no more text-based. It will be a
.exe file on Windows, for example. It’s the case of C, Go, Swift.
In this case there is a program, called interpreter, that has the ability to execute our own program. We skip the compilation phase, and proceed directly to execution.
The difference is quite a big deal. Compiled programming languages are able to intercept and point out errors, bugs or possible issues before execution. With interpreted languages, an error might only be discovered when a particular situation happens (mind you, this will also happen with compiled languages, but with a lower chance).
But interpreted languages feel more lightweight to write. The process is different enough to have fans of each approach.