Fourth-generation programming language: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Blanked the page
AntiVandalBot (talk | contribs)
m BOT - rv 64.139.230.88 (talk) to last version by BOT-Superzerocool
Line 1: Line 1:
A '''fourth-generation programming language''' (abbreviated '''4GL''') is a descriptive term used for [[programming language]]s and environments designed with a specific purpose in mind, such as the development of commercial business software. In the [[History of computing|evolution of computing]] (see [[Programming_language#Generational_view|programming language generations]]), the 4GL followed the [[Third-generation programming language|3GL]] in an upward trend toward higher abstraction and statement power. The 4GL was followed by efforts to define and use a [[Fifth-generation programming language|5GL]].

The natural-language, block-structured mode of the [[third-generation programming language]]s improved the process of software development. However, [[Third-generation programming language|3GL]] development methods can be slow and error prone. It became clear that some applications could be developed more rapidly by adding a higher-level programming language and methodology which would generate the equivalent of very complicated 3GL instructions with fewer errors. In some senses, [[software engineering]] arose to handle [[Third-generation programming language|3GL]] development. 4GL and [[Fifth-generation programming language|5GL]] projects are more oriented toward [[problem solving]] and [[systems engineering]].

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 as was seen with [[MARK-IV_%28Software%29|MARK-IV]] and [[MAPPER_%28Software%29|MAPPER]] (see History Section, Santa Fe real-time tracking of their freight cars - the productivity gains were estimated to be 8 times over [[COBOL]]). The [[Heuristic evaluation|usability]] improvements obtained by some 4GLs (and their environment) allowed better exploration for [[Heuristic %28computer science%29|heuristic]] solutions than did the [[Third-generation programming language|3GL]].

Fourth-generation languages have often been compared to [[Domain-specific programming language]]s (DSLs). Some researchers state that 4GLs are a sub-set of DSLs. <ref>35th Hawaii International Conference on System Sciences - 1002 [http://csdl.computer.org/comp/proceedings/hicss/2002/1435/09/14350279.pdf&ei=pgcWQ6CwKsKYYMfF9OAI Domain-Specific Languages for Software Engineering]</ref> Given the persistence of [[Assembler]] even now in advanced development environments (MS Studio), one expects that a system ought to be a mixture of all the generations, with only very limited use of the 1st.

==History==
Though used earlier in papers and discussions, the term 4GL was first used formally by [[James Martin (author)|James Martin]] in his [[1982]] book ''[[Applications Development Without Programmers]]'' <ref>[[James Martin (author)|Martin, James]]. ''Application Development Without Programmers.'' Prentice-Hall, 1981. ISBN 0-13-038943-9.</ref> to refer to non-procedural, high-level [[specification language]]s. In some primitive way, IBM's [[RPG programming language|RPG]] (1960) could be described as the first 4GL followed closely by others, such as the [[Sterling Software|Informatics]] [[MARK-IV_%28Software%29|MARK-IV]] (1967) product and [[Sperry]]'s [[MAPPER_%28Software%29|MAPPER]] (1969 internal use, 1979 release).

The motivations for the '4GL' inception and continued interest are several. The term can apply to a large set of software products. Too, it can apply to an approach that looks for greater [[semantic]] properties and implementation power. Just as the 3GL offered greater power to the programmer, so too did the 4GL open up the development environment to a wider population.

In a sense, the 4GL is an example of '[[black box]]' processing, each generation (in the sense of the page) is further from the machine (see the [[Computer Science]] history in regard to data structure improvements and [[information hiding]]). It's this latter nature that is directly associated with 4GL having errors that are harder, in many cases, to debug. In terms of applications, a 4GL could be business oriented or it could deal with some technical domain. Being further from the machine implies being closer to domain. Given the wide disparity of concepts and methods across domains, 4GL limitations lead to recognition of the need for the [[Fifth-generation programming language|5GL]].

An early scheme for the 4GL supported entry of data within the [[Punched card|72-character]] limit (8 bytes used for sequencing) of the punched card where a card's tag would identify the type or function. With judicious use of a few cards, the [[Computer_programming_in_the_punch_card_era|4GL deck]] could offer a wide variety of processing and reporting capability where as the equivalent functionality in a [[Third-generation programming language|3GL deck]] would subsume, perhaps, a whole box of cards. At this time, parsing was driven more by position than by grammar. The 72-character metaphor continued for awhile as hardware progressed to larger memory and terminal interfaces. Even with its limitations, this approach supported highly sophisticated applications.

As interfaces improved and allowed longer statement lengths and grammar-driven input handling, greater power ensued. An example of this is described on the [[Nomad software|Nomad]] page.

::Another example of Nomad's power is illustrated by Nicholas Rawlings in his comments for the Computer History Museum about NCSS (see citation below). He reports that [[James Martin (author)|James Martin]] asked Rawlings for a Nomad solution to a standard problem Martin called the ''Engineer's Problem'': "give 6% raises to engineers whose job ratings had an average of 7 or better." Martin provided a "dozen pages of COBOL, and then just a page or two of [[MARK-IV_%28Software%29|Mark IV]], from [[Sterling Software|Informatics]]." Rawlings offered the following single statement, performing a set-at-a-time operation ...
The 4GL evolution was influenced by several factors, with the hardware and operating system constraints having a large weight. When the 4GL was first introduced, a disparate mix of hardware and operating systems mandated custom application development support that was specific to the system in order to ensure sales. One example is the [[MAPPER_%28Software%29|MAPPER]] system developed by [[Sperry_Corporation|Sperry]]. Though it has roots back to the beginning, the system has proven successful in many applications and has ported to modern platforms. The latest variant is embedded in the BIS <ref>[[Unisys]]. [http://www.unisys.com.hk/products/software/application__development/business__information__server/features.htm Business Information Server] (BIS).</ref> offering of [[Unisys]]. [[MARK-IV_%28Software%29|MARK-IV]] is now known as VISION:BUILDER and is offered by [[Computer Associates]].

[[Atchison%2C_Topeka_and_Santa_Fe_Railway|Santa Fe]] railroad used [[MAPPER_%28Software%29|MAPPER]] to develop a system, in a project that was an early example of 4GL, [[Software_prototyping|rapid prototyping]], and [[End-user computing|programming by users]]. <ref>Louis Schlueter, User-Designed Computing: The Next Generation, 1988. [book on report generator and MAPPER systems] </ref>The idea was that it was easier to teach railroad experts to use [[MAPPER_%28Software%29|MAPPER]] than to teach programmers the "intricacies of railroad operations". <ref>McNurlin & Sprague. [http://telaga.cs.ui.ac.id/WebKuliah/IKI42400/2004/McNurlin-5ed-ch09.pdf Technologies for Developing Systems] Information Systems Management in Practice. Prentice Hall, 2003. ISBN: 0131011391 </ref>

One of the early (and portable) languages that had 4GL properties was [[Ramis software|Ramis]] developed by Gerald C. Cohen at Mathematica, a mathematical software company. Cohen left Mathematica and founded Information Builders to create a similar reporting-oriented 4GL, called [[FOCUS|Focus]].

Later 4GL types are tied to a database system and are far different from the earlier types in their use of techniques and resources that have resulted from the general improvement of computing with time.

An interesting twist to the 4GL scene is realization that graphical interfaces and the [[End-user_computing|related reasoning]] done by the user form a 'language' that is poorly understood.

==Types==
A number of different types of 4GLs exist:

*[[Report-generator programming language|Report generator]]s 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-generator programming language|forms generator]]s 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 System|SAS]], [[SPSS]] and [[Stata]] provide sophisticated [[Command (computing)|commands]] for data manipulation, file reshaping, case selection and data documentation in the preparation of data for [[statistical analysis]] and reporting.

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

*James Martin's own ''Information Engineering'' [[systems development methodology]] was automated to allow the input of the results of system analysis and design in the form of [[data flow diagram]]s, [[entity relationship diagram]]s, [[entity life history diagram]]s etc from which hundreds of thousands of lines of [[COBOL]] would be generated overnight.
*More recently [[Oracle Corporation]]'s [[Oracle Designer]] and [[Oracle Developer]] 4GL products could be integrated to produce database definitions and the forms and reports programs.

==Some successful fourth-generation languages==
*Database query languages
**[[FOCUS]]
**[[NATURAL]]
**[[Progress 4GL]]
**[[SQL]]

*Report generators
**[[BuildProfessional]]
**[[GEMBase]]
**IDL-PV/WAVE
**[[LINC 4GL|LINC]]
**[[Metafont]]
**[[NATURAL]]
**[[Oracle Reports]]
**[[PostScript]]
**[[Progress 4GL]] Query/Results
**[[RPG programming language|RPG-II]]
**Gauss

*Data manipulation, analysis, and reporting languages
**[[Clarion Programming Language]]
**[[Ab Initio]]
**[[ABAP]]
**[[Cullinet|ADS/Online]] (plus transaction processing)
**[[Aubit-4GL]]
**[[Audit Command Language]]
**[[CorVision]]
** [[Cullinet|Culprit]]
**[[DSM Application Software Library|DASL]]
**[[FOCUS]]
**[[GraphTalk]]
**[[Informix-4GL]]
**[[LANSA]]
**[[Maple (software)|Maple]]
**[[MAPPER_%28Software%29|MAPPER]] ([[Unisys|Unisys/Sperry]]) now part of BIS
**[[MARK-IV (Software)|MARK-IV]] ([[Sterling Software|Sterling/Informatics]]) now VISION:BUILDER of CA
**[[Mathematica]]
**[[NATURAL]]
**[[Nomad software|Nomad]]
**[[PL/SQL]]
**[[Progress 4GL]]
**[[Ramis software|Ramis]]
**[[S programming language|S]]
**[[SAS Institute|SAS]]
**[[SPSS]]
**[[Stata]]
**[[Synon]]

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

*Screen painters and generators
**[[Oracle Forms]]
**[[Progress 4GL]] ProVision
**[[Unify Accell]]

*[[GUI]] creators
**[[4th Dimension (Software)]]
**[[Borland Delphi]]
**[[eDeveloper]]
**[[MATLAB]]'s GUIDE
**[[Progress 4GL]] AppBuilder
**[[Revolution programming language]]
**[[Visual Basic]]'s form editor
**[[Windows Forms]] (part of the [[.NET Framework]])
**[[OpenROAD]]

*Database driven GUI Application Development
**[[Powerbuilder]]

*Web development languagues
**[[ColdFusion]]

==See also==
*[[Domain-specific programming language]]

==External links==
* [http://www.soi.city.ac.uk/~tony/dbms/4ges.html Fourth Generation Environments]
* [http://aubit4gl.sourceforge.net/ 4GL GPL/GNU OpenSource development tools project]
* [http://www.google.com/url?sa=t&ct=res&cd=10&url=http%3A//csdl.computer.org/comp/proceedings/hicss/2002/1435/09/14350279.pdf&ei=pgcWQ6CwKsKYYMfF9OAI Domain-Specific Languages for Software Engineering] (Compares 4GLs to DSLs)

==References==
<references/>


{{FOLDOC}}

{{Programming language generations}}

[[Category:Programming languages]]

[[de:4GL]]
[[fr:L4G]]
[[nl:4GL]]
[[ja:4GL]]
[[pl:4GL]]
[[pt:Linguagem de programação de quarta geração]]
[[sl:Jezik četrte generacije]]

Revision as of 23:12, 27 November 2006

A fourth-generation programming language (abbreviated 4GL) is a descriptive term used for programming languages and environments designed with a specific purpose in mind, such as the development of commercial business software. In the evolution of computing (see programming language generations), the 4GL followed the 3GL in an upward trend toward higher abstraction and statement power. The 4GL was followed by efforts to define and use a 5GL.

The natural-language, block-structured mode of the third-generation programming languages improved the process of software development. However, 3GL development methods can be slow and error prone. It became clear that some applications could be developed more rapidly by adding a higher-level programming language and methodology which would generate the equivalent of very complicated 3GL instructions with fewer errors. In some senses, software engineering arose to handle 3GL development. 4GL and 5GL projects are more oriented toward problem solving and systems engineering.

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 as was seen with MARK-IV and MAPPER (see History Section, Santa Fe real-time tracking of their freight cars - the productivity gains were estimated to be 8 times over COBOL). The usability improvements obtained by some 4GLs (and their environment) allowed better exploration for heuristic solutions than did the 3GL.

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] Given the persistence of Assembler even now in advanced development environments (MS Studio), one expects that a system ought to be a mixture of all the generations, with only very limited use of the 1st.

History

Though used earlier in papers and discussions, the term 4GL was first used formally by James Martin in his 1982 book Applications Development Without Programmers [2] to refer to non-procedural, high-level specification languages. In some primitive way, IBM's RPG (1960) could be described as the first 4GL followed closely by others, such as the Informatics MARK-IV (1967) product and Sperry's MAPPER (1969 internal use, 1979 release).

The motivations for the '4GL' inception and continued interest are several. The term can apply to a large set of software products. Too, it can apply to an approach that looks for greater semantic properties and implementation power. Just as the 3GL offered greater power to the programmer, so too did the 4GL open up the development environment to a wider population.

In a sense, the 4GL is an example of 'black box' processing, each generation (in the sense of the page) is further from the machine (see the Computer Science history in regard to data structure improvements and information hiding). It's this latter nature that is directly associated with 4GL having errors that are harder, in many cases, to debug. In terms of applications, a 4GL could be business oriented or it could deal with some technical domain. Being further from the machine implies being closer to domain. Given the wide disparity of concepts and methods across domains, 4GL limitations lead to recognition of the need for the 5GL.

An early scheme for the 4GL supported entry of data within the 72-character limit (8 bytes used for sequencing) of the punched card where a card's tag would identify the type or function. With judicious use of a few cards, the 4GL deck could offer a wide variety of processing and reporting capability where as the equivalent functionality in a 3GL deck would subsume, perhaps, a whole box of cards. At this time, parsing was driven more by position than by grammar. The 72-character metaphor continued for awhile as hardware progressed to larger memory and terminal interfaces. Even with its limitations, this approach supported highly sophisticated applications.

As interfaces improved and allowed longer statement lengths and grammar-driven input handling, greater power ensued. An example of this is described on the Nomad page.

Another example of Nomad's power is illustrated by Nicholas Rawlings in his comments for the Computer History Museum about NCSS (see citation below). He reports that James Martin asked Rawlings for a Nomad solution to a standard problem Martin called the Engineer's Problem: "give 6% raises to engineers whose job ratings had an average of 7 or better." Martin provided a "dozen pages of COBOL, and then just a page or two of Mark IV, from Informatics." Rawlings offered the following single statement, performing a set-at-a-time operation ...

The 4GL evolution was influenced by several factors, with the hardware and operating system constraints having a large weight. When the 4GL was first introduced, a disparate mix of hardware and operating systems mandated custom application development support that was specific to the system in order to ensure sales. One example is the MAPPER system developed by Sperry. Though it has roots back to the beginning, the system has proven successful in many applications and has ported to modern platforms. The latest variant is embedded in the BIS [3] offering of Unisys. MARK-IV is now known as VISION:BUILDER and is offered by Computer Associates.

Santa Fe railroad used MAPPER to develop a system, in a project that was an early example of 4GL, rapid prototyping, and programming by users. [4]The idea was that it was easier to teach railroad experts to use MAPPER than to teach programmers the "intricacies of railroad operations". [5]

One of the early (and portable) languages that had 4GL properties was Ramis developed by Gerald C. Cohen at Mathematica, a mathematical software company. Cohen left Mathematica and founded Information Builders to create a similar reporting-oriented 4GL, called Focus.

Later 4GL types are tied to a database system and are far different from the earlier types in their use of techniques and resources that have resulted from the general improvement of computing with time.

An interesting twist to the 4GL scene is realization that graphical interfaces and the related reasoning done by the user form a 'language' that is poorly understood.

Types

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 and reporting.

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

Some successful fourth-generation languages

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

See also

External links

References

  1. ^ 35th Hawaii International Conference on System Sciences - 1002 Domain-Specific Languages for Software Engineering
  2. ^ Martin, James. Application Development Without Programmers. Prentice-Hall, 1981. ISBN 0-13-038943-9.
  3. ^ Unisys. Business Information Server (BIS).
  4. ^ Louis Schlueter, User-Designed Computing: The Next Generation, 1988. [book on report generator and MAPPER systems]
  5. ^ McNurlin & Sprague. Technologies for Developing Systems Information Systems Management in Practice. Prentice Hall, 2003. ISBN: 0131011391


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.