Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Fourth-generation programming language
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Group of computer programming languages}} A '''fourth-generation programming language''' ('''4GL''') is a [[high-level programming language|high-level]] [[computer]] [[programming language]] that belongs to a class of languages envisioned as an advancement upon [[third-generation programming language]]s (3GL). Each of the [[programming language generations]] aims to provide a higher level of [[Abstraction layer|abstraction]] of the internal [[computer hardware]] details, making the language more [[programmer]]-friendly, powerful, and versatile. While the definition of 4GL has changed over time, it can be typified by operating more with large collections of information at once rather than focusing on just [[bit]]s and [[byte]]s. Languages claimed to be 4GL may include support for [[database]] management, [[Report generator|report generation]], [[mathematical optimization]], [[graphical user interface]] (GUI) [[Graphical user interface builder|development]], or [[web development]]. Some researchers state that 4GLs are a subset of [[domain-specific language]]s.<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] {{webarchive|url=https://web.archive.org/web/20110516121525/http://csdl.computer.org/comp/proceedings/hicss/2002/1435/09/14350279.pdf%26ei%3DpgcWQ6CwKsKYYMfF9OAI |date=May 16, 2011}}</ref><ref> {{cite web |url=http://homepages.cwi.nl/~arie/papers/dslbib/ |title=Domain-Specific witness Languages:An Annotated Bibliography |access-date=2009-03-15 |author=Arie van Deursen |author2=Paul Klint |author3=Joost Visser |year=1998 |url-status=dead |archive-url=https://web.archive.org/web/20090202154259/http://homepages.cwi.nl/~arie/papers/dslbib/ |archive-date=2009-02-02 }}</ref> The concept of 4GL was developed from the 1970s through the 1990s, overlapping most of the development of 3GL, with 4GLs identified as "non-procedural" or "program-generating" languages, contrasted with 3GLs being algorithmic or procedural languages. While 3GLs like [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], and [[JavaScript]] remain popular for a wide variety of uses, 4GLs as originally defined found uses focused on databases, reports, and websites.<ref>{{cite book|last1=MacDonell|first1=Stephen|date=November 1993|chapter=Software development, CASE tools and 4GLs—A survey of New Zealand usage. Part 1|title=750 New Zealand organisations|hdl=10523/928|hdl-access=free}}</ref> Some advanced 3GLs like [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], and [[Perl]] combine some 4GL abilities within a general-purpose 3GL environment,<ref>{{Cite web|url=http://www.rogerclarke.com/SOS/SwareGenns.html|title = Roger Clarke's Software Generations}}</ref> and [[library (computing)|libraries]] with 4GL-like features have been developed as add-ons for most popular 3GLs, producing languages that are a mix of 3GL and 4GL, blurring the distinction.<ref>{{cite web |title=Definition of fourth-generation language |url=https://www.pcmag.com/encyclopedia/term/fourth-generation-language |website=PCMAG |access-date=7 May 2020 |language=en}}</ref> In the 1980s and 1990s, there were efforts to develop [[fifth-generation programming language]]s (5GL). == History == Though used earlier in papers and discussions, the term 4GL was first used formally by [[James Martin (author)|James Martin]] in his 1981 book ''Application 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, early 4GLs were included in the [[Sterling Software|Informatics]] [[MARK-IV (Software)|MARK-IV]] (1967) product and [[Sperry Corporation|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. It can also 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. The early input scheme for the 4GL supported entry of data within the 72-character limit of the [[Punched card#IBM 80-column format and character codes|punched card]] (8 bytes used for sequencing) where a card's tag would identify the type or function. With judicious use of a few cards, the [[Computer programming in the punched card era|4GL deck]] could offer a wide variety of processing and reporting capability whereas the equivalent functionality coded in a [[Third-generation programming language|3GL]] could subsume, perhaps, a whole box or more of [[Computer programming in the punch card era|cards]].<ref>{{cite web|url=http://www.columbia.edu/cu/computinghistory/cards.html|title=IBM Punch Cards|website=www.columbia.edu|access-date=2019-02-03|archive-url=https://web.archive.org/web/20190216221104/http://www.columbia.edu/cu/computinghistory/cards.html|archive-date=2019-02-16|url-status=dead}}</ref> The 72-character format [[Characters per line|continued for a while]] 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 (Software)|Mark IV]], from [[Sterling Software|Informatics]]." Rawlings offered the following single statement, performing a set-at-a-time operation... The development of the 4GL 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 Corporation|Sperry]]. Though it has roots back to the beginning, the system has proven successful in many applications and has been ported to modern platforms. The latest variant is embedded in the BIS<ref>{{cite web | title=Data Mining Software, Data Analysis, and More: Unisys Business Information Server Features | website=[[Unisys]] | date=2006-08-21 | url=http://www.unisys.com.hk/products/software/application__development/business__information__server/features.htm | archive-url=https://web.archive.org/web/20060821184105/http://www.unisys.com.hk/products/software/application__development/business__information__server/features.htm | archive-date=2006-08-21 | url-status=dead | access-date=2019-02-03}}</ref> offering of [[Unisys]]. [[MARK-IV (Software)|MARK-IV]] is now known as VISION:BUILDER and is offered by [[Computer Associates]]. [[Atchison, Topeka and Santa Fe Railway|The Santa Fe railroad]] used [[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>{{cite book|author=Louis Schlueter|title=User-Designed Computing: The Next Generation |year=1988}} [book on report generator and MAPPER systems]</ref> The idea was that it was easier to teach railroad experts to use [[MAPPER]] than to teach programmers the "intricacies of railroad operations".<ref>{{cite book|author1=Barbara Canning McNurlin|author2=Ralph H. Sprague|title=Information Systems Management in Practice|url=http://telaga.cs.ui.ac.id/WebKuliah/IKI42400/2004/McNurlin-5ed-ch09.pdf|year=2004|publisher=Pearson/Prentice Hall|isbn=978-0-13-101139-7|chapter=Ch. 9}}{{dead link|date=October 2017 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> One of the early (and portable) languages that had 4GL properties was [[RAMIS (software)|RAMIS]] developed by Gerald C. Cohen at [[Mathematica Inc. (1968–1986)|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 [[End-user computing|related reasoning]] done by the user form a 'language' that is poorly understood. ==Types== <!-- Deleted image removed: [[File:EDev01.png|thumbnail|300px|An example of table-driven algorithm programming in eDeveloper 9.4]] --> A number of different types of 4GLs exist: * Table-driven (codeless) programming, usually running with a runtime framework and libraries. Instead of using code, the developer defines their logic by selecting an operation in a pre-defined list of memory or data table manipulation commands. In other words, instead of coding, the developer uses table-driven algorithm programming (see also [[control table]]s that can be used for this purpose). These types of tools can be used for business application development usually consisting in a package allowing for both business data manipulation and reporting, therefore they come with GUI screens and report editors. They usually offer integration with one or more lower level [[dynamic-link library]] (DLL), generated from a typical 3GL for when the need arises for more hardware/OS specific operations. * [[Report generator]] programming languages 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 (see also [[IBM RPG|RPG]]). *Similarly, [[screen generator]]s (also called 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 [[computer-aided software engineering]] (CASE) tools, specifications of screens and reports, and possibly also the specification of some additional processing logic. * [[Data management]] 4GLs such as [[SAS (software)|SAS]], [[SPSS]], and [[Stata]] provide sophisticated coding [[Command (computing)|commands]] for data manipulation, file reshaping, case selection, and data documentation in the preparation of data for [[statistical analysis]] and reporting. *So-called "XTalk" languages, developed initially with Apple's Hypercard in 1987. Hypercard was the progenitor of more modern and powerful programs such as SuperCard, Toolbook and LiveCode. Some 4GLs have integrated tools that allow for the easy specification of all the required information: * James Martin's version of [[data 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 Suite]] 4GL products could be integrated to produce database definitions and the forms and reports programs. ==Low code environments== In the twenty-first century, 4GL systems have emerged as [[Low-code development platforms|"low code" environments or platforms]] for the problem of rapid application development in short periods of time. Vendors often provide sample systems such as CRM, contract management, bug tracking from which development can occur with little programming.<ref>{{cite web|url=https://www.zdnet.com/article/how-salesforce-is-using-low-code-orchestration-to-save-floundering-iot-projects/|title=How Salesforce is using low-code orchestration to save 'floundering IoT projects'|first=Conner|last=Forrest|website=ZDNet}}</ref> ==Examples== <!-- Do not add languages that don't have an article; they are non-notable by that definition. --> ===General use / versatile=== {{div col|colwidth=25em}} *[[4th Dimension (software)|4th Dimension]] *[[ACCELL/SQL|Accell/SQL (4GL)]] from [[Gupta Technologies|Unify Corporation]]. *Broadcom 2e [[Synon|Formerly Synon]] 4GL RPG/COBOL Generator *[[CA-Telon]] 4GL Cobol/PLI generator *[[Clarion (programming language)|Clarion]] *[[Clipper (programming language)|Clipper]] *[[Powerhouse (programming language)|Cognos PowerHouse 4GL]] *[[DataFlex]] (Microsoft Windows, web, mobile) *[[DATATRIEVE]] *[[dBase]] *[[FileMaker]] *[[FOCUS]] *[[Forte 4GL|Forté TOOL (transactional object-oriented language)]] *[[GeneXus]] *[[Harbour (programming language)|Harbour]] *[[HyperCard]] (development and support were ended) *IBM Rational EGL ([[Enterprise Generation Language]]) *[[Infor]] *[[LabVIEW]] *[[LANSA (development environment)|LANSA]] *[[LINC 4GL|LINC]] *[[LiveCode]] *[[M-Power]] *[[NATURAL]] *[[Omnis Studio]] SDK *[[Oracle Application Development Framework]] *[[OutSystems]] (Productivity/PaaS) *[[Jmix/CUBA Platform]] (Productivity/Framework) *[[PowerBuilder]] *[[R:Base]] *[[SheerPower4GL]] (Microsoft Windows only) *[[SQLWindows]]/[[Team Developer]] *[[Uniface (programming language)|Uniface]] *[[Unix Shell]] *[[Visual FoxPro]] (development and support were ended) *[[XBase++]] *[[Xojo]] {{div col end}} ===Database [[query language]]s=== *[[FOCUS]] *[[4th Dimension (software)|4D QL]] *[[Informix-4GL]] *[[NATURAL]] *[[OpenEdge Advanced Business Language]] (OpenEdge ABL) *[[OpenROAD]] (Ingres 4GL) *[[RAMIS (software)|RAMIS]] *[[SQL]] ===Report generators=== *Speedware EasyReporter *[[LINC 4GL|LINC]] *[[Oracle Reports]] *[[OpenEdge Advanced Business Language]] (former Progress 4GL) Query/Results *[[IBM RPG|RPG-II]] Extract data from files or database to create reports in a wide range of formats is done by the report generator tools. ===Data manipulation, analysis, and reporting languages=== {{div col|colwidth=25em}} *[[Ab Initio (company)|Ab Initio]] *[[ABAP]] *[[Audit Command Language]] *[[Clarion Programming Language]] *[[CorVision]] *[[Cullinet|Culprit]] *[[Cullinet|ADS/Online]] (plus transaction processing) *[[Easytrieve]] *[[FOCUS]] *[[GraphTalk]] *[[IDL (programming language)|IDL]] *[[IGOR Pro]] *[[Informix-4GL]] *[[JMP (statistical software)|JSL]] *[[LANSA (development environment)|LANSA]] *[[LabVIEW]] *[[LiveCode]] *[[M-Power]] *[[Cincom|MANTIS]] *[[MAPPER (Software)|MAPPER]] ([[Unisys|Unisys/Sperry]]) now part of BIS *[[MARK-IV (Software)|MARK-IV]] ([[Sterling Software|Sterling/Informatics]]) now VISION:BUILDER of CA *[[Simulink]] a component of [[MATLAB]] *[[NATURAL]] *[[Nomad software|Nomad]] *[[GNU Octave|Octave]] *[[PL/SQL]] *[[OpenEdge Advanced Business Language]] (former Progress 4GL) *[[R (programming language)|R]] *[[RAMIS (software)|RAMIS]] *[[S (programming language)|S]] *[[Scilab]] *[[SAS (software)|SAS]] *[[SPSS]] *[[SQL PL]] *[[SQR]] *[[Stata]] *[[Synon]] *[[Wolfram Language]] *[[XBase++]] *[[XQuery]] *[[XSLT]] {{div col end}} ===[[Software]] creators=== {{div col|colwidth=25em}} *[[4th Dimension (Software)]] *[[LiveCode]] *[[MATLAB]]'s GUIDE *[[Omnis Studio]] *[[OpenROAD]] *[[OpenEdge Advanced Business Language]] (former Progress 4GL) AppBuilder *[[SuperTalk]] *[[Visual DataFlex]] *[[Xojo]] *[[XUL]] Can be used with [[XQuery]] {{div col end}} ===Mathematical optimization=== *[[AIMMS]] *[[AMPL]] *[[General Algebraic Modeling System|GAMS]] *[[Mathematica]] *[[MathProg]] *[[MATLAB]] ===Database-driven GUI application development=== *[[C/AL]] *[[Genexus]] *[[IBM SystemBuilder|SB+/SystemBuilder]] *[[Unify VISION]] ===Low code / No code development platforms=== Source:<ref>{{cite web|url=https://www.pcmag.com/roundup/353252/the-best-low-code-development-platforms|title=The Best Low-Code Development Platforms for 2019|first1=Rob|last1=Marvin|date=August 10, 2018|website=PCMAG}}</ref><ref>{{cite web|url=https://www.infoworld.com/article/3214637/mobile-development/25-simple-tools-for-building-mobile-apps-fast.html|title=25 simple tools for building mobile apps fast|first=Martin Heller and Peter|last=Sayer|date=6 April 2018|website=InfoWorld|access-date=17 November 2017|archive-url=https://web.archive.org/web/20171118222718/https://www.infoworld.com/article/3214637/mobile-development/25-simple-tools-for-building-mobile-apps-fast.html|archive-date=18 November 2017|url-status=dead}}</ref> {{div col|colwidth=25em}} *[[1C:Enterprise programming language]] *[[Appcelerator]] *[[Appian Corporation|Appian]] *[[Bizagi]] *[[DronaHQ]]<ref>{{cite web|url=https://dronahq.com/|title=DronaHQ. Build apps without coding.|website=www.dronahq.com|access-date=2019-09-11|archive-url=https://web.archive.org/web/20190809071649/https://dronahq.com/|archive-date=2019-08-09|url-status=dead}}</ref> *[[LANSA (development environment)|LANSA]] *[[M-Power]] *[[Microsoft Power Automate]] *[[Node-RED]] *[[OutSystems]] *[[Pegasystems]] *[[PNMsoft]] *[[OpenEdge Advanced Business Language]] (former Progress 4GL) Progress *[[ServiceNow]] *[[ViziApps]] {{div col end}} ===Screen painters and generators=== *[[Oracle Forms]] *[[OpenEdge Advanced Business Language]] (former Progress 4GL) ProVision *[[IBM SystemBuilder|SB+/SystemBuilder]] ===Web development languages=== *ActiveVFP *[[CFML]] *[[LANSA (development environment)|LANSA]] *[[OutSystems]] *[[Wavemaker]] ===Music Programming language=== *[[MaxMSP]] ==See also== * [[List of fourth-generation programming languages]] * [[Domain-specific language]] * [[Rapid application development]] ==References== {{Reflist}} {{Programming language generations}} {{Authority control}} {{DEFAULTSORT:Fourth-Generation Programming Language}} [[Category:Programming language classification]] [[Category:Fourth-generation programming languages]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Dead link
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:ISBN
(
edit
)
Template:Programming language generations
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Webarchive
(
edit
)