WATFIV

Last updated

WATFIV, or WATerloo FORTRAN IV, developed at the University of Waterloo, Canada is an implementation of the Fortran computer programming language. It is the successor of WATFOR.

Contents

WATFIV was used from the late 1960s into the mid-1980s. WATFIV was in turn succeeded by later versions of WATFOR. Because it could complete the three usual steps ("compile-link-go") in just one pass, the system became popular for teaching students computer programming.

History

In the early 1960s, newly formed computer science departments started university programs to teach computer programming languages. The Fortran language had been developed at IBM, but suffered from slow and error-prone three-stage batch processing workflow. [1] In the first stage, the compiler started with source code and produced object code. In the second stage, a linker constructed a complete program using growing libraries of common functions. Finally, the program was repeatedly executed with data for the typical scientific and business problems of customers. Each step often included a new set of punched cards or tape. Students, on the other hand, had very different requirements. Their programs were generally short, but usually contained logic and syntax errors, resulting in time-consuming repetition of the steps and confusing "core dumps" (It often took a full day to submit and receive the successful or failed output from the computer operator). Once their programs worked correctly, they were turned in and not run again.

In 1961, the University of Wisconsin developed a technology called FORGO for the IBM 1620 which combined some of the steps. [2] Similar experiments were carried out at Purdue University on the IBM 7090 in a system called PUFFT. [3]

WATFOR 7040

In summer 1965, four undergraduate students of the University of Waterloo, Gus German, James G. Mitchell [4] [5] Richard Shirley and Robert Zarnke, led by Peter Shantz, developed a Fortran compiler for the IBM 7040 computer called WATFOR. Its objectives were fast compilation speed and effective error diagnostics at both compile and execution time. [1] It eliminates the need for a separate linking step and, as a result, FORTRAN programs which contain no syntax errors are placed into immediate execution. Professor J. Wesley Graham provided leadership throughout the project. [6]

This simple, one-step process allowed non-experienced programmers to learn programming with lower cost in time and computing resources. [7] To aid in debugging, the compiler uses an innovative approach to checking for undefined variables (an extremely common mistake by novice programmers). It uses a diagnostic feature of the 7040 that can deliberately set areas of memory to bad parity. When a program tries to reference variables that hadn't been set, the machine takes an interrupt (handled by the Watfor runtime routines) and the error is reported to the user as an undefined variable. This has the pleasant side effect of checking for undefined variables with essentially no CPU overhead.

WATFOR quickly gained popularity and over 75 institutions installed it on their IBM 7040 systems. The distribution of the compiler was handled by Sandra Bruce (née Hope).

WATFOR 360

In 1966, the University planned to replace the 7040 with an IBM System/360 computer, which was much faster but not software compatible. A team of full-time employees and undergraduate students was formed to write an IBM 360 version. [8] The project members, Betty Schmidt, Paul Dirksen, Paul H. Cress, Lothar K. "Ned" Kesselhut, Bill Kindree and Dereck Meek, were later joined by Mike Doyle, Rod Milne, Ron Hurdal and Lynn Williams, completed 360 WATFOR in the early part of 1967. Many other institutions (universities, colleges, businesses and governmental agencies) started using the WATFOR compiler to meet needs similar to those experienced at the University of Waterloo. The distribution of the software and customer support was carried on by Sandra Ward.

WATFIV

As a result of proposals from the SHARE user group Fortran committee and others, a new version called WATFIV was produced in 1968. WATFIV introduced new features such as CHARACTER variables and direct-access input-output. The Association for Computing Machinery presented Paul Cress and Paul Dirksen the Grace Murray Hopper Award for contributions to the WATFOR and WATFIV projects in 1972. [9] The WATFIV compiler was included in the DATAPRO Honour Roll for 1975 and 1976. People involved with maintenance and enhancement included Bernie Murphy, Martin Wiseman and Yvonne Johnson.

WATFIV was pronounced as "WHAT FIVE", but, as was realized at the time, could also (almost) still be pronounced as "WHAT FOR", as in WAT-F-IV (Waterloo Fortran IV).

Universities and corporations used these compilers and a number of other software products have been developed in the WATFOR tradition. For example, a version for the COBOL programming language is called WATBOL. [10] [11] [12] Daniel D. McCracken said "it is no exaggeration to suggest that WATFOR revolutionized the use of computers in education." [13] At one point, more than 3,000 mini and mainframe computer licenses and over 100,000 microcomputer licenses were held worldwide for this family of software products.

WATFOR-11, -S and -11S

In 1974, a compiler with characteristics similar to the IBM implementation was created for the Digital Equipment Corporation PDP-11 computer and called WATFOR-11. The team members, Jack Schueler, Jim Welch and Terry Wilkinson, were later joined by Ian McPhee who had added new control statements to the WATFIV compiler for structured programming (SP). These new statements included the block IF (later included in the ANSI X3.9-1978 language standard), WHILE, UNTIL, and others. WATFIV-S was announced in 1974 and a few months later, WATFOR-11S (the "S" indicating the new SP features) was also announced. The original SP features were later enhanced with additional statements by Bruce Hay in WATFIV-S in 1980 and by Jack Schueler in WATFOR-11S in 1981.

WATFOR-77

During the 1970s, the ANSI X3J3 subcommittee (the FORTRAN language standard group) developed a new language standard which was officially approved in April, 1978. This standard, designated FORTRAN 77, introduced many new statements into the language. In fact, the previous language standard FORTRAN 66 is a very small document and describes, what is in effect, a subset of most implementations of FORTRAN. For example, the WATFIV and WATFOR-11 implementations are based upon the IBM definition of FORTRAN-IV.

As programmers used the FORTRAN 77 features, a new compiler was required to combine the advantages of the WATFIV compiler with the new language standard. In January 1983, a project to develop a FORTRAN 77 compiler was started at Watcom Systems Inc. Under the leadership of Jack Schueler, Watcom employees and undergraduate students from the University of Waterloo's Co-operative Computer Science program became involved in the creation of the WATFOR-77 compiler. The major work was done by Geno Coschi, Fred Crigger, John Dahms, Jim Graham, Jack Schueler, Anthony Scian and Paul Van Oorschot. They were assisted by Rod Cremasco, John McCormick, David McKee and Brian Stecher. Many of the team members from former compiler projects provided input. These included Bruce Hay, Ian McPhee, Sandra Ward, Jim Welch and Terry Wilkinson.

Unlike previous compilers, a significant portion of WATFOR-77 was written in a portable systems language to ease the implementation of the compiler on other computer systems. Earlier WATFOR compilers were written entirely in machine-dependent assembly language.

Two components of the compiler are not portable. The code generator translates FORTRAN statements into native computer instructions and stores them in memory. The first version of WATFOR-77 generates instructions for the IBM 370 computer architecture. Most of the execution-time support (undefined variable checking, subscript evaluation, intrinsic functions) was written in assembly language for good performance. In September 1984, the first version was installed at the University of Waterloo for the Department of Computing Services. It was an implementation for IBM 370 computers running the VM/SP CMS operating system.

A few months earlier, in May 1984, a project started to implement the WATFOR-77 compiler on the IBM Personal Computer. This project included Geno Coschi, Fred Crigger, Tim Galvin, Athos Kasapi, Jack Schueler, Terry Skomorowski and Brian Stecher. In April 1985, this second version of WATFOR-77 was installed at the University of Waterloo for use by students of the Faculty of Engineering. The compiler can run on a 256K IBM Personal Computer using IBM PC DOS 2.0 and does not require special floating-point hardware.

In the fall of 1985, a Japanese version of WATFOR-77 was delivered to IBM Japan for the IBM JX Personal Computer. This version produces Japanese language error messages and supported the Kanji, Hiragana and Katakana character sets for variable names and character strings. To support the JX, the Language Reference manual and User's Guide were translated into Japanese. Another version of WATFOR-77 with the same features mentioned above was also developed for Japanese IBM PS/55 family of personal computers in Spring 1988.

During the summer of 1986, the IBM PC version of WATFOR-77 was adapted to run on the Unisys ICON which runs the QNX operating system. Since QNX is quite different from IBM PC DOS, parts of the run-time system were rewritten. This implementation of WATFOR-77 was made available in September 1986.

During the summer of 1985, a project was started to adapt WATFOR-77 to the Digital Equipment Corporation VAX computer series running the VMS operating system. The members of this project included Geno Coschi, Marc Ouellette, Jack Schueler and Terry Skomorowski. This implementation was made available in March 1987.

Also, in the spring of 1988, a new project was begun to develop an optimizing FORTRAN 77 compiler. This compiler uses the code generator from the Watcom C compiler, which produces superior machine code to other C compilers. The FORTRAN 77 optimizing compiler was first shipped in mid-1990.

In October 1990, the 25th anniversary of WATFOR was celebrated. [14] Many involved in the development of the WATFOR compilers were invited to the University of Waterloo for a reunion.

In spring 1992, a version of WATFOR-77 was adapted to the NEC PC-9801 family of personal computers. This version was similar to the IBM PS/55 version but modified to accommodate architectural differences. In January 1992, development of a 32-bit version of WATFOR-77 for Intel 80386 and Intel 80486 personal computers began. The first version was shipped in the fall of 1992.

As late as 1995, classes for programming in WATFIV were still being held at the University of Mississippi, led by Professor Charles H. (Chuckie) Franke.

See also

Related Research Articles

Computer programming is the process of performing a particular computation, usually by designing and building an executable computer program. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms. The source code of a program is written in one or more languages that are intelligible to programmers, rather than machine code, which is directly executed by the central processing unit. The purpose of programming is to find a sequence of instructions that will automate the performance of a task on a computer, often for solving a given problem. Proficient programming thus usually requires expertise in several different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.

<span class="mw-page-title-main">Fortran</span> General-purpose programming language

Fortran is a general-purpose, compiled imperative programming language that is especially suited to numeric computation and scientific computing.

PL/I is a procedural, imperative computer programming language developed and published by IBM. It is designed for scientific, engineering, business and system programming. It has been used by academic, commercial and industrial organizations since it was introduced in the 1960s, and is still used.

<span class="mw-page-title-main">UCSD Pascal</span> Programming language released in 1977

UCSD Pascal is a Pascal programming language system that runs on the UCSD p-System, a portable, highly machine-independent operating system. UCSD Pascal was first released in 1977. It was developed at the University of California, San Diego (UCSD).

MAD is a programming language and compiler for the IBM 704 and later the IBM 709, IBM 7090, IBM 7040, UNIVAC 1107, UNIVAC 1108, Philco 210-211, and eventually the IBM S/370 mainframe computers. Developed in 1959 at the University of Michigan by Bernard Galler, Bruce Arden and Robert M. Graham, MAD is a variant of the ALGOL language. It was widely used to teach programming at colleges and universities during the 1960s and played a minor role in the development of CTSS, Multics, and the Michigan Terminal System computer operating systems. The original version of the chatbot ELIZA was written in MAD-SLIP.

<span class="mw-page-title-main">IBM 7040</span> IBM mainframe computer

The IBM 7040 was a historic but short-lived model of transistor computer built in the 1960s.

Watcom International Corporation was a software company, which was founded in 1981 by Wes Graham and Ian McPhee. Founding staff were formerly members of Professor Graham's Computer Systems Group at the University of Waterloo, in Waterloo, Ontario, Canada. Watcom produced a variety of tools, including the well-known Watcom C/C++ compiler introduced in 1988.

<span class="mw-page-title-main">PL/C</span> Programming language developed at Cornell University

PL/C is an instructional dialect of the programming language PL/I, developed at the Department of Computer Science of Cornell University in the early 1970s in an effort headed by Professor Richard W. Conway and graduate student Thomas R. Wilcox. PL/C was developed with the specific goal of being used for teaching programming. The PL/C compiler, which implemented almost all of the large PL/I language, had the unusual capability of never failing to compile a program, through the use of extensive automatic correction of many syntax errors and by converting any remaining syntax errors to output statements. This was important because, at the time, students submitted their programs on IBM punch cards and might not get their output back for several hours. Over 250 other universities adopted PL/C; as one late-1970s textbook on PL/I noted, "PL/C ... the compiler for PL/I developed at Cornell University ... is widely used in teaching programming." Similarly, a mid-late-1970s survey of programming languages said that "PL/C is a widely used dialect of PL/I."

Paul H. Cress (1939–2004) was a Canadian computer scientist.

<span class="mw-page-title-main">IBM 7090/94 IBSYS</span> Early-to-mid 1960s operating system for the scientific line of IBM mainframes

IBSYS is the discontinued tape-based operating system that IBM supplied with its IBM 709, IBM 7090 and IBM 7094 computers. A similar operating system, also called IBSYS, was provided with IBM 7040 and IBM 7044 computers. IBSYS was based on FORTRAN Monitor System (FMS) and Bell Labs' "BESYS" rather than the SHARE Operating System. IBSYS directly supported several old language processors on the $EXECUTE card: 9PAC, FORTRAN and IBSFAP. Newer language processors ran under IBJOB.

The David R. Cheriton School of Computer Science is a professional school within the Faculty of Mathematics at the University of Waterloo. QS World University Rankings ranked the David R. Cheriton School of Computer Science 24th in the world, 10th in North America and 2nd in Canada in Computer Science in 2014. U.S. News & World Report ranked the David R. Cheriton School of Computer Science 42nd in world and second in Canada.

James George "Jim" Mitchell is a Canadian computer scientist. He has worked on programming language design and implementation, interactive programming systems, dynamic interpreting and compiling, document preparing systems, user interface design, distributed transactional file systems, and distributed, object-oriented operating systems. He has also worked on the design of hardware for computer graphics, high-level programming language execution, and audio input/output.

<span class="mw-page-title-main">History of compiler construction</span>

In computing, a compiler is a computer program that transforms source code written in a programming language or computer language, into another computer language. The most common reason for transforming source code is to create an executable program.

The J.W. Graham Medal in Computing and Innovation is an award given annually by the University of Waterloo and the University of Waterloo Faculty of Mathematics to "recognize the leadership and many innovative contributions made to the University of Waterloo, and to the Canadian computer industry." Recipients of this award receive a gold medal and certificate. Recipients are graduates of the University of Waterloo Faculty of Mathematics from business, education, or government.

<span class="mw-page-title-main">Wes Graham</span> Canadian computer scientist and professor

James Wesley Graham, OC was a Canadian professor of computer science at the University of Waterloo.

WATIAC was a virtual computer developed for teaching the principles of assembly language programming to undergraduates. WATIAC, and the WATMAP assembly language that ran on it were developed in 1973 by the newly founded Computer Systems Group, at the University of Waterloo, under the direction of Wes Graham.

WATBOL is a teaching compiler for the COBOL programming language developed in 1969 at the University of Waterloo. The compiler was a companion product, built under the design philosophy, of Waterloo’s earlier, widely used WATFOR teaching compiler. Since programs written by undergraduate students were unlikely to be run more than a few times, after they were successfully written and debugged, the efficiency of the program, once compiled was of secondary importance, compared with giving simpler, clearer error messages, and in simplifying the steps for the student to compile the program. At that time executing a program through the use of commercial compiler was a three-step process. First the Fortran, or COBOL, had to be compiled into assembly language, then the assembly language had to be assembled into binary code; finally the compiled and assembled code had to be linked with previously written libraries of subroutines. WATFOR and WATBOL allowed simple programs to be compiled, linked, and executed in a single step.

Dave Boswell is a Canadian computer scientist who was awarded the J.W. Graham Medal for his contributions to the field in 2003.

Ian McPhee is a Canadian computer scientist, entrepreneur, and philanthropist. He earned a Bachelor of Mathematics in 1973, and his Masters of Mathematics in 1979.

Terry Stepien is a Canadian computer scientist, and protege of Wes Graham, an influential professor of Computer Science at Stepien's alma mater, the University of Waterloo. Stepien earned a Bachelor of Mathematics in 1981, and his Masters in 1988.

References

  1. 1 2 Donald D. Cowan; J. Wesley Graham (July 1970). "Design characteristics of the WATFOR compiler". ACM SIGPLAN Notices: Proceedings of a Symposium on Compiler Optimization. Association for Computing Machinery. 5 (7): 41–44. doi: 10.1145/390013.808481 .
  2. Clarence B. Germain (1965). Programming the IBM 1620 (2nd ed.). Prentice-Hall. p. 62.
  3. Saul Rosen; Robert A. Spurgeon; Joel K. Donnelly (November 1965). "PUFFT—The Purdue University fast FORTRAN translator". Communications of the ACM. Association for Computing Machinery. 8 (11): 661–666. doi: 10.1145/365660.365671 . S2CID   1822147.
  4. "Java: Where You Want to *Be* Tomorrow: Dr. Jim Mitchell, 1997 Recipient of the J.W. Graham Medal in Computing and Innovation". University of Waterloo, Canada. May 30, 1997. Retrieved April 1, 2011.
  5. "James Mitchell". The People at Oracle Labs. Oracle Corporation. Retrieved April 1, 2011.
  6. Chris Redmond (September 8, 1999). "UW computing pioneer mourned". UW Gazette. University of Waterloo . Retrieved April 3, 2011.
  7. P. C. Brillinger; D. D. Cowan (November 1970). "A complete package for introducing computer science". Association for Computing Machinery SIGCSE Bulletin. pp. 118–126. Retrieved 2012-12-18.
  8. Harold Alkema & Kenneth McLaughlin (2007). "Unbundling Computing at The University of Waterloo". University of Waterloo. Retrieved April 5, 2011.
  9. "1972 – Paul H. Cress". Grace Murray Hopper Award. Association for Computing Machinery. Archived from the original on May 4, 2012. Retrieved April 5, 2011.
  10. R. J. Hurdal; W.R. Milne; C.R. Zarnke (1972). "WATBOL". University of Waterloo. Retrieved April 5, 2011.
  11. "Chronology - 1970s: The Evolution of The University of Waterloo Continues -- 1972". University of Waterloo . Retrieved 2012-12-17. In 1969 and 1970, the WATBOL compiler was completed. The WATBOL compiler for the COBOL programming language had speed and error diagnostics similar to the WATFOR compilers for FORTRAN.
  12. Christopher Brown-Syed (2011). Parents of Invention: The Development of Library Automation Systems in the Late 20th Century: The Development of Library Automation Systems in the Late 20th Century. ABC-CLIO. p. 10. ISBN   9781591587910 . Retrieved 2012-12-17. During the 1970s, the University of Waterloo, located in southern Ontario, Canada, was almost as synonymous with computing as MIT or Berkeley. It had developed extensions to the popular general-purpose Fortran programming language called WATFOR and WATFIV and its own version of the equally popular business computing language COBOL, called WATBOL.
  13. Daniel D. McCracken (1972). A guide to Fortran IV programming. Wiley. p. 253. ISBN   978-0-471-58281-6.
  14. "WATFOR's Silver Anniversary". WATCOM News volume 8 number 1. 1991. Archived from the original on July 21, 2012. Retrieved April 1, 2011.

Further reading