Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I came across the term 4GL(generation language) in reading about Oracle ADF Busniess components . I want to know what exactly is 4GL ?

This is the actual quote from the book Oracle Fusion Guide:

Oracle ADF Business Components is the business services layer of choice in Oracle Fusion application development. Compared to other persistence layers, ADF Business Components provides exceptional built-in business application functionality and maximally declarative experience that makes it a perfect match for those who seek an end-to-end fourth generation language (4GL) Java EE development architecture.

share|improve this question
Do you have a link to where you found that quote? – FrustratedWithFormsDesigner Dec 13 '12 at 14:40
@FrustratedWithFormsDesigner I gave the link to the book in Amazon. – Geek Dec 13 '12 at 14:43
4 – birryree Dec 13 '12 at 14:45
AFAIK : I think calling a language 3GL or 4GL is how closely they are to normal language (english) and how far above the "iron" you are, so I don't think you can do assembly or pointers in 4GL languages – Trausti Thor Dec 13 '12 at 14:46
@TraustiThor 'to normal language' that's rather vague, plus this classification itself seems very imprecise. To compare languages to programming languages I'd rather use the Chomsky hierarchy – AndreasScheinert Sep 26 '13 at 14:49
up vote 6 down vote accepted

I have almost always referred to 4GL languages as languages in which even a technical analyst can program in such as CASE (Computer Assisted Software Engineering) tools. However, apparently there is more to it than that per Wikipedia.

The company I work for works with Oracle ADF quite a bit and we have our own CASE tool for mobile development and so we also refer to our own language as a 4GL one. Specifically we call it out as such because it includes an IDE that generates code on the back end based on very simple flow charts and scripts. It can manage all the basic interactions with databases, files systems, repository, assets, promotion, history and distribution of the scripts in an easily accessible way. Oracle ADF has a similar system.

Given that I would say a 4GL language is any language that abstracts the details of development into a higher level that allows for more productivity or allows for technical analyst to be able to work with it.

share|improve this answer
I personally go with "high level languages", and have reliably spotted PHB types from their use of the term "4GL" in conversation. – Droogans Dec 13 '12 at 15:29
I think of 4GL is often presented as RAD (rapid application development) and are often "visual"; but neither is necessary. In general, a more narrowly focused environment, that often adopts a broad set of assumptions to simplify general application of the language. 3GL were the English-like languages that often let you work either at the threshold of metal or in the nebulae of architected inceptions of conceptions at possibly the same time. – JustinC Dec 14 '12 at 4:51
CASE/4GL/RAD/Visual-Programming usually means "99% solution". I say that a Delphi guy who actually believes Delphi IS a real RAD tool. But then, that doesn't save you from the "1%" that requires a real programmer (even in Delphi) to solve. The idea that "you can do anything as a non programmer in my tool" is marketing gobbledygook. Coding is hard, and anything (labview, for instance) that claims to do away with it is merely playing semantic games. – Warren P Dec 15 '12 at 0:52
I think for the example given then this is the correct answer, but its probably worth pointing out that pretty much every language since the 70s has identified itself as a 4GL at some point, and in general the term is probably sufficiently watered down to be meaningless – jk. Sep 26 '13 at 12:49
@jk I cannot disagree with that statement at all. There are differences, but I was trapped in the late 70's early 80's trap of everything being 4GL for a bit. It was a popular thing to do then. Thank you for the clarification. – Akira71 Sep 26 '13 at 14:58

4GL is a bit of a nebulous term.

It is an attempt to describe a language were the programmer is able to solve a domain specific problem without having to worry about problems that are not specific to the domain (like storage/memory/communication). All these low level constructs are abstracted away by the language.

There are have been many attempts to achieve this over the years none have been "very" successful. This is usually because to be effective the problem domain that the language covers is very specific (and thus has a limited audience (that does not mean that they are not popular just that the audience is small)).

Of course because the term is not well defined there is also some abuse of the term. Sometimes it can be used to define frameworks where you just plug in modules of code and the infrastructure takes care of all the low level stuff while the plugin deals only with items at the domain level.

share|improve this answer
SQL is a "4GL" by most definitions of it. It has its problems but its clearly very successful. – frankc Dec 14 '12 at 17:15
@frankc: No SQL is not a 4GL. It is a general purpose data manipulation language. It has no domain specific knowledge and still requires you to worry about non domain information (what tables to join and how). – Loki Astari Dec 14 '12 at 17:17

The best explanation is one that covers all the generations:

  • 1st-gen is the machine opcodes. These are the binary (hexadecimal if you please) codes the computer actually understands and works with at the hardware level.
  • 2nd-gen is assembly language. These are human-readable labels for the actual opcodes, making it easier for a human to write a program without having to remember or constantly reference the numeric opcodes and location addresses of registers and logic/arithmetic units, etc.
  • 3rd-gen are most of the languages programmers actually code in today that are intended to produce programs that run on the computer as applications: C/C++, Basic/VB, Pascal/Delphi, etc. These languages are compiled into assembly language files, then references between those files are linked together and the results digested into machine code, but third-generation languages provide constructs such as logic loops, variables, and object-oriented principles in a form that make them easy for humans to work with and understand. They abstract a lot of the low-level logical thinking, allowing programmers to think in slightly bigger steps (though a key part opf computer science education is teaching students to think in small enough steps that a computer can follow).
  • 4th-gen are languages invented to communicate with other programs. Markup languages (XML/HTML), query languages (SQL), scripting languages (JavaScript), even some of your higher-level communications protocols like HTTP and SOAP are considered fourth-generation languages. These are not, directly, compiled into machine instructions; they instead exist to be interpreted by another program which then performs the task it was asked to do by the program it received.

To be honest, there's not a very clear dividing line anymore between 3rd-gen and 4th-gen. Some clearly are one or the other, like C/C++ (3rd) and SQL (4th). But, for instance, is Java considered 3rd-gen, because it's intended to create programs that are "applications" in their own right? Or is it 4th-gen, because Java's not compiled into machine code but instead into an intermediate language of bytecodes, that are then interpreted by a virtual machine environment (most of which are in turn hosted by some other program like a web browser or web server) that actually does what the programmer's code tells it to? The same could be asked of .NET languages like C#/VB, and of most of the functional languages, which require runtimes that hide all the nitty-gritty imperative logic and side-effects, so the programmer can think in more mathematical, evaluatory terms.

share|improve this answer
I don't think this is quite right in the context of the question. – JustinC Dec 14 '12 at 4:55
Javascript is 3GL, XML/HTML is not a programming language, it's a markup lang. – Lucio M. Tato Dec 5 '14 at 13:52
@LucioM.Tato - JavaScript was created as exactly that; a scripting language for browsers that looked vaguely Java-like, as that was the vogue. Until Node.JS was developed making it a server-side language, the language existed solely for the purpose of instructing the browser to perform custom client-side work. That still describes 99.9% of its use cases. – KeithS Apr 9 '15 at 23:31
As far as HTML/XML, you're right that they're markup languages, but that makes them effectively declarative languages as opposed to imperative; they define what to do, not how to do it, and they convey that information to a browser engine for rendering. And I think you'll be hard-pressed, given the various things Google's done with its logo in the past few years using nothing more than HTML5/CSS3, to argue that pure HTML/CSS isn't a programming language. – KeithS Apr 9 '15 at 23:33

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.