BELL(ID:6018/bel001)Bell labs compilersSeries of compilers (L1-6) for the IBM 650 beginning 1955 Port to 205 by the Shell Development Corp. 1958 Port to 220 by Burroughs 1958 Port to 704 by IBM Endicott PDL 1958 Hardware: Related languages
References: This memorandum gives a complete description of a General Purpose System for using the IBM 650 on general scientific problems. The system contains input and output, 8 decimal place floating-point arithmetic including the elementary transcendental functions to the full range of arguments, extensive logical control including five index registers, flexible tracing arrangements for easy program "debugging" and provisions for the ready use of library routines for special functions and operations. The use of a non-addressed order system makes it easy to learn and use. Previous knowledge of large scale digital computers is not required to understand and use the system. Many of the common mistakes in computing are eliminated by the system and ease of tracing aids in the location of others. The non-addressed order system in turn makes their correction a straightforward matter. Extract: Introduction INTRODUCTION I.1. General Design Considerations The use of most existing computing devices whose degree of automatic performance substantially exceeds that of a desk calculator entails certain problems not encountered in desk computing. To cope with these problems, one may incorporate additional circuitry into the machine-this, indeed, appears to be the trend in recently announced commercially available machines-or, alternatively, one may program, in terms of the basic language of the machine, a system or super-language in terms of which the general user will program his problems. The user may consider the machine and the super-language as one entity, and no knowledge of the basic machine language is required of him. Before actual calculation, the programmer?s instructions are translated by the machine,into the basic language. If this translation or interpretation takes place each time an instruction is to be executed, rather than once for all at the beginning of a problem, the super-language is referred to as an interpretive language or system. Limitations in storage capacity may necessitate the choice of an interpretive system rather than a system of the once-for-all type in the case of most small or medium-sized computers. The designers of an interpretive system are faced with a very large number of decisions. To provide a basis of motivation for these decisions, it is convenient to list here, in somewhat arbitrary order, some of the above-mentioned problems which the present interpretive system proposes to solve. All of them may fundamentally be measured in terms of total time spent by a programmer in learning to use the machine and in using it on a specific problem. In this sense, the "ease of use" referred to in the abstract above is implicitly defined by the list that follows. The price paid for the saving of programmer time is of course to be found in substantially reduced speed of operation. 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 "Proceedings of the Fourth Annual Computer Applications Symposium" , Armour Research Foundation, Illinois Institute of Technology, Chicago, Illinois 1957 view details in "Proceedings of the Fourth Annual Computer Applications Symposium" , Armour Research Foundation, Illinois Institute of Technology, Chicago, Illinois 1957 view details in [ACM] CACM 1(11) (October 1958) view details During the summer of 1956, I attended a series of seminars at Endicott, New York, given by the International Business Machines Corporation. One of the talks was given by Dr. Richard Hamming on the new Bell General Purpose System Interpretive Scheme which was currently being developed at Bell Telephone Laboratories. Hamming sent me a copy of this system as soon as it was available. I turned it over to one of the professors in the School of Electrical Engineering and asked him to give it a trial run. At that time he did not have much experience with computers, but he was successfully able to employ this system and was, in fact, very enthusiastic about it. He then asked me if I would give a series of seminars on its use to the Electrical Engineering faculty and graduate students. AS a consequence of this seminar, several faculty members and students utilized the computer on their individual research or thesis problems. During the same school year, I used the Bell System in my course on the numerical solution of ordinary differential equations. All the students in this course were asked to do all their numerical problems employing the Bell System. I felt that this quarter of work was particularly successful in giving the students an understanding of the problems involved in numerical computation work. I was able to ask the students to solve many more problems than when I had previously taught the course, and I also was able to ask them to vary the increment of integration much more widely. I feel that one of the greatest benefits derived from such a course was the subtle one of providing a very high motivation for carrying out normally rather dull computational work. Since the two experiences mentioned above, at least one seminar on the Bell System has been offered each quarter. Some quarters seminars have been given for special groups such as chemical engineers, or civil engineers, or mechanical engineers, with an emphasis on their particular type of work. The attendance in these seminars has varied from thirty to sixty, with the latter number being more frequently the case. Somehow this system seemed to catch the fancy of both students and faculty and really went over. There are a number of courses now in which the instructors regularly require their students to solve problems on the computer using the Bell System. These include a special problems course in Chemical Engineering, a photogrammetry course in Civil Engineering, a machine design course in Mechanical Engineering, an optics course in Physics, and a structures course in Civil Engineering. In the latter course, in addition to using the Bell System, the students are also required to utilize our standard IBM 650 Library for such things as the solution of systems of simultaneous linear equations. Our success with the Bell System on the IBM 650 inspired us to write a similar interpretive scheme for the 1101. This was again a three-address system, but unfortunately with our 24-bit word it was necessary to use three words to hold the interpretive order. It also employed the octal number system for addresses, as is customary on the 1101. The hope, of course, was to be able better to utilize the 1101. But these hopes were very quickly lost because the system was inherently more clumsy than the 650 Bell System. Thus, for the moment, we have abandoned our interpretive system for the 1101. Extract: FORTRAN, FORTRANSIT, RUNCIBLE, Bell Shortly after FORTRAN was made available on the 650 in the form of FORTRANSIT, we ran seminars on it. I t was felt that the high mnemonic value of the FORTRAN language would be a further aid to programming. This turned out to be the case for those students or faculty members who were already familiar with the Bell System or with machine language. However, it appeared to us that those without some previous computer background did not take to the FORTRANSIT compiler system as well as they did to the Bell General Purpose Interpretive System. Students with the appropriate background and with more complex problems were pleased with the ease with which they could program their problems using FORTRANSIT. It was about this stage that we decided that we would try to make the FORTRAN system available on our 1101. Also about this time the ElectroData Division of Burroughs Corporation indicated that they planned to make the FORTRAN system available on their forthcoming 220. Thus we felt that, by writing FORTRAN for the 1101, we would be able to program a problem in the FORTRAN language and run it on any one of our three machines. In this manner we would then be able to equalize the load on our three machines. Consequently, a year ago this past summer two of our programmers started writing FORTRAN for the 1101. They continued this work until they attended the seminar on compilers held last February 18-20, 1959, at Carnegie Institute of Technology, which was jointly sponsored by Carnegie, Case, and the University of Michigan. After returning from this seminar, these two boys reviewed their work and the compiler systems presented at this conference. They then recommended that the course of their work be changed from making FORTRAN available to making the RUNCIBLE system available for the three computers. As most of you probably know, the RUNCIBLE system of Case is the result of several revisions of Dr. A. J. Perlis' IT system. Our boys felt that RUNCIBLE was logically far more complete and much more flexible in its use. It was felt that these two major advantages were sufficiently great to overcome the loss of higher mnemonic value of FORTRAN. It was thus decided that the RUNCIBLE system would be used instead of the FORTRAN system. Since RUNCIBLE is more complete logically, it would be a relatively easy task to put a translator in front of RUNCIBLE to be able to handle the FORTRAN language if it was later decided that this was desirable. Our decision to adopt RUNCIBLE rather than FORTRAN has been further justified by the fact that the ElectroData people appeared to have set aside their project to write FORTRAN for the 220. In the meantime, our programmers have also been able to run the RUNCIBLE on the 220 by use of the 650 Simulator. The simulator was written by the ElectroData people for the 220 and appears to be very efficient in the cases where we have employed it. It is true that this is not an exceedingly efficient use of the 220, but it is also true that in our case we will probably not run many compiler programs on the 220. It currently appears that we have enough people willing and able to write the machine language to keep the 220 busy. Even though we only installed the 220 early this year, we are already running two shifts on it. Most of this work is either sponsored research work or faculty-graduate student research projects that require the larger machine. Essentially, no one-shot small problems have been put on the 220. We are currently running our third seminar on the RUNCIBLE system. The attendance at these seminars has varied. This quarter our Bell seminar drew the usual sixty people, and the RUNCIBLE seminar only seven. However, the two previous RUNCIBLE seminars had about twenty each. In order that we may not be accused of being out of date relative to the current push on compilers, we are considering the possibility of offering only the RUNCIBLE seminar next quarter. Perhaps this will help overcome the mass momentum that has developed relative to the Bell System. I still have, however, the strong feeling in my own mind that, for the smaller one-shot computer projects of the uninitiated, the actual time elapsed between problem initiation and problem solution may be considerably less in using the Bell System. I had the experience of sitting down with a sharp faculty person one afternoon and describing the Bell System to him. The next day he came back with a moderately complex integration problem completely programmed and ran it on the 650. I have not had the exact set of circumstances to try the RUNCIBLE system, but I doubt that the same degree of success could be achieved. It seems very clear to me that an undisputed value for a compiler system such as RUNCIBLE or FORTRAN is for the larger-scale problems and for experimental mathematical studies, where the model is sufficiently changed to make it unfeasible efficiently to employ a simple interpretive scheme. My current feeling is that, within an educational research situation such as ours, there will always be a place for interpretive systems such as the Bell System. I t seems to me that, in learning such a system, one gets a better feeling for the way in which the machine actually functions. After all, the interpretive schemes are not too far removed from machine-language programming and yet still have many advantages over such programming. It appears that, the wider the basic knowledge that a student has, the more useful he will be when he goes out into industry, even though there his computer work may be confined to the use of a compiler. I would also concur in the continued inclusion of machine-language programming in the basic programming courses offered for credit by the Mathematics Department, the Electrical Engineering Department, or whatever department happens to offer these courses, someone has to have a sufficiently strong background to be able to build compilers. Extract: Not using assemblers (SOAP, STAR) You probably have noted by now that I have made no direct mention of assembly routines. This lack of reference reflects our situation at Georgia Tech. Small use has been made of them. No seminars have been run on their use. A few people have used SOAP on the 650. A very few are using STAR I on the 220. An assembly program was written for our 1101, but it was purely for intermediate purposes and had no direct use. I currently see no necessity of ever running a non-credit seminar on assembly routines, but I would advocate their inclusion in the credit courses in programming. in Proceedings of the 1959 Computer Applications Symposium, Armour Research Foundation, Illinois Institute of Technology, Chicago, Ill., Oct. 29, 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 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 Delivery of the- smaller, medium scale magnetic-drum computers started in 1953, and by 1955-56 they were a very important factor in the computer field. The IBM 650 was by far the most popular of the early drum computers. The 650 was quite easy to program in its own language, and was programmed that way in many applications, especially in the data-processing area. As a scientific computer it lacked floating point hardware, a feature that was later made available. A number of interpretive floating point systems were developed, of which the most popular was the one designed at the Bell Telephone Laboratories. This was a three address floating point system with automatic looping and with built in Mathematical subroutines. It was a logical continuation of the line of systems that had started with the general purpose CPC boards, and had been continued in 701 Speedcode. It proved that on the right kind of computer an interpretive system can provide an efficient effective tool. Interpretive systems fell into disrepute for a number of years. They are making a very strong comeback at the present time in connection with a number of so-called micro-programmed computers that have recently appeared on the market. in [AFIPS JCC 25] Proceedings of the 1964 Spring Joint Computer Conference SJCC 1964 view details Resources
|