An early declarative language
S. Schlesinger and L. Sashkin
Aerospace Corporation, San Bernardino, California
from the FORTRAN/ALGOL type, though it does utilize FOR-
TRAN formula and logic representations (and actually con-
tains FORTRAN IV as a subset). With the new language, the
user need only describe his problem in "equation-like" form.
The method of solution is automatically provided in conjunction
with the translation from equation form to computer instructions.
In this way the POSE language user can solve difficult computa-
tional problems (like the solution of differential equations)
without requiring a knowledge of numerical methods or the
intricacies of computer subroutine logic. Essentially all clerical
operations now required for FORTRAN programming have
been automated so that the POSE programmer need not be
concerned with these details.
Algebra-like programming languages, such as FORTRAN, were originally intended to greatly simplify the creation of computer programs, especially for the novice or occasional user. However, as these languages have been augmented to deal with most computer applications (as in, for example, FORTRAN IV), they, themselves, have become quite complicated and difficult to use.
The main reason that programming remains so difficult is the supposition that the original program must completely describe the method of solution for a problem. The introduction of standard subroutines somewhat alleviates the burden, but the programmer still must actively select the subroutine and supply it with all of its necessary information. This latter activity is often a burdensome clerical task, as are so many other programmer chores, like defining COMMON regions, writing FORMAT statements, and developing intricate control logic.
In contrast, Pose programs for most problems will be very simple. The prime reason for the simplicity is that a Pose program consists of a problem statement in equation form; the "compiler" supplies the method of solution and performs essentially all clerical chores. This concept, wherein the solution method is pre-empted by a "solution compiler," is certainly not satisfactory for all problems, but neither is FORTRAN, ALGOL, or PL/I applicable to all programs. However, most programmers utilize standard numerical methods; hence, for a broad class of problems, the atttomatic selection and intplementation of suitable procedures will be a distinct asset. Thus, the computer will assume another tedious burden previously associated with computer program development.
In addition to automatically providing solution methods, the Pose "compiler" can supply a variety of alternative display procedures in order to better communicate the significance of the solution to the user. The selection of a display mechanism is simply indicated by a verbal description of what is to be displayed, e.g.,
PLOT GRAPH 1 (X, Y. VS. TIME), or PLOT PERSPECTIVE (Z. VS. X, Y) FROM (X1, Y1, Z1). Extract: Problem Statement Language
Problem Statement Language
Since POSE is at, a higher logical level than normal programming languages, POSE includes both FORTRAN- type and symbolic machine languages as logical subsets. In its initial implementation on the IBM System/360 and 1800, it will utilize FORTRAN conventions to express algebraic statements. By inclusion of a suitable "Segment Descriptor" (a heading which describes the function of the program segment), assembly language instructions can also be included. Thus, the use of the extended logical features included in POSE does not preclude the use of any other programming tools.
The extended capabilities included in the initial version of POSE will be:
(1) Solution of simultaneous ordinary differential equations (initial value problems)
(2) Evaluation of multiple integrals
(3) Solution of a transcendental algebraic equation
(4) Solution of a system of linear algebraic equations
(5) Matrix arithmetic
(6) Inversion of square matrices
(7) Simplified data input
(8) Simplified printed output
(9) Two-dimensionM graphical display
(10) Table lookup and Nth-order interpolation
(11) Basic statistical computation
(12) Function evaluation with automatic parameter variation
All of these Pose capabilities will be utilized without the usual organization and planning associated with selec- tion and use of subroutines to accomplish these functions. Extract: Language Philosophy
In order to understand the relationship of POSE to other languages, particularly FORTRAN and Assembly Language, it is useful to view Table I as constructed by W. H. Burkhardt
POSE, unlike those language types described in the table, may utilize program segments at essentially all levels of the hierarchal scale; thus POSE may be designated as a Polymorphic Language.
POSE can be (and very often will be) used as a general-purpose Declarative Language (by omitting the CALCULATION SEQUENCE segment). However, when sequence of calculation is essential for the proper posing of a problem, it may be explicitly controlled by EXECUTE statements which initiate particular program segments. Within a program segment (except those which include EXECUTE statements or explicitly indicate Procedural or Assembly language.), the order in which statements are written not have a bearing on the solution of the problem. This Independence of sequence is designed to be consistent, with normal mathematical conventions used to describe a problem.
Though POSE problem description statenmnts are, in general, written at the procedural (FORTRAN) Language level, no restrictions are imposed (for machine independance, language purity, or any other theoretical considerations) on the language which a user may employ to best describe his problem. He may intermix POSE code with FORTRAN logic, and even employ assembly language if that seems most appropriate. The prime for this flexible polymorphic form of POSE is the desire to make it universally applicable to a broad range of engineering and scientific applications, including the reduction of experimental and flight test data. In addition, POSE is designed to be applicable to large calculations which are entered into the computer complex by conventional means (punched cards), and small calculations which can be entered directly by remote consoles.
Thus, the most sophisticated components of POSE comprise a general-purpose Declarative Language designed for engineering and scientific application. By inclusion of the CALCULATION SEQUENCE segment to provide some gross control of the calculation procedure, or by utilizing lower level programming languages at the user's discretion, the desired balance between problem-solving ease and solution control can be achieved for each user and each application. Extract: Implementation Considerations
Superficial appraisal would indicate that the development of a "solution compiler" to interpret a Polymorphic Language like POSE would be a substantial task, possibly exceeding the effort required to create a FORTRAN, ALGOL, or PL/I compiler. However, an initial version of the cap ability described herein is expected to be implemented for the IBM System/360 and IBM 1800 with less than a one man-year effort for each computer.
There are two basic reasons for this optimistic estimate:
(1) POSE will utilize FORTRAN as both a source language for algebraic problem statements and for the "object" program emanating from the Pose language processor; thus most of the conventional compiler functions can be utilized without re-creation.
(2) Although POSE has an apparent unique capability to require only a problem statement rather than an explicitly programmed solution, many essentially similar programming languages have been implemented and tested. Their general applicability to provide problem-to- program translation through a variety of standardized solution techniques has not heretofore been recognized. This concept of a "solution compiler" currently exists in nascent form in that digital computing stepchild, the continuous systems simulation language, (e.g., MIDAS, PACTOLUS).
In considering the form that EASL, an Aerospace-developed continuous systems simulation language, should assume on the IBM 360, it became clear that, by simple generalization, the simulation language would become the POSE language, a useful tool for a very broad class of digital computer users. Continuous systems simulation languages have been primarily oriented towards former analog computer users. Hence, they utilize such concepts as "integrators," '
POSE---a language for posing problems to a computer--was developed at the Aerospace Corporation, San Bernardino, California, by Schlesinger and Sashkin (1967). and Sashkin et al. (1967). Its initial implementation is to be on the IBM System/360 and 1800. The authors state that POSE (Processing, Organizing, and Solving Equations) is very similar to NAPSS (see previous section); however, POSE will use general purpose methods on all problems, while NAPSS polyalgorithms will attempt to tailor the methods to the problem at hand. The POSE language will utilize Fortran conventions to express algebraic statements and allow assembly language instructions to be included as well. The power of the language comes from the extended capabilities that allow a user to describe his problem in equation-like form. The method of solution as well as translation of the problem from equation form to computer instructions will be provided automatically.
The extended capabilities to be included in the initial version of POSE are:
a) solution of simultaneous ordinary differential equations (initial value problems);
b) evaluation of multiple integrals;
c) solution of a transcendental algebraic equation;
d) solution of a system of linear algebraic equations;
e) matrix arithmetic;
f) inversion of square matrices;
g) simplification of data input;
h) simplification of printed output;
i) two-dimensional graphical display;
j) table lookup and Nth-order interpolation;
k) basic statistical computation; and
l) function evaluation with automatic parameter variation.
The authors call POSE a polymorphic language since it includes assembly language, procedural language, and a declarative language for invoking the extended capabilities listed above. The ability to mix Fortran statements with assembly language statements can be very useful to an experienced programmer; however, the POSE implementation of the extended capabilities looks to this author much like a reworded call of a subroutine with a list of arguments.
In fact, in writing POSE programs one must be careful to spell things correctly and get parameters in some specified order. This may lessen the usefulness of the language to the nonprogrammer in an on-line interactive environment.
In Schlesinger et al. (1968), it is stated that a first model of POSE has been developed for use on an IBM 1800. This version of POSE (with limited capabilities) is to be interfaced with an associated input typewriter and a sophisticated graphics console (the Waveform Display/Analyzer) used with EASL.
By July 1969, in addition to the POSE language processor, which operates on the IBM 1800 in conjunction with the Waveform Display/Analyzer and typewriter terminal, there was an operational IBM 360 processor. POSE-360 is conceptually similar to its predecessor, POSE-1800, but has been adapted to be compatible with an IBM 2260 CRT and a Computer Communications incorporated printer/plotter (modification of a standard Motorola printer). The communication with the CRT had just begun to work, and the software tie with the printer was in checkout in July 1969.
Figure 7 shows the Computer Communications printer/plotter, and Figure 8 shows the IBM 2260 used by POSE-360. The July 1969 version of POSE-360 includes Fortran-type function evaluation, simultaneous differential equation solution, root-solving, automatic table look-up, interpolation, and convenient means to define data input and output.
in [ACM] ACM Computing Surveys 2(4) Dec1970 view details
in Computers & Automation 21(6B), 30 Aug 1972 view details
The exact number of all the programming languages still in use, and those which are no longer used, is unknown. Zemanek calls the abundance of programming languages and their many dialects a "language Babel". When a new programming language is developed, only its name is known at first and it takes a while before publications about it appear. For some languages, the only relevant literature stays inside the individual companies; some are reported on in papers and magazines; and only a few, such as ALGOL, BASIC, COBOL, FORTRAN, and PL/1, become known to a wider public through various text- and handbooks. The situation surrounding the application of these languages in many computer centers is a similar one.
There are differing opinions on the concept "programming languages". What is called a programming language by some may be termed a program, a processor, or a generator by others. Since there are no sharp borderlines in the field of programming languages, works were considered here which deal with machine languages, assemblers, autocoders, syntax and compilers, processors and generators, as well as with general higher programming languages.
The bibliography contains some 2,700 titles of books, magazines and essays for around 300 programming languages. However, as shown by the "Overview of Existing Programming Languages", there are more than 300 such languages. The "Overview" lists a total of 676 programming languages, but this is certainly incomplete. One author ' has already announced the "next 700 programming languages"; it is to be hoped the many users may be spared such a great variety for reasons of compatibility. The graphic representations (illustrations 1 & 2) show the development and proportion of the most widely-used programming languages, as measured by the number of publications listed here and by the number of computer manufacturers and software firms who have implemented the language in question. The illustrations show FORTRAN to be in the lead at the present time. PL/1 is advancing rapidly, although PL/1 compilers are not yet seen very often outside of IBM.
Some experts believe PL/1 will replace even the widely-used languages such as FORTRAN, COBOL, and ALGOL.4) If this does occur, it will surely take some time - as shown by the chronological diagram (illustration 2) .
It would be desirable from the user's point of view to reduce this language confusion down to the most advantageous languages. Those languages still maintained should incorporate the special facets and advantages of the otherwise superfluous languages. Obviously such demands are not in the interests of computer production firms, especially when one considers that a FORTRAN program can be executed on nearly all third-generation computers.
The titles in this bibliography are organized alphabetically according to programming language, and within a language chronologically and again alphabetically within a given year. Preceding the first programming language in the alphabet, literature is listed on several languages, as are general papers on programming languages and on the theory of formal languages (AAA).
As far as possible, the most of titles are based on autopsy. However, the bibliographical description of sone titles will not satisfy bibliography-documentation demands, since they are based on inaccurate information in various sources. Translation titles whose original titles could not be found through bibliographical research were not included. ' In view of the fact that nany libraries do not have the quoted papers, all magazine essays should have been listed with the volume, the year, issue number and the complete number of pages (e.g. pp. 721-783), so that interlibrary loans could take place with fast reader service. Unfortunately, these data were not always found.
It is hoped that this bibliography will help the electronic data processing expert, and those who wish to select the appropriate programming language from the many available, to find a way through the language Babel.
We wish to offer special thanks to Mr. Klaus G. Saur and the staff of Verlag Dokumentation for their publishing work.
Graz / Austria, May, 1973
in Computers & Automation 21(6B), 30 Aug 1972 view details
in Proceedings of the ACM SIGPLAN symposium on Very high level languages, March 28-29, 1974, Santa Monica, California, United States view details
in ACM Symposium on "Interactive Systems for Experimental Applied Mathematics", editors Klerer and Reinfelds, Washington, D.C., August 1967 view details