SCAT(ID:3197/sca012)SHARE Compiler, Assembler, Translaterfor SHARE Compiler-Assembler-Translator (but also for the then-fashionable jazz wordless voice improvisation, hence improvised etc) Discussed by Bemeber Nov 1957 unified system for the SHARE group on the IBM 709/7090 Nov 1958 Places Hardware: Related languages
References: 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. Extract: IT, FORTRANSIT, SAP, SOAP, SOHIO 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 in Preprints of papers presented at the 13th national meeting of the Association for Computing Machinery, June 11-13, 1958, Urbana, Illinois view details As is often the cases the design of the SCAT Symbolic programming system was based primarily on the prior experience of its designers. In reviewing the difficulties that programmers had been (and still are) having using existing techniques, the conclusion that the 709 System Committee reached was that almost all of the troubles could be traced to failings in language: with the exception of absolute machine language coding (the drawbacks of which need not be labored here), it was discovered that in practice, the language in which a code is written is not the same as that in which changes and corrections are made or in which debugging information is received. The former are usually done by making "patches" in absolute terms and the latter is almost always absolute machine language. Upon reflection, it becomes apparent that a solution to the language problem has two major requirements: 1. That, in order for the programmer to "talk" to the machine in a purely symbolic language at all times, every "pass" at the machine must, in essence, be an assembly pass 2. That, in order for the machine to "talk" to the programmer in the same symbolic language (or any symbolic language) there must be available to the machine at execution time information concerning the format of the program being executed. [...] This, then, is the essence of the SCAT system: at all stages the programmer is using and receiving the same language in a completely consistent format. The instruction format is similar to that of any symbolic assembler: location symbol (as required in the context of the program); operation; operand. The kinds of instructions acceptable to SCAT are of four general classes: 1. Normal machine instructions 2. Pseudo instructions 3. Macro instructions 4. Modification instructions. Pseudo instructions are, for the most part, instructions to SCAT itself: for manipulating the location counter, equating different symbols, differentiating between duplicate symbols, reserving blocks of storage, etc. Macro instructions may be defined as "instructions which generate words or sequences of words" These words may be actual machine instructions, parameters for calling sequences, etc. SCAT has an extensive set of built-in macros to facilitate debugging as well as provision for incorporating programmer written macros. The SCAT modification instructions are closely akin to the insertion-deletion control cards of regional assembly programs. Their most important difference is that, with minor exceptions, the when, wherej and how are expressed in the usual SCAT symbolic language. To summarize: SCAT overcomes the major weakness of other techniques, (namely, language), by enabling the programmer to deal entirely in one symbolic language and consistent format at all times. in Preprints of papers presented at the 13th national meeting of the Association for Computing Machinery, June 11-13, 1958, Urbana, Illinois view details in Preprints of papers presented at the 13th national meeting of the Association for Computing Machinery, June 11-13, 1958, Urbana, Illinois view details in [ACM] JACM 6(2) April 1959 view details in E. M. Crabbe, S. Ramo, and D. E. Wooldridge (eds.) "Handbook of Automation, Computation, and Control," John Wiley & Sons, Inc., New York, 1959. view details 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 Description of the MOBL-MICA System MICA is an hierarchically organized compiler with a dominant system macro at the highest level. One level below the system macro lies the users program written in the form of one macro. This may contain machine coding library macros and user's macros. By sublevel nesting of macros, the user can eliminate redundant effort in the construction of new macros. If an address field is not defined in the macro which references it, the next higher level macro is examined and then the next, until the symbol is found. If the symbol is defined in more than one skeleton, MICA will alter the symbol (and all references to it) at each occurence to provide uniquely defined symbols. Operation codes (macros or machine coding), as well as location symbols, may appear as parameters; This allows MICA to compile alternate operations, depending on the decisions made at compiling time usually based on pr definitions. Fields may be defined without concern for word boundaries and may be either alphanumeric or binary. Once specified, the user may reference these fields with little concern for their description. For example, when using the MOVE macro, the user need only provide the symbolic locations (indexable) of the "from" arid "to" fields. The compiler will be responsible for such things as shifting, changing modes, masking and making the necessary adjustments when the fields are unequal in length. The following types of macros are provided by the MOBL library: - Input-Output - Data Definitions - Field Test and Control - Arithmetic - Logic Control - Field Editing - Indexing - Debugging Extract: Technique Technique of Writing With MOBL To write a retrieval program in MOBL, one prepares the data description which defines files, records and fields. One then proceeds to write the procedure using, for the most part, the macros provided by the MOBL language which address the files, records and fields previously defined. These describe the required manipulations. A significant feature of an hierarchical macro system like MICA is that it allows simple extensions of the language by creating new procedures (user macros ) to embody repeated actions. in [ACM] CACM 4(09) (September 1961) view details in [ACM] CACM 6(03) (Mar 1963) view details in [ACM] CACM 6(03) (Mar 1963) view details [321 programming languages with indication of the computer manufacturers, on whose machinery the appropriate languages are used to know. Register of the 74 computer companies; Sequence of the programming languages after the number of manufacturing firms, on whose plants the language is implemented; Sequence of the manufacturing firms after the number of used programming languages.] in [ACM] CACM 6(03) (Mar 1963) 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 [ACM] CACM 6(03) (Mar 1963) view details |