Format List Processor
for Format LIst Processor.
Warren Teitelman, MIT, 1966
Pattern-matching on LISP structures making use of CONVERT style expressions.
"FLIP A notation and language (and routines) for expressing string transformations, such as those in COMIT or SNOBOL, in LISP"
Lisp is a function oriented language. Transformations of symbolic structures are achieved by applying functions to lists and using the values of these functions. Lisp functions may be defined using composition, conditionals, recursion, etc., all of which makes Lisp a very powerful symbol-manipulating language. However, this explicit function oriented nature of Lisp sometimes d e s it difficult to express operations and transformations necessary for the solution of certain types of problems. Basically, these are operations which require locating certain substructures in a larger structure, either to ascertain their presence, or as is more usual, to use them in assembling other structures.
The author's goal in developing Flip for these kinds of operations was to produce a facility that not only would be useful, but one that would be efficient enough to be used. This has entailed developing, in Flip, a compact yet fairly powerful notation for describing transformations, and a very efficient implementation for these transformations. One of the central considerations has been that the user should not have to pay for options which he does not use. nip includes features which allow the programmer to exercise some degree of control over the manner in which the pattern matching portion of the operation is carried out. However, even where this control is not exercised, a considerable amount of built-in optimization insures the programmer of an efficient operation.
A transformation in Flip consists of two independent processes. The first is a parsing, or segmentation of the input structure according to some pattern. This is called the matching process. The second is a construction of a structure utilizing this parsing and some format. This is called the constructing process. A transformation is usually specified by a single pattern and format.
The value of the transformation is NIL if the input list does not match the pattern, otherwise it is the result of the construction. It is possible to use the matching process as a pure predicate to test the form of an input. In that case, a format is not required. One can also perform several constructions using a single parsing.
[ Book ] FOSTER, J. M.
American Elsevier Publ., New York, 1967, 54 pp. $4.50.
This tiny (54 pages) monograph on list processing is a beautiful introduction to techniques which have been used for some time in many applications. Among the topics included are: 1) the representations of lists (both in the computer and externally); and 2) operations on lists, garbage collection, and typical list languages. One short chapter is also devoted to an example of list processing used in a program to perform syntactic analysis of language. All the examples in the book are programmed in an extended A~Go~ with added list processing functions, and are carefully chosen to illustrate important points about list processing. The book's principal weakness is its lack of depth, which is not really to be expected in such a brief monograph. The summary of the list processing languages IPL-V, LISP, FLIP, FLPL, and COMIT are too brief to give any real feeling for these languages to people who have not seen them before. But these are minor quibbles with a very fine book which will broaden the outlook of people who think of computers only as tools to manipulate numbers, and will allow them to begin to appreciate what can be done with list processing techniques for symbol manipula
tion. D. a. Bobrow, Cambridge, Mass.
in ACM Computing Reviews 9(01) January 1968 view details
in Bobrow, D. G. (ed) "Symbol Manipulation Languages and Techniques", Proceedings of the IFIP Working Conference on Symbol Manipulation Languages. North-Holland Publishing Co., Amsterdam, 1968 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