By Timur Galimov (tishgalimov@edu.hse.ru)
Programming languages are one of the key components in the world of information technology. As time passes, new languages emerge and old ones are modified and improved. As a result, different generations of programming languages emerge. Each generation has its own features and advantages that determine their use in different areas of software development. In this article we will briefly consider how and by what criteria generations are divided, and also we will consider the fourth, fifth and natural language generations in more detail and try to find out what are their prospects of development and application.
Let's take a brief excursion into understanding language generations:
A programming language generation is a classification that assigns programming languages to specific generations based on their development and capabilities. Each generation of them is characterised by new features and approaches to programming.
First-generation programming languages (machine languages) were originally used for programming at the machine code level that computers could understand. An example is the IBM 704 machine code, which consisted of a set of assembly language instructions designed to be executed on a specific hardware platform.
Second-generation programming languages (low-level languages), also known as low-level languages, provided more abstract instructions and memory handling capabilities. An example of such a language is the C language, which allows the programmer to be more comfortable with memory handling and low-level operations.
Third generation programming languages (high-level languages) provide a higher level of abstraction and convenient syntactic constructs. Examples of such languages are Python, Java, and C++, which have rich libraries and capabilities for developing complex software systems.
The fourth generation of programming languages (declarative programming languages) focuses on describing a desired result rather than a sequence of steps to achieve it. An example of such a language is SQL, which is used to work with databases and allows you to describe desired queries rather than specific steps to execute those queries.
The fifth generation of programming languages (artificial intelligence languages) is related to the development of artificial intelligence. An example is the Prolog language, which is used for logic programming and solving artificial intelligence problems.
Let's take a closer look at the 4th and 5th generations.
Fourth-generation language (4GL) is a high-level programming language that is an evolution of 3GL. It provides a higher level of abstraction from the inner workings of the computer, making it convenient, powerful and versatile for programmers. 4GL focuses on solving specific problems, for example, SQL operates on large amounts of information at a time without focusing on developing software systems. These languages can include database support as in the aforementioned SQL, report generation, mathematical optimisation, GUI development or web development.
There are different types of 4GLSs, including table programming, report generation languages, form generators, 4GLs that automatically generate entire systems, and 4GLs for data management such as SAS. Some 4GLs also have inbuilt tools for simply specifying the required information. In the 21st century, 4GL systems have emerged as “low code content” environments or platforms to address the problem of rapid application development in short periods of time. Vendors often provide sample systems such as CRM, contract management, error tracking, based on which development can be done with minimal programming effort.
While 4th generation programming languages (4GL) are task-oriented - they provide a higher level of abstraction than 3GL and specialised facilities for working with the tasks and tools discussed above, 5th generation programming languages (5GL) are a more modern and experimental generation. They focus on developing programmes using artificial intelligence, neural networks and processing complex data.
These programming languages such as PROLOG, Mercury and OPS5 are designed to be similar to human speech, making computers smarter. They are mainly used in artificial intelligence research, focusing on constraint programming, which is similar to declarative programming. An example of a fifth generation language is PROLOG, which uses mathematical logic to solve problems set by the programmer.
Unfortunately, 5GL programming languages have not received the attention they deserve. I attribute this to the fact that although they were designed to simplify the programming process and make it more accessible to people without a computer science background, they are still difficult to master without a computer science background. Also, their scope is the same, AI and ML, but in most cases, a lower level of abstraction at the 3-4 generation level is required when developing these types of systems.
Consider a new technology, just gaining popularity, that allows you to write programmes and communicate with a computer in natural language:
Natural language programming is a field of artificial intelligence that deals with the ability of computers to understand and process human language. It is an interdisciplinary field that combines linguistics, computer science, and artificial intelligence. NLP (not to be confused with “Natural language processing” and even less so with “Neuro-linguistic programming”) is used in a variety of applications including machine translation, chatbots, virtual assistants and speech recognition. NLP research is also being used to develop new methods for teaching computers to understand human language.
With the rapid expansion of artificial intelligence capabilities, many experts predict that natural language programming (NLP) will become increasingly important in the future. This is what allows computers to understand the meaning of our words and execute commands accordingly. As AI continues to evolve, it is likely that NLP will become even more important. This is because as AI becomes better at understanding and responding to human language, the need for traditional programming languages will diminish. In other words, we will be able to simply tell computers what we want them to do, rather than writing code to explain to them how to do it.
It sounds very promising! However, to date, this technology has not managed to gain popularity, most likely for the following reasons:
In this article, we looked at comparing generations of programming languages, including 4GL, 5GL, and natural language programming. Each generation of programming languages has its own features and advantages that can be useful in different situations.
4GL programming languages provide a high level of abstraction and usability, making them attractive for rapid application development and database management. They allow developers to focus on business logic and data analysis, minimising the need for low-level details. 5GL programming languages, although not widely adopted, offer opportunities for developing complex systems such as artificial intelligence and expert systems. They aim to simplify the programming process and make it accessible to a wide range of users, but their complexity and limited use limit their popularity. Natural language programming, although it has the potential to simplify the programming process, is not yet widespread. The complexity of natural language structure, ambiguity and contextual variations create obstacles to the accurate and unambiguous understanding of programmes by computers.
The development of programming languages including 4GL, 5GL and natural language programming will continue in the future. New technologies and tools will be developed to improve the programming process and meet the needs of developers. For now, however, traditional programming languages such as 3 and 4GL remain the primary tool for developing applications and systems. But 5GL and NLP cannot be discounted as they already have some early popularity, which will grow in proportion to the development of the artificial intelligence and machine learning industry, one of the most promising areas in computer science.
1. Jose Stigliano, Marco Bruni. End-User Computing Tools (2003). URL: https://doi.org/10.1016/B0-12-227240-4/00057-5
2. Akhil Gudivada, Dhana L. Rao. Computational Analysis and Understanding of Natural Languages: Principles, Methods and Applications (2018). URL: https://doi.org/10.1016/bs.host.2018.07.003
3. Natural language programming. URL: https://en.wikipedia.org/wiki/Natural-language_programming
4. Constantinos J. Stefanou. System Development Life Cycle (2003). https://doi.org/10.1016/B0-12-227240-4/00176-3
5. James V. Luisi. Pragmatic Enterprise Architecture (2014) URL: https://doi.org/10.1016/B978-0-12-800205-6.00003-2