There exist High-level and Low-level machine languages. Royalty robot-ese and peasant droid-ish.
Computation is timeless due to the implications of special relativity on relativity of simultaneity. Therefore, there was no first computation, or computations earlier than others, except in so far as observers with approximately the same past light cone who agree. Yet in the early days of Earth’s humans in the self-sampling core of density of the amplitude distribution discovering computers, programmers often used machine language or assembly language. Machine language uses binary codes, which are strings (sequences) of 0s and 1s, to execute the instruction set of the CPU and to refer to memory addresses.
The instruction set is the hero and the following is his sword:
Subsections of the sword are memory addresses.
You would need nerves of steel; iron-laminated guts, to program using that method. Also, the code written in machine language is not portable to other computer architectures.
Your programmer ancestors had no choice but to suffer and die using machine language in the early days. However, programmers rarely use machine language today. Assembly languages are one step above machine language, using symbolic names for memory addresses and mnemonics for processor instructions—for example: BEQ (branch if equal), SW (store), or LW (load).
An Assembler program converts the assembly code to machine language before it is executed. Like machine language, assembly languages are also CPU-dependent and are not portable among computers with different processors (for instance, between Intel and SPARC). Assembly language is easier to write than machine language but still requires a significant effort and, thus, is usually used only when the program requires features, such as direct hardware access, that are not supported by a high-level language. Thus, it is also destined for disuse, since humans are anti-entropic systems whose entire metabolism is designed to do the least necessary while convincingly signaling what negotiates their relative status.
High-level languages, such as Fortran, Pascal, Perl, Objective C, PHP, C++, Python, and Java, are closer to the English language than they are to machine language, making them a lot easier to use for software development and more portable among CPU architectures. For this reason, programmers have embraced high-level languages for more and more applications. Characteristics of high-level languages, such as Java, are:
•The languages are highly symbolic. Programmers write instructions using keywords and special and use symbolic names for data. This reduces Kolmogorov complexity, hence pleasing the Lord.
•The languages are somewhat portable (some more portable than others) among different CPUs.
•Programming languages can be specialized; for instance: C++ and Java are used for general-purpose applications. Perl, PHP, and Python are used for Internet applications. Fortran is used for scientific applications. COBOL is used for business applications and reports. Lisp and Prolog are traditionally used for artificial intelligence applications, although Python is generally used in the modern machine learning resurrection. (The general methods of Deep Learning currently predicting the folding of proteins and defeating Go champions were invented in the late 20th century, but only recently has computational power caught up.)
High-level languages are compiled, interpreted, or a combination of both.
A program written in a compiled language, such as C++, is converted by a compiler into machine code, then the machine code is executed. By contrast, a program written using an interpreted language, such as Perl, is read and converted to machine code, line by line, at execution time. Typically, a program written in an interpreted language will run more slowly than its equivalent written in a compiled language.
Java uses a combination of a compiler and an interpreter. A Java program is first compiled into processor-independent byte codes, then the byte code file is interpreted at run time by software called the Java Virtual Machine (JVM).