Jump to content

Fourth-generation programming language

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Autodmc (talk | contribs) at 15:06, 13 September 2006 (Added "Contradict" and "Confusing" tags to this page.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A fourth-generation programming language (abbreviated 4GL) is a programming language designed with a specific purpose in mind, such as the development of commercial business software. Such languages arose after the introduction of modern, block-structured third-generation programming languages, which improved the process of software development. However, it was still considered by some to be 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 first used by James Martin in his 1982 book Applications Development Without Programmers to refer to non-procedural, high-level specification languages. Some believe the first 4GL was Ramis (see Ramis software) developed by Gerald C. Cohen at Mathematica, a mathematical software company. Cohen left Mathematica and founded Information Builders to create a similar 4GL, called FOCUS (see FOCUS software) . The term 4GL was used in the 60's. The great majority of 4GL users would describe themselves as programmers and most 4GLs allowed for (or required) system logic to be written in a proprietary macro language or a 3GL. Think of a 3GL or procedural language as describing how to do something and a 4GL as describing what you want done. No matter how good the 4GL might be, it is in effect a form of modeling and no model can cover all cases, so 3GL logic was required. In some primitive way, IBM's RPG could be described as the first 4GL.

All 4GLs are designed to reduce programming effort, the time it takes to develop software, and the cost of software development. They are not always successful in this task, sometimes resulting 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:

  • Report generators take a description of the data format and the report to generate and from that they either generate the required report directly or they generate a program to generate the report.
  • Similarly, forms generators manage online interactions with the application system users or generate programs to do so.
  • More ambitious 4GLs (sometimes termed fourth generation environments) attempt to automatically generate whole systems from the outputs of CASE tools, specifications of screens and reports, and possibly also the specification of some additional processing logic.

Data management 4GLs such as SAS, SPSS and STATA provide sophisticated commands for data manipulation, file reshaping, case selection and data documentation in the preparation of data for statistical analysis. These tools simplify programming by using a defined file structure of record (row) by variable (column) with data processing occurring for each record in turn. SPSS and SAS have been in continuous use (and development) since the 1970's.

Some 4GLs have integrated tools which allow for the easy specification of all the required information:

Fourth-generation languages have often been compared to Domain-specific programming languages (DSLs). Some researchers state that 4GLs are a sub-set of DSLs. [1]

Some successful fourth-generation languages

  • Data-stream languages
    • APE
    • AVS
    • Iris Explorer

See also

This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.