The programming of those machines consisted then (1945-1955) in the manual configuration of switches and the interconnection of different electronic components by means of cables. The operations were carried out and perfected by a group of women who became the first programmers in history.
In successive years more powerful computers (Mark I, Mark II, Colossus) were developed in which the programs continued to be zeros and ones that were configured by means of switches and relays. This form of programming was called binary and the code entered was what is called machine code.
Machine code is a sequence of ones and zeros that is entered or loaded directly into the computer’s memory for later execution.
In 1950 Mauricio V. Wilkes of the University of Cambridge invented assembly language in an attempt to simplify programming by making it more understandable by using words instead of ones and zeros called mnemonics. Assembly language is based on the use of mnemonics accompanied by arguments and labels that are converted by an assembly program to machine code:
Each mnemonic represents an operation linked to the hardware that executes it. These can be arithmetic operations, jumping in the execution sequence, reading and writing to processor registers, internal memory, input/output ports. high and low level languages
low level languages
Languages such as machine code and assembly are called low-level languages.
These languages are characterized by offering the programmer total control over the hardware in which it is executed, allowing the maximum speed and capabilities of the computer to be achieved. high and low level languages
However, they have the disadvantage that they are exclusive to the computer or platform on which they run and require a high degree of specialization on the part of the programmer.
High level languages
From 1950 a whole succession of languages began to appear for different purposes. They are high-level languages .
The syntax of these languages is increasingly close to natural language and its structure evolves to allow new paradigms such as structured, object-oriented, functional programming. Similarly, data processing in programs evolves towards the use of more complex and dynamic structures such as lists, stacks, queues, maps, etc. high and low level languages
High-level languages seek to be independent of the hardware they run on, hiding their complexities from the programmer so that he can focus on the problem at hand. In this way it is also achieved that they are multiplatform so that they can be executed on different machines despite their internal differences. Compiled, interpreted and managed languages. Computers are only capable of executing machine code internally, so high-level code (source code) must be converted to low-level code for execution. There are different strategies for this:
Compiled languages are those that use compilers to translate source code into machine code to be executed directly by the computer. This is the case of languages such as C, C++ or Pascal among others: high and low level languages
The advantage of interpreted languages is that when they are executed by the interpreter, their execution is supervised and is more reliable. However, its execution speed is lower than compiled languages and it also requires the installation of the interpreter. However, in both cases it is necessary to create compilers or interpreters for each platform. high and low level languages
Lastly, there are managed languages . This is the case for languages like Java , or C# and Visual Basic .NET. These languages are compiled to an intermediate language or bytecode that is closer to low-level code, but platform independent. This code is executed by a virtual machine ( JVM ) which interprets and executes it in a managed manner.
In this case, the code can be compiled on any platform, but to run on a certain platform, the corresponding JVM must be installed. high and low level languages
Although this is a denomination not fully accepted; Medium-level languages are those that, despite having a high-level syntax and allowing data management through dynamic structures, also allow direct management of hardware aspects such as direct access to processor registers or system memory. Such is the case with languages like C. high and low level languages