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.

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 ThorDec 13 '12 at 14:46

3 Answers
3

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.

I personally go with "high level languages", and have reliably spotted PHB types from their use of the term "4GL" in conversation.
–
DroogansDec 13 '12 at 15:29

1

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.
–
JustinCDec 14 '12 at 4:51

2

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 PDec 15 '12 at 0:52

3

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

1

@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.
–
Akira71Sep 26 '13 at 14:58

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.

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.

SQL is a "4GL" by most definitions of it. It has its problems but its clearly very successful.
–
frankcDec 14 '12 at 17:15

1

@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 AstariDec 14 '12 at 17:17