Chinese intellectual revolution and sociopolitical reform movement (1917–21). In 1915 young intellectuals inspired by Chen Duxiu began agitating for the reform and strengthening of Chinese society through acceptance of Western science, democracy, and schools of thought, one objective being to make China strong enough to resist Western imperialism. On May 4, 1919, reformist zeal found focus in a protest by Beijing's students against the Versailles Peace Conference's decision to transfer former German concessions in China to Japan. After more than a month of demonstrations, strikes, and boycotts of Japanese goods, the government gave way and refused to sign the peace treaty with Germany. The movement spurred the successful reorganization of the Nationalist Party and gave birth to the Chinese Communist Party. Seealso Treaty of Versailles.
Learn more about May Fourth Movement with a free trial on Britannica.com.
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.
A quantitative definition of 4GL has been set by Capers Jones, as part of his work on function point analysis. Jones defines the various generations of programming languages in terms of developer productivity, measured in function points per staff-month. A 4GL is defined as a language that supports 12 - 20 FP/SM. This correlates with about 16 - 27 lines of code per function point implemented in a 4GL.
Fourth-generation languages have often been compared to domain-specific programming languages (DSLs). Some researchers state that 4GLs are a sub-set of DSLs. Given the persistence of assembly language 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 first.
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.
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 is 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.
The early input 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 coded in a 3GL could subsume, perhaps, a whole box or more of cards.
The 72-character metaphor 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 page.
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. The idea was that it was easier to teach railroad experts to use MAPPER than to teach programmers the "intricacies of railroad operations".
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.
Some 4GLs have integrated tools which allow for the easy specification of all the required information: