WISP(ID:214/wis004)

Macro-based list processing language 


Macro-based list processing language
M.V. Wilkes

A very simple list processing language based on LISP. (Sammett 1966)


Structures:
Related languages
EDSAC Autocode => WISP   Written using
WISP => Data-beads   Incorporated some features of
WISP => LIMP   Influence
WISP => ML/I   Influence
WISP => SIGMA   Incorporated features of
WISP => TITAN Autocode   Written using

References:
  • Schorr, H., "Computer-Aided System Design and Analysis Using a Register Transfer Language," IEEE Transactions on Electronic Computers, Vol. EC-13, Dec. 1964, pp. 730-738. view details
  • Waite, William M. and Schorr, H. "A note on the formation of free list" pp478 view details Abstract: The concept of an available-space list was introduced by Newell and Shaw [1] in 1957, and has since been incorporated into a number of different systems [2-5]. The available-space list (or ?free list?) is a list of all available memory locations. It should initially be as large as possible, and ideally it would contain every cell not used by the program. The subject of this note is the initial formation of a free list on the IBM 7090-7094, using the FORTRAN II monitor, version 2. The method presented originated while the authors were working on an implementation of the WISP [5] system for the 7090 in cooperation with Prof. M. V. Wilkes and his colleagues. DOI
          in [ACM] CACM 7(08) August 1964 view details
  • Wilkes, M. V. "Lists and Why They are Useful" view details Abstract: Computers have long been in general use for solving numerical problems and pioneering interest has now switched to their use for non-numerical work, that is, for manipulating symbols. Examples are compiling, studies in artificial intelligence, layout problems, etc. List-processing was a breakthrough in symbol manipulation since it provided a flexible way of organizing the computer memory. The paper explains in a tutorial manner what goes on in the computer memory when list-processing operations are performed, and takes as an example the formal differentiation of an algebraic expression written in Polish notation.
          in Proceedings of the 19th ACM national conference January 1964 view details
  • Wilkes, M.V. "An Experiment with a Self-Compiling Compiler for a Simple List- Processing Language" view details
          in Goodman, Richard (ed) "Annual Review in Automatic Programming" (4) 1964 Pergamon Press, Oxford view details
  • Ingerman, Peter Z. review of Wilkes ARIAP (1964) view details Abstract: This article is an intelligent, carefully written, journal of the explorations of the author in the strange land of lists. Three subjects are covered: 1) the development of a simple listprocessing language; 2) the use of language X to bootstrap language X + 1; and 3) the problem of transferring the system, at any point in its development, to some other computer.

    The author undertook this exploration to acquaint himself with the three subjects given above; the paper is, therefore, written as the case history of an experiment, rather than as the description of a technique.

    This paper is worth the reading both as an introduction to the three subjects listed in the first paragraph, and also as an excellent example of the art of exposition.

          in ACM Computing Reviews 6(04) July-August 1965 view details
  • R. J. Orgass, H. Schorr, W.M. Waite, and M.V. Wilkes "WISP: A Self-Compiling List Processing Language", Technical Report No. 36, Basser Computing Dept., Univ. of Sydney (October 1965). view details
          in ACM Computing Reviews 6(04) July-August 1965 view details
  • Wilkes, M. V. "Lists and Why They are Useful" p278 view details
          in The Computer Journal 7(4) January 1965 view details
  • Sammet, Jean E. "Revised Annotated Descriptor Based Bibliography for the Use of Computers for Non-Numerical Mathematics" 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
  • Brown, Peter "A survey of macro processors" pp37-88 view details
          in Halpern, Mark I and Shaw Christopher J (eds) "Annual Review in Automatic Programming" (6) 1969 Pergamon Press, Oxford view details
  • Waite, William M. ; Building a Mobile Programming System. view details Extract: Introduction
    Introduction
    The mobility of a program is a measure of the ease with
    which it can be implemented on a new machine. A user
    of a highly mobile program suffers minimum disruption
    of his work when his computer is upgraded or he moves
    to a new installation. Because his program is mobile,
    only a small amount of effort is required to get it running
    on the new machine before he can continue using it.
    Applications programs written in high level languages
    such as FORTRAN, ALGOL or COBOL have reasonable
    mobility, provided that the author has taken some
    pains to avoid local idiosyncrasies. For systems software,
    however, the picture is much grimmer. There
    have been many attempts to devise high level languages
    for compiler writing (Feldman and Gries, 1968) and a
    few to use such languages for the production of operating
    systems (Glaser, Couleur and Oliver, 1965). Unfortunately,
    none of these attempts has yet met with widespread
    success.
    A FORTRAN user requires a large programming
    system, consisting of the compiler and associated runtime
    routines. The mobility of his programs is determined
    by the number of installations which support this
    system. One can therefore argue that the mobility of a
    program is completely dependent upon the mobility of
    the programming system on which it rests. In this paper,
    I shall discuss a technique which I believe is fundamental
    to the improvement of programming system mobility.
    The background and general concepts from which the
    technique was derived are presented in Section 2, while
    the remainder of the paper is concerned with a specific
    system which has been designed and built using this
    technique. Section 3 describes the basic bootstrap on
    which the system rests, and Section 4 discusses the implementation
    of the common macro processor. The
    advantages and disadvantages of the approach are presented
    in the Section 5. Extract: General approach
    General approach
    The technique rests on the fact that it is possible to
    identify two components of any program: the basic
    operations and the algorithm which coordinates these
    operations. Given a particular task, it is possible to
    define a set of basic operations and data types needed to
    perform the task. These operations and data types
    define an abstract machine-a hypothetical computer
    which is ideally suited to this particular task. The program
    to perform the task is then written for this abstract
    machine. To run the program on a real machine, it is
    necessary to realise the abstract machine in some way.
    The abstract machine is an embodiment of the basic
    operations required to perform a particular task. Theoretically,
    it has no connection with any real machine, but
    practically we must always keep a wary eye on reality
    when designing an abstract machine. Many abstract
    machines can be formulated for a given task. The trick
    is to choose one of the right ones. ., Three considerations
    must be kept in mind-
    1) The ease and efficiency with which the algorithm
    for accomplishing the task can be programmed in
    the language of the abstract machine.
    2) The ease and efficiency with which the simulation of
    the abstract machine can be carried out on machines
    available currently and in the forseeable future.
    3) The tools at hand for the realisation of the abstract
    machine.
    Balancing these three considerations is very much an
    engineering task. If one is stressed at the expense of
    the others, there will be trouble.
    An early attempt to use the abstract machine concept
    was the UNCOL proposal (SHARE, 1958). UNCOL
    was to be a UNiversal Computer Oriented Language
    which would reduce the number of translators for n
    languages and m machines from n x m to n + m.
    Effectively, the UNCOL proposal created a single abstract
    machine. In view of the three considerations
    mentioned above, it is easy to see why this attempt was
    unsuccessful-try to design an abstract machine which
    comes close to satisfying condition 1 above for
    FORTRAN, LISP (McCarthy, 1960) and SNOBOL
    (Griswold, Poage and Polonsky, 1969) simultaneously!
    The mobile programming system circumvents this difficulty
    by allowing a multiplicity of abstract machines.

    It does not attempt to solve the n x rn translator problem.
    The advantage of the mobile programming system
    lies in the fact that it reduces the specification of an
    algorithm to the specification of its basic operations,
    thus drastically reducing the amount of effort needed
    to implement it.
    One way to carry out the realisation of an abstract
    machine is to devise for it an assembly language whose
    statements can be expressed as macros acceptable to the
    real machine's assembler. This approach was suggested
    by McIlroy (1960) and used in the implementation of L6
    (Knowlton, 1966) and SNOBOL (Griswold, et al., 1969).
    Unfortunately, the assemblers for different machines may
    reauire auite different invut formats. and their macro
    processors often vary widely in power. The ease of
    transferring a program written in this way thus depends
    critically on the existence of a suitable assembly language
    for the target machine.
    Recent developments in language-independent macro
    processing (Strachey, 1965, Waite, 1967, Brown, 1967)
    suggest that it is possible to make available a common
    macro processor. If the assembly language statements
    for the abstract machine are acceptable to this macro
    processor, then the realisation does-not depend upon the
    macro capabilities of the target machine, but rather on
    the availability of the common macro processor. An
    example of this approach is the implementation of WISP
    (Wilkes, 1964). There the WISP compiler is the common
    macro processor, and is itself built up by bootstrapping
    from simpler macro processors.
          in The Computer Journal 13(1) January 1970 view details
  • Sammet, Jean E., "Roster of Programming Languages 1972" 298 view details
          in Computers & Automation 21(6B), 30 Aug 1972 view details
  • Stock, Marylene and Stock, Karl F. "Bibliography of Programming Languages: Books, User Manuals and Articles from PLANKALKUL to PL/I" Verlag Dokumentation, Pullach/Munchen 1973 648 view details Abstract: PREFACE  AND  INTRODUCTION
    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
  • Layzell, P.Z. "The History of Macro-Processors in Programming Language Extensibility" view details
          in The Computer Journal 28(1) January 1985 view details
  • Wheeler, David "Events in the early history of the Computer Laboratory" - Notes by David Wheeler, additional material by David Hartley view details External link: Events in the early history of the Computer Laboratory
          in The Computer Journal 28(1) January 1985 view details
    Resources
    • Events in the early history of the Computer Laboratory: Programming Languages
      WISP: (symbolic langiage processor developed by M.V.Wilkes); used to develop intital Titan Autocode (an extension of EDSAC 2 Autocode). Later replaced by compiler developed by P.S.Dyerexternal link