What is programming language?

It refers to a language designed for the purpose of giving instructions or operations to machines (computers) so that they can communicate with machines. As a result, a series of processes are created in a programming language so that a computer can perform the desired task and made to work. To put it simply, it is a language for using a computer. It is fundamental to creating software, and since it is a set of logical operations, there is also a view of it as a kind of mathematical language.

Overview of programming languages.

It appeared before computers, and full-scale research originated from the study of mechanically calculable functions by mathematicians from around the 1930s. As a result, a language that machines can understand was born, and it was the computer in the modern sense that was invented later than language as a machine that executes computational and understandable languages.

Programming language history.

If you look closely at history, there are often journalists who made something similar to programming, but the full-fledged concept of programming language also emerged in mathematics. Court Goedel created the concept of a primitive recursive function that abstracted the algorithm in the process of proving the imperfection theorem, and proved it mathematically, this is the first programming language. (If you have to say, it’s called a functional language.) And a few years later, “Proving the imperfection theorem.” This is equivalent to “There is no way to prove the contradiction of this system through a system.” Refer to the stop problem.

Since then, a field of mathematics called Computability Theory has emerged, and various systems for expressing algorithms such as [1] Lambda calculus, Unlimited register machine (URM), While-programming [2], SKI[3], and so on.

For reference, in the case of Alonzo treatment that devised Lambda calculus, I try to prove the completeness of mathematics just in case I can use it, but I fail. The question is, are the systems of algorithms that can represent all algorithms, but it was impossible to prove them because algorithms are not mathematically defined concepts. However, Alonzo’s treatment suggests that those algorithmic systems are just equivalent to the ‘set of all algorithms’ because all of those algorithmic systems are mathematically identical, even if they are different in expression, and this is the famous treatment proposition (Church’s Thesis) [4].

While this conceptual foundation for programming language is laid on the mathematics side, von Neumann, also a mathematician, uses them to create a von Neumann structure to create a real computer. By combining it with the electronic side, an object that can be said to be the prototype of modern computers was created. Such an electronic calculation device was controlled through an electrical signal, and the method of expressing the electrical signal was only about 1 in which a signal came in and no signal came in. Therefore, the control signal had no choice but to use the Leibniz [5] binary method, represented only by 0 and 1, and the electronic calculator performed the specified operation when the signal was input.However, in actual computer operation, to distinguish whether the device is turned off and there is no electrical signal or a state indicating 0, 0 is considered 0 if it is a signal below the reference level (typically expressed in volts). Likewise, 1 is also considered 1 if it is a signal above the reference level.

Therefore, in order to make something work, a person had to write these control signals themselves, and in the early days, mechanical language in the form of a person writing the control signals of 0 and 1 was used. As can be seen from the item, this machine language is the most primitive language in this field, and machines can be understood immediately, but it is difficult for humans to understand and recognize, so machine language and assembly language that correspond 1:1 to make it easier for humans to read. Although it was easier to see than in the past, it was still difficult to decipher, and with the spread of computers, the demand for programs increased, and the productivity of assembly language was extremely eye-catching, so languages that were easier to program began to emerge.

In the early days, programming languages were subject to many restrictions due to limitations in computer performance, and some assembly-like nature remained. Nevertheless, it was easier to read and much easier to understand than the assembly language. In addition, with the spread of computers and the development of performance, the constraints that have been at stake have disappeared one by one, and programming languages that are easier for people to read, understand, and write have emerged one after another.

However, since the only language that computers can understand is machine language anyway, it has become easier for humans to do, but the work behind it is becoming much more complicated.

In summary, language that is comfortable for machines is fast, but it is not an object that humans can recognize, so productivity is poor. On the other hand, language that is comfortable for humans is slow, but it is easy to understand and has high productivity. In terms of conversational language, it can be seen as an executive problem.

However, there is a trap here, and of course, Java is faster if you compare the execution speed of the mechanical-knitted redness code and the Java-knitted optimization code. In other words, even if you use a machine language, if the programmer who deals with it does not clearly understand the characteristics of the machine, it may be slower than the results of using other advanced languages. Therefore, some development-related books advise not to abuse machine or assembly language when optimizing or tuning performance. In fact, compilers and assemblers are now very developed, so machine-transformed codes are better than poorly woven codes by humans. Of course, the machine does not improve the algorithm itself, so it is more important to clearly convey what you intended to do to the compiler. For example, “The values in this array will never change in the middle until the end of the calculation, and nothing but numbers is wrong, and all you want to do is add them up,” and the compiler accelerates hardware and parallelizes code to implement the programmer’s intentions. Adding an array number using a normal loop statement adds to the arrangement of all variables if the compiler cannot determine whether the number will change in the middle or not.Or) can occur, but the ability not to create such a code in the first place is more important.

In addition, assembly language is much easier to read than difficult programming language.