PUFFT(ID:235/puf001)

Student's Fortan 


The Purdue University Fast FORTRAN Translator

Purdue University 1965

IBM 7090

Places
People:
Related languages
CORC => PUFFT   Influence
FORGO => PUFFT   Influence
FORTRAN IV => PUFFT   Implementation
MAD => PUFFT   Influence
PUFFT => Delta   Based on
PUFFT => NAPSS   Protype written using
PUFFT => WATFOR   Influence

References:
  • Rosen, Saul "Compilers for student jobs" pp141.301-141.302 view details Extract: PUFFT
    Many Universities use Fortran as their chief language of instruction to beginners in computer science. Fortran is the best known scientific computer language and is the language most used in industrial and government projects. Compilers exist on almost all machines.

    The first Fortran translators on large scale machines were mostly slow and cumbersome and poorly suited for student use. This situation is gradually being remedied, both by the manufacturer and by users even on the IBM 7000 series where slow Fortran Compilers became almost a tradition. At Purdue University we are debugging a system called PUFFT, the Purdue Fast Fortran Translator, which is specifically designed to handle short, student type Fortran IV Jobs on the 7090 at great speed. PUFFT is a onepass compiler with the entire Job sequencing and translating system plus a basic set of subroutines and a powerful diagnostic system permanently residing in less than half of core memory. Space and run time efficiency are sacrificed but all of the Fortran IV language is included and is compatible with the proposed standard Fortran IV.
          in Proceedings of the 19th ACM national conference January 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 Proceedings of the 19th ACM national conference January 1964 view details
  • Rosen, S., Spurgeon, R. A., and Donnelly, J. K., "PUFFT-The Purdue University Fast FORTRAN Translator" view details DOI Abstract: A core resident, compile-and-go system designed for the IBM 7090/7094 computer is described. In little more than half of the 32K word core memory PUFFT provides a monitor for job sequencing, a translator for the full FORTRAN IV language, the FORTRAN subroutine library, an input-output system for use at compile time and at execute time, and a rather elaborate diagnostic message writing routine. Batches of small- and medium-sized FORTRAN IV source language programs are processed at very high speeds. Language compatibility has been maintained so that programs may be debugged in the PUFFT system and then recompiled and run in the IBJOB-IBFTC system supplied by the manufacturer. Extract: Introduction
    Introduction
    The problem of cutting down the overhead required by a programming system is especially acute in an environment whose typical daily run may consist of many hundreds of very short programs, along with relatively few long ones. This is typical of a computing center at a large university where the computer is used extensively as an educational device.

    A number of programming systems have been developed with this reduction in overhead as an important design objective. Systems of this kind have been developed at the University of Michigan, at Cornell University and elsewhere. In just about every case the system project has been associated with a language development project ? MAD at Michigan, CORC at Cornell and others.

    There are a number of good reasons for tying the educational program in programming to the language that is used in the industrial environment, in which most of the students will eventually work. At Purdue University, the Computer Science Department therefore decided to teach FORTRAN programming in its introductory programming courses.

    The computer in use at Purdue was an IBM 7090 which has since been converted into the IBM 7094. FORTRAN IV on the 7090 provided a number of important language facilities not present in. earlier versions of FORTRAN, and it was FORTRAN IV that was adopted as the language for basic programming instruction. The FORTRAN IV processor provided by the manufacturer is IBFTC, which operates under the monitor IBJOB, which in turn operates under the basic monitor IBSYS. The system as it existed in 1963 was fairly well debugged and it produced reasonably good object code, but it was notoriously slow.
    It would have been possible to modify the IBSYS-IBJOB-IBFTC system to speed up the processing of many FORTRAN jobs. IBM has since done this by writing a new faster version of IBFTC as part of their version 13 of IBSYS.

    It is however very difficult to design a single processor that provides not only system flexibility and carefully optimized object code, but also provides, as an option, the fastest possible processing with fewer facilities and perhaps poorer code. It is much easier to design two separate systems that use the same source language but are otherwise designed from quite different points of view to satisfy different objectives. This is an especially attractive approach where one system already exists, as in the case of IBFTC on the 7090.

    PUFFT (the Purdue University Fast FORTRAN Translator) was therefore designed as an independent operating system for the IBM 7090/94 computer. PUPFT handles job-to-job sequencing, translating and running of batches of programs submitted to it in FORTRAN IV source language. The entire system remains resident in just over one half of core memory during both compilation and execution. The single pass compiler is also the loader. It reads the source language program and translates it into absolute code, ready for execution in the upper half of core memory. System overhead has been almost completely eliminated.

    PUFFT was designed to complement not supplant IBFTC. Object code running time for programs translated by PUFFT is not as fast as in the same programs translated by IBFTC. Object code running time will not usually be significant for the class of programs run under PUFFT. If a problem has been prepared for PUFFT or debugged using PUFFT and if the object code running time turns out to be significant, the same program deck can be submitted for processing by IBFTC and run under IBJOB. The same can be done for those jobs that turn out to be too long for PUFFT to handle. Typical student jobs, especially those written by beginning students, are short jobs that are compiled several times before source language errors are eliminated. Only then can the object code be run, and it is usually quite short.
    To achieve the objectives of PUFFT it was necessary to maintain a very high degree of language compatibility with IBFTC. PUFFT was designed to include all of the FOUTEAN IV language features described in the FORTRAN IV version 13 manual. It includes relatively new FORTRAN features, such as multiple-entry-to and re turn-from subroutines and the handling of arrays of up to seven dimensions. System features like overlay and source language debugging are not included. Some features like the prohibition of mixed mode arithmetic and testing at the end of the DO loop have been retained for the sake of compatibility, even though they are known deficiencies of the FORTRAN language that could have been remedied.

    Among the features that PUFFT gives up to achieve its speed objective are the ability to produce binary output decks, the ability to accept either binary or assembly language input and the ability to handle very large programs. It does maintain the ability to recognize and document a large variety of source language errors. In this respect it often performs better than IBFTC, version 13.


          in [ACM] CACM 8(11) Nov 1965 view details
  • Rosin, Robert F. "On PUFFT" (Letter to the editor on favourable experience with PUFFT at Yale) view details Abstract: On PUFFT
    Dear Editor:
    The PUFFT System, as described by Rosen et al. in the November
    1965 Communications has been found to be a most valuable
    tool here at Yale. All of the flexibility and efficiency which is described in the article does, in fact, exist and we are very pleased
    with the processor.

    There is, however, one feature of the paper which, in my opinion,
    deserves stronger emphasis. PUFFT, and other processors of its
    class, are not only the province of "student jobs" and universities.
    Anyone who has access to PUFFT and does not use it for all debugging
    runs for which his program will fit in core is wasting
    computer time and money. Any installation running IBSYS/IBJOB
    which does not install PUFFT or something similar is, likewise,
    wasting large amounts of computer time.

    Almost every manager of a noncommercial installation knows
    that it is the 100 or more "short runs" per day which kill turnaround
    time. The long runs can be scheduled, but to provide frequent
    express runs for debugging, when each job takes over 30
    seconds, can be almost impossible if the number of jobs is large.
    Using PUFFT we are able to process "student jobs" in an average
    of around 5 seconds, and longer jobs in under 15 seconds. These
    are compared to typical times of 25 seconds and 90 seconds under
    IBJOB. In other words, people doing debugging in any installation
    should be able to expect 5 runs per day instead of one, for the same
    price they now pay, and with no increase in total machine time
    used.

    The Purdue group, and others which have also broken the 30
    second barrier, should be congratulated. Manufacturers and software
    suppliers should wake up to the facts of life about short
    jobs and should be required by the users to provide compatible,
    complete and highly efficient processors for debugging runs.

    ROBERT F. ROSIN
    Yale University
    New Haven, Connecticut DOI
          in [ACM] CACM 9(02) February 1966 view details
  • Desautels, Edouard J. "The PUFFT Time Sharing System -- Design, Implementation and Performance." PhD Purdue CS 1969 (Advisor: S. Rosen) view details External link: Citation Abstract: The PUFFT time sharing system operates on an IBM 7094, providing 28 simultaneous remote users at IBM 1052 or Teletype model 33 terminals with facilities for preparing, testing, debugging, and running short FORTRAN IV programs. User jobs may be time-sliced and the system supports a conversational FORTRAN capability.

    The system's external specifications are presented along with a detailed exposition of the internal specifications. In particular the resident control program is described in a high-level language. Techniques for measuring parameters that may affect system performance are described, and the measurements obtained using these techniques are given

          in [ACM] CACM 9(02) February 1966 view details
  • Cowan, D. D.; Graham, J. W. "Design characteristics of the WATFOR compiler" pp25-36 view details
          in SIGPLAN Notices 5(07) July 1970 view details
  • Stock, Karl F. "A listing of some programming languages and their users" in RZ-Informationen. Graz: Rechenzentrum Graz 1971 198 view details Abstract: 321 Programmiersprachen mit Angabe der Computer-Hersteller, auf deren Anlagen die entsprechenden Sprachen verwendet werden kennen. Register der 74 Computer-Firmen; Reihenfolge der Programmiersprachen nach der Anzahl der Herstellerfirmen, auf deren Anlagen die Sprache implementiert ist; Reihenfolge der Herstellerfirmen nach der Anzahl der verwendeten Programmiersprachen.

    [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 SIGPLAN Notices 5(07) July 1970 view details
  • Sammet, Jean E., "Roster of Programming Languages 1972" 230 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 491 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
  • "WATFOR's Silver Anniversary" WATCOM News 1991, Vol. 8, Issue 1. view details External link: online copy
          in Computers & Automation 21(6B), 30 Aug 1972 view details