MIT Combined interactive and automatic coding system 

Adams and Laning  on MIT's Whirlwind - presented at the ONR's Translator Symposium in 1954.

Places Hardware:
Related languages
Algebraic => Comprehensive   Incorporated features of
Summer Session => Comprehensive   Incorporated features of
Comprehensive => GESAL   Influence
Comprehensive => Lincoln Compiler   Evolution of
Comprehensive => PACT I   Dissatisfaction Moderate Influence

  • [Forrester, Jay]; Adams, Charles and Gill, Stanley "Notes on digital computers and their applications" Summer session 1953 Cambridge, MA MIT 1953, 1953 view details
  • Adams, C., Arden,D.; Best, S.; Denman, H.; Frankovich, J.; Helwig, F.; Koply, E.; Porter, J.; Siegel, A. A system of automatic coding for the Whirlwind Computer comprehensive system manual. MIT, Digital Computer Laboratory, Cambridge, Mass., Dec. 1953 view details
  • Adams, Charles W and Laning J.H. Jr "The MIT System of Automatic Coding: Comprehensive, Summer Session and Algebraic" view details
          in Symposium on Automatic Programming For Digital Computers, Office of Naval Research, Dept. of the Navy, Washington, D.C. PB 111 607 May 13-14 1954 view details
  • Denman, H. H., Kopley, E. S., and Porter, J. D. "Comprehensive System Manual: I. Introduction to Programming", Memorandum M-2539-1, 1954 April. view details
          in Symposium on Automatic Programming For Digital Computers, Office of Naval Research, Dept. of the Navy, Washington, D.C. PB 111 607 May 13-14 1954 view details
  • Bemer, R. W. "The Status of Automatic Programming for Scientific Problems" view details Abstract: A catalogue of automatic coding systems that are either operational or in the process of development together with brief descriptions of some of the more important ones Extract: Summary
    Let me elaborate these points with examples. UNICODE is expected to require about fifteen man-years. Most modern assembly systems must take from six to ten man-years. SCAT expects to absorb twelve people for most of a year. The initial writing of the 704 FORTRAN required about twenty-five man-years. Split among many different machines, IBM's Applied Programming Department has over a hundred and twenty programmers. Sperry Rand probably has more than this, and for utility and automatic coding systems only! Add to these the number of customer programmers also engaged in writing similar systems, and you will see that the total is overwhelming.
    Perhaps five to six man-years are being expended to write the Alodel 2 FORTRAN for the 704, trimming bugs and getting better documentation for incorporation into the even larger supervisory systems of various installations. If available, more could undoubtedly be expended to bring the original system up to the limit of what we can now conceive. Maintenance is a very sizable portion of the entire effort going into a system.
    Certainly, all of us have a few skeletons in the closet when it comes to adapting old systems to new machines. Hardly anything more than the flow charts is reusable in writing 709 FORTRAN; changes in the characteristics of instructions, and tricky coding, have done for the rest. This is true of every effort I am familiar with, not just IBM's.
    What am I leading up to? Simply that the day of diverse development of automatic coding systems is either out or, if not, should be. The list of systems collected here illustrates a vast amount of duplication and incomplete conception. A computer manufacturer should produce both the product and the means to use the product, but this should be done with the full co-operation of responsible users. There is a gratifying trend toward such unification in such organizations as SHARE, USE, GUIDE, DUO, etc. The PACT group was a shining example in its day. Many other coding systems, such as FLAIR, PRINT, FORTRAN, and USE, have been done as the result of partial co-operation. FORTRAN for the 705 seems to me to be an ideally balanced project, the burden being carried equally by IBM and its customers.
    Finally, let me make a recommendation to all computer installations. There seems to be a reasonably sharp distinction between people who program and use computers as a tool and those who are programmers and live to make things easy for the other people. If you have the latter at your installation, do not waste them on production and do not waste them on a private effort in automatic coding in a day when that type of project is so complex. Offer them in a cooperative venture with your manufacturer (they still remain your employees) and give him the benefit of the practical experience in your problems. You will get your investment back many times over in ease of programming and the guarantee that your problems have been considered.
    The IT language is also showing up in future plans for many different computers. Case Institute, having just completed an intermediate symbolic assembly to accept IT output, is starting to write an IT processor for UNIVAC. This is expected to be working by late summer of 1958. One of the original programmers at Carnegie Tech spent the last summer at Ramo-Wooldridge to write IT for the 1103A. This project is complete except for input-output and may be expected to be operational by December, 1957. IT is also being done for the IBM 705-1, 2 by Standard Oil of Ohio, with no expected completion date known yet. It is interesting to note that Sohio is also participating in the 705 FORTRAN effort and will undoubtedly serve as the basic source of FORTRAN-to- IT-to-FORTRAN translational information. A graduate student at the University of Michigan is producing SAP output for IT (rather than SOAP) so that IT will run on the 704; this, however, is only for experience; it would be much more profitable to write a pre-processor from IT to FORTRAN (the reverse of FOR TRANSIT) and utilize the power of FORTRAN for free.
          in "Proceedings of the Fourth Annual Computer Applications Symposium" , Armour Research Foundation, Illinois Institute of Technology, Chicago, Illinois 1957 view details
  • Gorn, Saul "Standardized Programming Methods and Universal Coding" view details Extract: Introduction
    It is possible so to standardize programming and coding for general purpose, automatic, high-speed, digital computing machines that most of the process becomes mechanical and, to a great degree, independent of the machine. To the extent that the programming and coding process is mechanical a machine may be made to carry it out, for the procedure is just another data processing one.
    If the machine has a common storage for its instructions along with any other data, it can even carry out each instruction immediately after having coded it. This mode of operation in automatic coding is known as 'interpretive'. There have been a number of interpretive automatic coding procedures on various machines, notably MIT's Summer Session and Comprehensive systems for Whirlwind, Michigan's Magic System for MIDAC, and IBM's Speedcode; in addition there have been some interpretive systems beginning essentially with mathematical formulae as the pseudocode, such as MIT's Algebraic Coding, one for the SEAC, and others.
    We will be interested, however, in considering the coding of a routine as a separate problem, whose result is the final code. Automatic coding which imitates such a process is, in the main, non-interpretive. Notable examples are the A-2 and B-O compiler systems, and the G-P (general purpose) system, all for UNIVAC, and IBM's FORTRAN, of the algebraic coding type.
    Although, unlike interpretive systems, compilers do not absolutely require their machines to possess common storage of instructions and the data they process, they are considerably simpler when their machines do have this property. Much more necessary for the purpose is that the machines possess a reasonable amount of internal erasable storage, and the ability to exercise discrimination among alternatives by simple comparison instructions. I t will be assumed that the machines under discussion, whether we talk about standardized or about automatic coding, possess these three properties, namely, common storage, erasable storage, and discrimination. Such machines are said to possess "loop control".
    We will be interested in that part of the coding process which all machines having loop control and a sufficiently large storage can carry out in essentially the same manner; it is this part of coding that is universal and capable of standardization by a universal pseudo-code.
    The choice of such a pseudo-code is, of course, a matter of convention, and is to that extent arbitrary, provided it is
    (1) a language rich enough to permit the description of anything these machines can do, and
    (2) a language whose basic vocabulary is not too microscopically detailed.
    The first requirement is needed for universality of application; the second is necessary if we want to be sure that the job of hand coding with the pseudo-code is considerably less detailed than the job of hand coding directly in machine code. Automatic coding is pointless practically if this second condition is not fulfilled.
    In connection with the first condition we should remark on what the class of machines can produce; in connection with the second we should give some analysis of the coding process. In either case we should say a few things about the logical concept of computability and the syntax of machine codes.
          in [ACM] JACM 4(3) July 1957 view details
  • [Bemer, RW] [State of ACM automatic coding library August 1958] view details
          in [ACM] JACM 4(3) July 1957 view details
  • [Bemer, RW] [State of ACM automatic coding library May 1959] view details Extract: Obiter Dicta
    Bob Bemer states that this table (which appeared sporadically in CACM) was partly used as a space filler. The last version was enshrined in Sammet (1969) and the attribution there is normally misquoted.
          in [ACM] CACM 2(05) May 1959 view details
  • Shell, Donald L. "The Share 709 System: A Cooperative Effort" view details Abstract: SHARE was created in August 1955. From the beginning, its aim has been to reduce redundant effort among various users of the IBM 704, insofar as the preparation of commonly used routines is concerned.
    The organization has operated on a cooperative basis, establishing a standard language of communication and exchanging a large number of programs which form the tools for effectively using the computer.
    This standard language of communication is that used in the SHARE Assembly Program, which was developed by United Aircraft Corporation and patterned after the first such program for the 704 which was developed under the writer's direction by the General Electric Company.
    This, in turn, was patterned to a considerable extent after the "Comprehensive System" which was pioneered at M. I. T. for use on the Whirlwind computer. At the SHARE meeting held in December 1956, the organization anticipated the forthcoming IBM 709 which was similar in a great many respects to the machine around which the organization was originally built.
    In order to have a set of programs available for use upon delivery of the new machine, the organization established a 709 System Committee which was given the task of preparing a “system” for using the machine. The writer was made Chairman of this Committee. Various installations volunteered individuals for service on this committee on a full time basis.
    The following people were selected by the Committee Chairman and the SHARE Executive Board for participation on the committee:
    Donald L. Shell General Electric Co., Cincinnati, O., Chairman
    Elaine M. Boehm IBM, New York
    Ira Boldt Douglas Aircraft Corp., Santa Monica
    Harvey Bratman Lockheed Aircraft Corp., Los Angeles
    Vincent DiGri IBM, New York Irwin
    D. Greenwald Rand Corporation, Santa Monica
    Maureen E. Kane IBM, Poughkeepsie
    Jane E. King General Electric Co., Schenectady
    Owen R. Mock North American Aviation, Los Angeles
    Stanley Poley Service Bureau Corp., New York
    Thomas B. Steel System Development Corp., Santa Monica
    Charles J. Swift Convair, San Diego
    The Committee's work led to the creation of a system which has been named SCAT (for SHARE Compiler, Assembler, Translater). The initial problem facing the committee was to define what was meant by a system. The scope of the anticipated system varied greatly in the minds of the various members of the committee.
    After due consideration, it was decided to specify a complete installation operational system with all the fundamental necessities for effective machine utilization supplied. The committee would use the best experience available and advance the art of machine usage, if possible. However, it would not attempt any features of such novelty as to endanger completion of the system in the time available.
    Some of the objectives sought were: simplicity nonstop machine operation card-tape input interchangeability minimum programmer constraints automatic error detection ability to handle the SHARE 704 language, wherever possible. The most important advance made in the system over previous developments is in the area of program debugging. It was felt by the committee that if any true advancement were to be made in this direction, especially in higher language coding situations, it would be necessary to make the machine reply to the programmer in the same language that the programmer originally used to code his problem. The ability to perform this very desirable feat has not been accomplished in every instance. However, a rather long step has been taken in this direction.
    This step was made possible through the use of symbolic machine language, patterned closely after the SHARE 704 language, as the common denominator for all communication with the machine.
    Instructions written in symbolic form, as macro instructions,1 as algebraic statements, as subroutines or in any other acceptable form, are converted to symbolic machine language by the compiler and retained in an encoded symbolic form as the compiled version of the program. This encoded form of the program is called the SQUOZE deck. Thus, the symbolic machine language is used for compiler output. It is also used for communicating program changes and corrections at execution time and even for debugging output. This use of the symbolic language is, we feel, a major forward step in the techniques of machine utilization.A rather generalized picture of system usage is illustrated in figure 1.
    The men pictured there are actually the same person (the programmer) at different points in the system. Initially, at the upper left, he supplies his programs. These go to the compiler, C, in various formats—symbolic instructions, macro instructions, library subroutines, previously compiled SQUOZE decks, and perhaps ultimately FORTRAN statements. The compiler processes this material to produce a single SQUOZE deck which may now be passed along to the modify and load, L, portion of the system. The loading procedure accepts, along with the compiler output, corrections and modifications directly from the programmer in the same symbolic language used to write the original program.
    Whereas the compiler and loading procedures operate separately from the object program, the input, I, output, O, and debugging, D, systems are in essence attachments to the object program. These routines absorb the bulk of the burden of translation for the programmers. A set of fundamental routines are provided in a very flexible form—easily adapted to the specific needs of any particular problem. This whole procedure makes possible some very important advantages. First of all, one can make corrections in the same symbolic language in which the program was originally written. Thus, it is a simple matter to keep the program continuously up-to-date. Secondly, the machine has available at execution time sufficient information for the inverse translation—from absolute to symbolic machine language. Thirdly, it is possible to leave many program parameters undefined until execution time, which by former methods had to be defined at compile time. Further details as to methodology and procedure are outlined in the other papers of this set.Three methods were available for the development of this system: The 709 System Committee could assume complete responsibility for the system, including program coding and checkout.
    The Committee could completely specify the system and SHARE members would volunteer to produce component programs for the system.
    The Committee could specify the system, whereas coding and checkout would be done by the manufacturer. The planning effort expended by the committee amounted to about five man years. This, as can readily be seen, is a very large amount of planning time for such a system. A considerable number of alternative ideas were investigated and developed to some extent before being discussed and either discarded or finally adopted as part of the system.
    Since there were a number of rather divergent points of view represented in the committee, it took a great deal of effort to reconcile these approaches into a unified working whole. In addition to the Committee effort, the manufacturer has spent between ten and fifteen man years in order to implement the system. This time has been spent in detailed specifications analysis, programming, coding, checkout, and system integration. The completed system will contain about 46,000 words of instructions and tables. About 13,000 words of this total are needed for the compiler. The remainder is used for the modify and load program, the input and output translation systems, the debugging system and the supervisory control system. About 1,000 words of memory will be needed by the system at execution time.
    A considerable body of experience will be required before this effort can be properly evaluated. However, we shall here set forth a tentative evaluation. First of all, an excellent machine utilization system has been devised. It is a system which should be generally acceptable to all of the users of this particular machine. It has been recognized from the beginning that many local installations will wish to make changes and improvements in the system in order to adapt it especially to their needs. However, the fundamental procedures used throughout the system will undoubtedly be retained in every installation. In particular, the basic foundation, the encoded symbolic language, can and will be used as a common language from one installation to another and will serve as an excellent communication device.
    It is the writer's feeling that the planning took more effort than was really necessary to produce such a system. This was due in large measure to the enforced inefficiencies of committee action; particularly a committee which is supposed to reconcile many divergent points of view and which does not have a really effective decision procedure. Viewed in this light, it would appear that the very excellent talent which made up the Committee was not used in the most effective possible way. On the other hand, probably all the Committee members will agree that the final result is a better system than any one of the members would have developed completely on his own.
    Furthermore, it was obtained with a smaller expenditure of effort by any one installation than would have been necessary to develop any reasonable working system. Viewed in this light, it would appear that although these individuals may not have been operating in the most effective way, still the various installations which contributed these people are getting more for their money than they would have obtained by having them work at home for the same period of time. In addition, future communication of programs among the members of SHARE will be greatly enhanced and expedited through the use of this language which is common to all. These results have made the whole effort extremely worthwhile.
          in [ACM] JACM 6(2) April 1959 view details
  • Bemer, R "ISO TC97/SC5/WGA(1) Survey of Programming Languages and Processors" December 1962 view details
          in [ACM] CACM 6(03) (Mar 1963) view details
  • Rosen, Saul "Programming Systems and Languages: a historical Survey" (reprinted in Rosen, Saul (ed) Programming Systems & Languages. McGraw Hill, New York, 1967) view details Extract: Comprehensive System, Summer Session
    One of the most important of the early automatic programming groups was associated with the Whirlwind project at MIT. Whirlwind, which was built between 1947 and 1951, was a fast but very basic computer. With only a 16 bit word it had a very limited instruction code, and very limited high speed storage. Even relatively simple calculations required the use of multi-precision techniques. The very difficulty of using the machine in its own language provided great incentive toward the development of programming languages. The Summer Session Computer at MIT was one of the early interpretive systems, designed to make the Whirlwind computer available to students at a summer course in computing at MIT. These early developments led to the design of a quite elaborate "Comprehensive System" for Whirlwind.
          in [AFIPS JCC 25] Proceedings of the 1964 Spring Joint Computer Conference SJCC 1964 view details
  • Backus, John "Programming in America in the nineteen fifties - some personal impressions" pp125-135 view details
          in Metropolis, N. et al., (eds.),A History of Computing in the Twentieth Century (Proceedings of the International Conference on the History of Computing, June 10 15, 1976) Academic Press, New York, 1980 view details
  • Ceruzzi, Paul with McDonald, Rod and Welch, Gregory "Computers: A Look at the First Generation" view details External link: The Computer Museum Report, Volume 7 online at Ed Thelen's site Extract: Programming first generation machines
    The first generation of computers were programed in machine language, typically by binary digits punched into a paper tape. Activity in higher-level programming was found on both the large-scale machine and on the smaller commercial drum computers.

    High-level programming languages have their roots in the mundane. A pressing problem for users of drum computers was placing the program and data on the drum in a way that minimized the waiting time for the computer to fetch them.

    It did not take long to realize that the computer could perform the necessary calculations to minimize the so called latency, and out of these routines grew the first rudimentary compilers and interpreters. Indeed, nearly every drum or delay line computer had at least one optimizing compiler. Some of the routines among the serial memory computers include SOAP for the IBM 650, IT for the Datatron, and Magic for the University of Michigan's MIDAC.

    Parallel memory machines had less sophisticated and diverse compilers and interpreters. Among the exceptions were SPEEDCODE developed for the IBM 701, JOSS for the Johnniac, and a number of compilers and interpreters for the Whirlwind.

          in The Computer Museum Report, Volume 7, Winter/1983/84 view details
  • Diana H. Hook; Jeremy M. Norman; Michael R. Williams "Origins of Cyberspace" Jeremy Norman 2002 view details Extract: Early MIT Algebraic systems
    MIT was allocated a small amount of the Whirlwind I's computing time for academic work, an activity organized by Charles W. Adams, assistant professor of digital computation at MIT's Digital Computer Laboratory. (Adams later founded Adams Associates, and became the proprietor of Key Data.) In 1952 Adams held the first of what was to be a series of yearly summer sessions on computer programming at MIT, designed to provide scientists, engineers, and business people with a better understanding of the potentialities and limitations of electronic information-processing systems. MIT thus became the second American educational institution, after the Moore School, to offer courses on electronic digital computers. During the first summer session the students did not have access to the computer, but the next year's course, held between August 24 and September 4, 1953, was based on a specially designed hypothetical computer called the Summer Session computer, for which an emulation was written to run on the Whirlwind-"a very progressive thing to do in 1953" (Wilkes 1985, 180-81). Among the session's lecturers were Stanley Gill and Maurice Wilkes, co-authors with David J. Wheeler of the first textbook of computer programming. Attending the 1953 session were 106 students: 28 from commercial and business groups, 53 from industrial research groups, and 25 from military and government establishments. The students attended lectures in the morning, and in the afternoon worked on writing computer programs for the solution of various problems, such as plotting the trajectory of a bouncing ball or selecting the winner from a given number of poker hands. The syllabus for the 1953 course includes a seven-page bibliography of computer literature.
          in The Computer Museum Report, Volume 7, Winter/1983/84 view details