MADCAP(ID:148/mad006)

Two dimensional maths and set language 



Math and set problems, for the Maniac II and CDC 6600.



Places
People:
Structures:
Related languages
KOMPILER 3 => MADCAP   Influence
MADCAP => Klerer-May System   Influence
MADCAP => MADCAP II   Evolution of
MADCAP => MADCAP Terminal Language   Based on

References:
  • Sammet, Jean E "1960 Tower of Babel" diagram on the front of CACM January 1961 view details

          in [ACM] CACM 4(01) (Jan 1961) view details
  • Wells, M. B., "MADCAP: A Scientific Compiler for a Displayed Formula Textbook Language" view details pdf Extract: Introduction
    Introduction
    This paper describes the internal structure of a translator for the MAD language. The language is very similar to that of ALGOL 60, although it is more restricted in some respects and more general in other's. We shall assume a familiarity with the MAD language, although many of the remarks made below will be clear even to those with only a slight knowledge of the language. Throughout any discussion of the organization of a translator, it is important to understand the primary objectives that have been set for its behavior.
    This translator was designed to have the following properties (in the order given): (1) high speed of translation, (2) generality (i.e., as few restrictions on the user as possible), and (3) object program efficiency. Many decisions were made by means of these criteria which might have been made differently if there were other objectives. The design was also influenced to some extent, although not very much, by the organization of the computer (IBM 704) on which the translator was to operate.

          in [ACM] CACM 4(01) (Jan 1961) view details
  • Brown, P. review of Wells 1963 view details Abstract: MADCAP is not just another programming language but is the result of continuing work in an area little explored in present research. The main feature of MADCAP is that it gets away from the usual representation of statements as linear strings of symbols by allowing displayed expressions such as (a, + x,2)/(1 -- costly). Input is by paper tape from a Flexowriter specially modified to allow the typing of subscripts and superscripts. This paper follows on from a previous one [ Comm. ACM 4 (Jan. 61), 31-36 ] describing the basic language, and describes recent additions. These include the display of integrals and binomial coefficients, and sophisticated facilities for looping and for A~GoL-like procedures. lithe author claims that reducing an arithmetic expression to a linear form is a major task for the scientist unfamiliar with computers. However, the question remains as to whether such a scientist would prefer to use a somewhat hardware dependent language like MADCAP to a more widely used language with a large stock of previously written routines.
          in ACM Computing Reviews 5(03) May-June 1964 view details
  • Goldstein, M. "Computer Languages" The American Mathematical Monthly, Vol. 72, No. 2, Part 2: Computers and Computing Feb., 1965 pp141-146 view details Extract: Languages scene
    An important step in artificial language development centered around the
    idea that i t is desirable to be able to exchange computer programs between
    different computer labs or at least between programmers on a universal level.
    In 1958, after much work, a committee representing an active European computer
    organization, GAMM, and a United States computer organization, ACNI,
    published a report (updated two years later) on an algebraic language called
    ALGOL. The language was designed to be a vehicle for expressing the processes
    of scientific and engineering calculations of numerical analysis. Equal stress was
    placed on man-to-man and man-to-machine communication. It attempts to
    specify a language which included those features of algebraic languages on
    which it was reasonable to expect a wide range of agreement, and to obtain a
    language that is technically sound. In this respect, ALGOL Set an important
    precedent in language definition by presenting a rigorous definition of its syntax.
    ALGOL compilers have also been written for many different computers.
    It is very popular among university and mathematically oriented computer
    people especially in Western Europe. For some time in the United States, it will
    remain second to FORTRAN, with FORTRAN becoming more and more like
    ALGOL.
    The largest user of data-processing equipment is the United States Government.
    Prodded in Part by a recognition of the tremendous programming investment
    and in part by the suggestion that a common language would result only
    if an active Sponsor supported it, the Defense Department brought together
    representatives of the major manufacturers and Users of data-processing equipment
    to discuss the problems associated with the lack of standard programming
    languages in the data processing area. This was the start of the conference on
    Data Systems Languages that went on to produce COBOL, the common business-
    oriented language. COBOL is a subset of normal English suitable for expressing
    the solution to business data processing problems. The language is
    now implemented in various forms on every commercial computer.
    In addition to popular languages like FORTRAN and ALGOL, we have
    some languages used perhaps by only one computing group such as FLOCO,
    IVY, MADCAP and COLASL; languages intended for student problems, a
    sophisticated one like MAD, others like BALGOL, CORC, PUFFT and various
    versions of university implemented ALGOL compilers; business languages in addition
    to COBOL like FACT, COMTRAN and UNICODE; assembly (machine)
    languages for every computer such as FAP, TAC, USE, COMPASS; languages to simplify problem solving in "artificial intelligence," such as the so-called list
    processing languages IPL V, LISP 1.5, SLIP and a more recent one NU SPEAK;
    string manipulation languages to simplify the manipulation of symbols rather
    than numeric data like COMIT, SHADOW and SNOBOL; languages for
    command and control problems like JOVIAL and NELIAC; languages to simplify
    doing symbolic algebra by computer such as ALPAK and FORMAC;
    a proposed new programming language tentatively titled NPL; and many,
    many, more. A veritable tower of BABEL!
          in ACM Computing Reviews 5(03) May-June 1964 view details
  • Sammet, Jean E. "Survey of formula manipulation" view details
          in [ACM] CACM 9(08) August 1966 view details
  • Sammet, Jean E., "Roster of Programming Languages 1967" view details
          in Computers & Automation 16(6) June 1967 view details
  • Sammet, Jean E. "Computer Languages - Principles and History" Englewood Cliffs, N.J. Prentice-Hall 1969. pp.271-281. view details
          in Computers & Automation 16(6) June 1967 view details
  • Devaney, Marjorie J. and Hudgins, Jeanne "The terminal control language for the madcap programming language" view details Abstract: This paper describes the hardware and software associated with a keyboard based, storage scope terminal interactive facility currently under development at Los Alamos. The terminal commands are given by single character operators. Editing on a line or character basis and interaction with an executing program is included. The overall approach has been one of command language and source language unification. Extract:
    INTRODUCTION
    The Maniac computer, developed at Los Alamos and used primarily for computer science research, has been maintained in an atmosphere of close manmachine interaction [Lazarus et al, 1968]. Early communication methods were limited by slow interactive input~output equipment. Facilities included switches on the console, typewriters for insertion of absolute machine instructions or data values directly into the computer registers, and special Flexowriters with subscript and superscript capabilities which were used to type input values when requested by the computer and for immediate on-line editing of programs or data. These Flexowriters were also used by the system for job requests and to type out compiling or editing diagnostics.

    Printed output for the two-dimensional programming language Madcap was displayed on a fast printer that had half-line spacing and an extended character set. Currently, the computing industry is exploring the belief that on-line creation and modification of programs by a scientist can be a productive process. Our goal in designing the terminal control language for Madcap's current interactive system has been to allow the user to enter his programs into the system, obtain evaluations, do required editing tasks, and interact with executing codes in a convenient and uncomplicated manner, using language consistent with that in which he writes his programs.


          in Proceedings of the SIGPLAN symposium on Two-dimensional man-machine communication 1972 , Los Alamos, New Mexico, United States view details
  • Sammet, Jean E., "Programming languages: history and future" view details
          in [ACM] CACM 15(06) (June 1972) view details
  • Wells, Mark B. "A review of two-dimensional programming languages" pp1-10 view details Abstract: Everyday mathematical language, as it appears on the printed page for instance, non-trivially makes use of two dimensions. This paper discusses various technical aspects of programming languages which utilize such natural symbolism. First, some terminology which is and can be useful in describing these systems is presented. Then, the man-machine interface in relation to two-dimensional languages in general is examined. This is followed by an historical survey of particular languages, including a brief description of their two-dimensional characteristics. Finally, a review of the analysis problem for such languages is given.
    Extract: MADCAP
    The Madcap language developed at Los Alamos was
    an early two-dimensional programming language making
    use of hardware to avoid human two-dimensional
    to one-dimensional translation. The earliest
    version Madcap 3 [Wells, 1961], had only subscripting
    and exponentiation capabilities, but additional
    two-dimensional constructions have been incorporated
    as the language has grown and developed [Sammet,
    1969]. The latest version is Madcap 6.
    All versions of Madcap have been keyboard languages,
    and until recently, typewriter based; Madcap
    6 is a scope based language. The Madcap languages
    have allowed representation only of textual twodimensional
    information, although one form of tabular
    data, linear algebraic matrices, will most likely
    be allowed in the very near future. All three
    subclasses of textual display, expression formation,
    symbol formation, and page formatting have appeared
    in the Madcap languages. Expression formation has
    included subscripting, initially restricted and now
    arbitrary exponentiation, displayed division, sun, nation
    and integral scripting, binomial coefficient
    display and Knuth's display notation for Stirling
    numbers of the second kind, and, recently, underlining.
    Underlining is used in Madcap 6, in lieu
    of declarations, to indicate the point of an identifier's
    definition. Symbol formation in earlier versions
    included construction of capital ~ [two less
    than symbols one half line apart), capital N (two
    vertical bars overscored three half lines above the
    underscores), and various other symbols--V, ~, e, ~,
    <, ~, etc. The use of a large basic character set
    in Madcap 6 [Devaney and Hudgins, 1972] and the
    ability to plot characters in more than one size on
    the scope face obviates many of these constructions,
    but symbol formation does still exist. The two most
    prominent examples in the current version are the
    use of overprinted letters for identifier formation
    (e.g. a, p, R) and the construction of large absolute
    value, floor, and ceiling notations. (A recent
    two-dimensional language, Ha] [Miller, 1972], uses
    such overprinting in its output to indicate the data
    type of the identifiers.)
    Page formatting in Madcap is rather unique.
    Early versions used indentation to display loop and
    conditional bodies as well as arguments (arbitrary
    expressions) of input~output commands [Wells, 1963].
    This use of indentation proved to be extremely natural
    and made Madcap source programs exceptionally
    readable. (Note that many published A]9o] programs
    are written in a similar manner although of course
    it is a begin-end pair which delimits the block.)
          in Proceedings of the SIGPLAN symposium on Two-dimensional man-machine communication 1972 , Los Alamos, New Mexico, United States view details
  • Morris, J.B. A Comparison of Madcap and SETL, Los Alamos Sci. Lab., University of California, Los Alamos, N. Mexico 1973 view details
          in Proceedings of the SIGPLAN symposium on Two-dimensional man-machine communication 1972 , Los Alamos, New Mexico, United States view details
  • Sammet, Jean E. "Roster of Programming Languages for 1973" p147 view details
          in ACM Computing Reviews 15(04) April 1974 view details
  • Leavenworth, Burt M.; Sammet, Jean E. "An overview of nonprocedural languages" pp1-12 view details Abstract: This paper attempts to describe some of the basic characteristics and issues involving the class of programming languages commonly referred to as ?nonprocedural? or ?very high level?. The paper discusses major issues such as terminology, relativeness, and arbitrary sequencing. Five features of nonprocedural languages are described, and a number of specific languages are discussed briefly. A short history of the subject is included.
    Extract: SETL and MADCAP
    We will discuss the languages SETL (Schwartz, 1973) and MADCAP (Morris and Wells, 1972) as representative of a class of set oriented langauges.
    [...]
    SETL is a very high level mathematically oriented language.Its important composite data structures are finite unordered sets, tuples, and functions. The set operations in both languages are very similar except that SETL allows heterogeneous sets. Functions in both SETL and MADCAP are not only available in the conventional sense but can also be represented by sets of tuples, i.e., relations. Both languages have a "set former" capability which is to say that they provide associative referencing on the elements of sets. SETL has a "compound operator" which works very much like the APL reduction operator, and both languages have other constructions which can be used to obviate loops in most cases.
    MADCAP has a backtracking facility (not currently provided in SETL) as well as a control structure called an iterative expression.
    As an example of the power of SETL, consider the following expression which specifies the prime numbers between 2 and lO0:
    {P,2 <= P <= lO0 + (v 2 <: N < P ÷ (P//N)NE. 0)}
    which can be read in English as "the set of P's between 2 and 1O0 such that for every N greater than or equal to 2 and less than P the remainder of P/N is not equal to zero".
    The above specification is obviously not an efficient one; a practical program at the very least would just consider the odd numbers from 3 to lO0.
          in Proceedings of the ACM SIGPLAN symposium on Very high level languages, March 28-29, 1974, Santa Monica, California, United States view details
  • Wells, Mark B. "Preprocessing of typed two-dimensional mathematical expressions" pp25-37 view details Abstract: An algorithm is discussed which translates two-dimensional mathematical expressions such as subscripting and displayed division, that have been prepared using a keyboard input device, into a string form suitable for input to a classical compiler. The algorithm allows reasonably general forms, yet is sufficiently simple to be practically applicable today. It may be used as a preprocessor to an existing compiler in order to improve the readability of an existing language.
    External link: Online copy
          in SIGPLAN Notices 11(09) September 1976 view details
  • Sammet, Jean E. "Self-Study Questions & Answers" p109 view details Extract: MADCAP
    A different group at Los Alamos developed the MADCAP language under the leadership of Mark Wells to run on the MANIAC. [...] The input/ output device was a modified Friden Flexowriter that used paper tape and allowed subscripts and superscripts in their proper locations.
          in Annals of the History of Computing, Spring 1987 view details