Programming is the process of creating computer programs.
As one of the founders of programming languages, Niklaus Wirth, put it, “Programs = algorithms + data structures.
Programming is based on the use of programming languages in which program source codes are written.
Programming languages
Much of the work of programmers involves writing source code, testing, and debugging programs in a programming language. The source code and executable files of programs are objects of copyright and are the intellectual property of their authors and copyright holders.
Different programming languages support different programming styles (programming paradigms). Choosing the right programming language for some parts of the algorithm can reduce the time of writing a program and solve the problem of describing the algorithm most effectively. Different languages require different levels of attention to detail from the programmer when implementing an algorithm, the result of which is often a compromise between simplicity and performance (or between programmer time and user time).
The only language directly executable by a computer is machine language (also called machine code and machine command language). Originally, all programs were written in machine code, but this is almost no longer done. Instead, programmers write source code in a particular programming language, then, using a compiler, translate it in one or more steps into machine code ready to be executed on the target processor, or into an intermediate representation that can be executed by a special interpreter, a virtual machine. But this is only true for high-level languages. If full low-level control of the system is required at the level of machine instructions and individual memory cells, programs are written in assembly language whose mnemonic instructions are converted one to one in the corresponding machine language instructions of the target computer processor (for this reason, translators from assembly languages are obtained algorithmically simple translators).
Some languages generate interpreted binary “virtual machine” code, also called byte-code, instead of machine code. This approach is used in Forth, some implementations of Lisp, Java, Perl, Python, and languages for the .NET Framework.
Tools
The text editor of a programming environment may have specific functionality, such as name indexing, documentation display, syntax highlighting, and visual user interface creation tools. With the help of a text editor the programmer types and edits the text of the created program, which is called the source code. The programming language determines the syntax and original semantics of the source code.
In the programming process, integrated development environments are now widely used, which usually include:
- a code editor for entering and editing program text;
- debugger for debugging (error search and correction);
- translator for converting the program text into a machine representation;
- linker for assembling a program from several modules;
- other utility modules and tools.