Cornell University Programming Language

Last updated

Cornell University Programming Language (also called CUPL) is a procedural computer programming language developed at Cornell University in the late 1960s. [1]

Contents

CUPL was based on an earlier Cornell-developed programming language, CORC. It was used to teach introductory computer programming classes. [2]

CUPL was developed by Richard W. Conway, [3] W. L. Maxwell, G. Blomgren, Howard Elder, H. Morgan, C. Pottle, W. Riddle, and Robert Walker. CUPL had a very simple syntax similar to BASIC and to PL/I. The processor was designed to offer extensive error correction and diagnostic capabilities. This would allow student programs to execute even if they contained minor syntax errors. The compiler also included spelling correction capabilities so that if a variable name is referenced only once, the compiler would assume that it was a misspelling of some other intended name.

CUPL also offered an extensive set of matrix operations and offered dynamic run-time memory allocation. At the time, Cornell's computer was an IBM System/360 Model 40 batch processing system with only 64 KB of core memory. CUPL was able to process a large number of student programs quickly by remaining resident in core memory, but the compiler occupied 58 KB of memory, leaving only a small amount for the program code and variable storage. [1]

Derivative projects

Additional computer language projects grew out of CUPL. The CUPL compiler was reworked to implement a subset of the PL/I programming language, called PL/C. PL/C retained the diagnostic and error correction features of CUPL.

Audio CUPL was an implementation to accept verbal CUPL statements spoken by the programmer. Each programmer trained the system by first speaking a standard set of CUPL vocabulary words for reference. [4]

Retrocomputing implementation

There is an implementation of CUPL and CORC in modern C for Unix-like systems that includes both transcriptions of the original manuals and a chrestomathy of programs in these languages. It is available at the Retrocomputing Museum. [5]

Related Research Articles

Applesoft BASIC is a dialect of Microsoft BASIC, developed by Marc McDonald and Ric Weiland, supplied with the Apple II series of computers. It supersedes Integer BASIC and is the BASIC in ROM in all Apple II series computers after the original Apple II model. It is also referred to as FP BASIC because of the Apple DOS command used to invoke it, instead of INT for Integer BASIC.

Computer programming is the process of performing particular computations, usually by designing and building executable computer programs. 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.

In computing, a compiler is a computer program that translates computer code written in one programming language into another language. The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a low-level programming language to create an executable program.

<span class="mw-page-title-main">Computer program</span> Instructions to be executed by a computer

A computer program is a sequence or set of instructions in a programming language for a computer to execute. Computer programs are one component of software, which also includes documentation and other intangible components.

C is a general-purpose computer programming language. It was created in the 1970s by Dennis Ritchie, and remains very widely used and influential. By design, C's features cleanly reflect the capabilities of the targeted CPUs. It has found lasting use in operating systems, device drivers, protocol stacks, though decreasingly for application software. C is commonly used on computer architectures that range from the largest supercomputers to the smallest microcontrollers and embedded systems.

<span class="mw-page-title-main">Programming language</span> Language for communicating instructions to a machine

A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.

PL/I is a procedural, imperative computer programming language initially developed by IBM. The PL/1 ANSI standard, X3.53-1976, was published in 1976. It is designed for scientific, engineering, business and system programming. It has been in continuous use by academic, commercial and industrial organizations since it was introduced in the 1960s.

<span class="mw-page-title-main">Scheme (programming language)</span> Dialect of Lisp

Scheme is a dialect of the Lisp family of programming languages. Scheme was created during the 1970s at the MIT Computer Science and Artificial Intelligence Laboratory and released by its developers, Guy L. Steele and Gerald Jay Sussman, via a series of memos now known as the Lambda Papers. It was the first dialect of Lisp to choose lexical scope and the first to require implementations to perform tail-call optimization, giving stronger support for functional programming and associated techniques such as recursive algorithms. It was also one of the first programming languages to support first-class continuations. It had a significant influence on the effort that led to the development of Common Lisp.

Maclisp is a programming language, a dialect of the language Lisp. It originated at the Massachusetts Institute of Technology's (MIT) Project MAC in the late 1960s and was based on Lisp 1.5. Richard Greenblatt was the main developer of the original codebase for the PDP-6; Jon L. White was responsible for its later maintenance and development. The name Maclisp began being used in the early 1970s to distinguish it from other forks of PDP-6 Lisp, notably BBN Lisp.

CORC was a simple computer language developed at Cornell University in 1962 to serve lay users, namely for students to use to solve math problems. Its developers, industrial engineering professors Richard W. Conway and William L. Maxwell, sought to create a language which could both expose mathematics and engineering students to computing and remove the burden of mechanical problem-solving from their professors.

In computer science, imperative programming is a programming paradigm of software that uses statements that change a program's state. In much the same way that the imperative mood in natural languages expresses commands, an imperative program consists of commands for the computer to perform. Imperative programming focuses on describing how a program operates step by step, rather than on high-level descriptions of its expected results.

<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."

<span class="mw-page-title-main">Pointer (computer programming)</span> Object which stores memory addresses in a computer program

In computer science, a pointer is an object in many programming languages that stores a memory address. This can be that of another value located in computer memory, or in some cases, that of memory-mapped computer hardware. A pointer references a location in memory, and obtaining the value stored at that location is known as dereferencing the pointer. As an analogy, a page number in a book's index could be considered a pointer to the corresponding page; dereferencing such a pointer would be done by flipping to the page with the given page number and reading the text found on that page. The actual format and content of a pointer variable is dependent on the underlying computer architecture.

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.

A read–eval–print loop (REPL), also termed an interactive toplevel or language shell, is a simple interactive computer programming environment that takes single user inputs, executes them, and returns the result to the user; a program written in a REPL environment is executed piecewise. The term usually refers to programming interfaces similar to the classic Lisp machine interactive environment. Common examples include command-line shells and similar environments for programming languages, and the technique is very characteristic of scripting languages.

<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.

<span class="mw-page-title-main">Rexx</span> Command/scripting/programming language

Rexx is a programming language that can be interpreted or compiled. It was developed at IBM by Mike Cowlishaw. It is a structured, high-level programming language designed for ease of learning and reading. Proprietary and open source Rexx interpreters exist for a wide range of computing platforms; compilers exist for IBM mainframe computers.

<span class="mw-page-title-main">BASIC interpreter</span> Interpreter that enables users to enter and run programs in the BASIC language

A BASIC interpreter is an interpreter that enables users to enter and run programs in the BASIC language and was, for the first part of the microcomputer era, the default application that computers would launch. Users were expected to use the BASIC interpreter to type in programs or to load programs from storage.

Richard Walter Conway is an American industrial engineer and computer scientist who is the Emerson Electric Company Professor of Manufacturing Management, Emeritus in the Johnson Graduate School of Management at Cornell University. Conway has spent his entire academic career, both as a student and a professor, at Cornell and has held faculty positions at Cornell in several different areas: industrial engineering, operations research, computer science, and management science. He is especially known for his work and publications in foundational questions about computer simulation methodology; in writing about production scheduling theory; in developing computer languages and language compilers, including the widely used PL/C dialect of IBM's PL/I language; in authoring or co-authoring textbooks about computer programming; and in developing simulation software for manufacturing. He was also the first director of the Office of Computing Services at Cornell.

References

  1. 1 2 Conway, Richard W.; Maxwell, William L. (January 1968). CUPL—An approach to introductory computing instructions. Computer Science (Technical report). Cornell University. 68-4. Retrieved 2022-09-15.
  2. Ashlee Vance; Jeff Broido (November 18, 2008). "Teaching Everyone to Speak Big Blue". The New York Times . - I taught myself Cornell's own student language, CUPL
  3. David Gries (2015-07-31). "A Conversation with Richard W. Conway".
  4. Elder, Howard A. (July 1969). On the feasibility of voice input to an on-line computer processing system. Computer Science (Technical report). Cornell University. 69-38. Retrieved 2022-09-15.
  5. Retrocomputing Museum