To begin with, let's define what is meant by “high level”? Traditionally, programming languages are divided into generations. The term generation of the language itself is rarely used in Russian technical literature, and the language itself cannot always be clearly and categorically attributed to one generation or another. So let's figure it out, first with it, and then move on to PHP itself.
The generation of language to its age is indirectly related. The word "generation" expresses only general tendencies and abstractness of language terms. Even in our days, the languages of the “younger” generations are still being created, for solving any specific problems, if there are prerequisites for this.
The first generation language is machine code. It is still in use now, and all other programming languages eventually translate into it. Young people may not be in the know, but even 30-40 years ago living people wrote on it. Other than jokes. Not hackers, but application programmers. Right so the bykeics made application programs, for example, the payroll of the plant employees.
The most famous representative of the second generation is the Assembler (ASM). With the help of it, the speed of writing programs and compatibility when transferring to related equipment has increased. The assembler did not just adjust some mnemonic commands to the machine codes, but allowed to abstract from many technical details, allowing them to concentrate more on solving an applied problem. Actually this last thesis is the main sign of induction in the transition from one generation of language to another.
')
The third generation of languages allowed almost completely to abstract from the "iron". There are already so many of them that it is difficult to list. One of the pioneers - Fortran, Pascal, BASIC. The third generation languages are still the most used and seem to cover all the necessary needs of modern programming. However, progress does not stand still. Programming theory has taken the next step and spawned the fourth generation of languages (4GL).
Not every language has a label of a specific generation and its own distinct place on the scale. An example of this is C. Although C appeared when the era of the third generation was already in full swing, he was born with clear signs of a second-generation language. This is not at all attatamism and degradation. This is exactly what he thought about - the language for writing operating systems. Taking all the necessary innovations and syntactic conveniences of third-generation languages, it allows you to write programs that are practically optimized as well as Assembly language. We can say that it is at around 2 ½ generations.
Not less interesting is the picture with C ++. Syntactically, this is the same C with additional bells and whistles. But because of them, C ++ ceased to be a language. By itself, it does not represent more value than C. It becomes interesting then, one or another object hierarchy is created in it, operators are redefined, and so on. When we get a new concept of working with data. In practice, this is a new language with C syntax that can fit any generation. That is, in fact, C ++ is not a language, but a tool for creating languages. Unfortunately, most programmers do not miss the stars from the sky. Whatever the feature-rich hierarchy of objects created in C ++, it will correspond to the commonplace third generation of languages. The PLO is in full perpendicular to the line of increasing abstractions.
We now live at the junction of the epochs of the third and fourth generation. Many simply misunderstand the very meaning of the emergence of a new generation, despite the fact that the old languages so perfectly solve all issues. The essence of the next step induction is the same - an abstraction from technical details in order to solve an applied problem more quickly.
Here should give examples of fourth-generation languages. Before this, it is necessary to make a reservation that the languages mentioned below may have to some extent the properties of the fourth generation. Syntactically, this may not be explicitly expressed. 4GL is a new concept, not a new syntax. Syntactically, the language may be similar to the third generation language, but the approach when working with it will be different.
Formally, the fourth generation of languages can be attributed to SQL. This is the most well-known representative, but since it is used in a very narrow specific task, it does not clearly demonstrate all aspects of 4GL. One of the early attempts was made by Informix. Together with their database and a set of standard libraries for other popular third-generation languages, they offer their own language, Informix-4GL. They took SQL as a syntactic model and, with other language constructs, made it a full-fledged development environment in which SQL commands are not something foreign, enclosed in quotation marks, but the native part of the language. In this sense, the dBase, FoxBase, Clipper family and the like can be attributed to the fourth generation languages.
An attentive reader may note from several of the examples listed above that what is said here is not even more about language, but about the development environment. This will be a good point, since modern application tasks require databases, not just as something where you can save some configuration data. The database (in the broad sense of the word) becomes the core around which the application is built. Therefore, it is not surprising that she no longer wants to be content with the rights of a third-party library (poor relative). Due to natural limitations, we get a situation where a database is tied to a language, not a language, but a language is built around a specific implementation of the database. Universal solutions are not known to me yet.
Recently, in addition to databases, another pillar has appeared around which it is necessary to build applications, and which has requested its lion’s share of attention - the web. But more on that below.
To be continued…
High-level PHP programming.
Part 2. Place PHP on the scale of generations.