Page 1 of 1
Non-Procedural / Fourth Generation Programming Languages ?
Posted: Mon May 31, 2004 6:48 am
by Perica
..
Re:Non-Procedural / Fourth Generation Programming Languages
Posted: Mon May 31, 2004 11:26 am
by Schol-R-LEA
Part of the problem is that there is no real agreement on what counts as a 'non-procedural language'. The term has been variously applied to
- 'pure' functional languages, such as Miranda or CAML, which model programming after mathematical functions;
- 'pure' object-oriented languages such as Smalltalk or Self, in which everything is defined as either an object or a message to an object;
- Logic-programming languages, such as Prolog or Mercury, in which a database of logical propositions is defined, which is then used to 'solve for' the desired result based on a given proposition;
- Constraint-based languages, in which programs are defined in terms of constraint-relationships; the classic example among US programmers being various sorts of English-to-Metric conversion functions, such that changing the value for, say, inches automatically changes the values for centimeters
- Relational languages, such as SQL, which manipulate a database in terms of the relations between different data tables
They are also referred to as 'declarative' languages, as they are written by declaring a set of properties or connections rather than specifying a sequence of actions. These terms primarily relate to the last three, which are conceptually related; functional and OO languages, while more declarative than procedural languages like C or VB, still define specific actions. In principle, a declarative language can choose any effective algorithm it needs to find the solution (rather than following a specificed algorithm), and a lot of work in the area revolves around optimal resolution strategies.
'Fourth-generation languages' is an even more confusing term; while it sometimes was applied to the same types of languages mentioned above, it usually referred to one of several 'natural language' systems (4GL, Natural2), which attempted to accept an unambiguous subset of English (or whatever natural language is being used) rather than a formalized programming language, usually as a front end for an expert system or a database query system. These were popular in the late 1970s and early 1980s among business mainframe and minicomputer installations, but they rarely worked very well. It was mostly a marketing term, with no real technical meaning, and it largely disappeared after 1987 or so.
C&CW.