A fourth-generation programming language (or 4GL) is a programming language designed with a specific purpose in mind such as the development of commercial business software.
The process of software development had been much improved with modern block structured third-generation programming languages but it was still frustrating, slow, and error prone to program computers. This led to the first "programming crisis", in which the amount of work that might be assigned to programmers greatly exceeded the amount of programmer time available to do it. Meanwhile, a lot of experience was gathered in certain areas, and it became clear that certain applications could be generalized by adding limited programming languages to them.
The term 4GL was according to James Martin first used in his 1982 book Applications Development Without Programmers to refer to non-procedural high-level specification languages. Nevertheless, the great majority of users of 4GLs would describe themselves as programmers and most 4GLs allowed for (or required) system logic to be written in a proprietary macro language or in a 3GL.
All 4GLs are designed to reduce:
They are not always successful in this task and sometimes result in inelegant and unmaintainable code. However, given the right problem the use of an appropriate 4GL can be spectacularly successful.
A number of different types of 4GLs exist:
Some 4GLs have integrated tools which allow for the easy specification of all the required information. Examples include:
Some successful 4th-generation languages are: