Cornell University Programming Language: Difference between revisions

Content deleted Content added
m Added link to CORC
m top: To cite web add author1-link=Ashlee Vance
 
(23 intermediate revisions by 14 users not shown)
Line 1:
'''Cornell University Programming Language''' (also called '''CUPL''') is a procedural computer
programming language developed at [[Cornell University]] in the late 1960s.<ref name="CUPLonwayMaxwell">{{cite tech report
|last1=Conway
|first1=Richard W.
|authorlink1=Richard W. Conway
|last2=Maxwell
|first2=William L.
|title=CUPL—An approach to introductory computing instructions
|number=68-4
|department=Computer Science
|institution=[[Cornell University]]
|date=January 1968
|url=https://ecommons.cornell.edu/handle/1813/5881
|accessdate=2022-09-15}}</ref>
 
CUPL was based on an earlier Cornell-developed programming language, [[CORC]].
It was used to teach introductory computer programming classes.<ref>{{cite news |newspaper=[[The New York Times]]
|url=https://bits.blogs.nytimes.com/2008/11/18/teaching-everyone-to-speak-big-blue
|title=Teaching Everyone to Speak Big Blue
|quote=- I taught myself Cornell's own student language, CUPL
|author1=Ashlee Vance |author1-link=Ashlee Vance |author2=Jeff Broido |date=November 18, 2008}}</ref>
 
CUPL was developed by [[Richard W. Conway]],<ref name=CUPL.Conway>{{cite web
CUPL was developed by R. W. Conway, 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.
|url=https://ecommons.cornell.edu/handle/1813/40564?show=full
|title=A Conversation with Richard W. Conway
|author=[[David Gries]]
|date=2015-07-31}}</ref> 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 operationsoperation]]s 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 64K64&nbsp;KB of [[core memory]]. CUPL was able to process a large batchnumber of student programs quickly by remaining resident in core memory, but the compiler occupied 58K58&nbsp;KB of memory, leaving only a small amount for the program code and variable storage.<ref>{{cite web|urlname=http://test-dspace.library.cornell.edu/handle/1813/5881|title=CUPL"CUPLonwayMaxwell" - An Approach to Introductory Computing Instruction|date=January 1968|publisher=Computer Science Technical Reports (68-4)|accessdate=2010-09-30}} at p. 19</ref>
 
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 with only 64K of core memory. CUPL was able to process a large batch of student programs quickly by remaining resident in core memory, but the compiler occupied 58K of memory, leaving only a small amount for the program code and variable storage.<ref>{{cite web|url=http://test-dspace.library.cornell.edu/handle/1813/5881|title=CUPL - An Approach to Introductory Computing Instruction|date=January 1968|publisher=Computer Science Technical Reports (68-4)|accessdate=2010-09-30}} at p. 19</ref>
==Derivative projects==
Additional computer language projects grew out of CUPL. Most notably, theThe 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.<ref name="HowardElder">{{cite webtech report
|urllast1=http://hdlElder
|first1=Howard A.handle.net/1813/5896
|title=On the Feasibilityfeasibility of Voicevoice Inputinput to an Onon-Lineline Computercomputer Processingprocessing Systemsystem
|datenumber=July 196969-38
|publisherdepartment=Computer Science Technical Reports (69-38)|accessdate=2010-09-30}}</ref>
|institution=[[Cornell University]]
|date=July 1969
|url=https://ecommons.cornell.edu/handle/1813/5896
|accessdate=2022-09-15}}</ref>
 
==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.<ref>[http://www.catb.org/retro/ Retrocomputing Museum]</ref>
 
==References==
<references/>
 
==External links==
*[http://www.catb.org/~esr/cupl/ Resource page for cupl 1.6], providing binary and source code and background information about CUPL and CORC.
*{{cite web|url=http://hdl.handle.net/1813/5881|title=CUPL - An Approach to Introductory Computing Instruction|date=January 1968|publisher=Computer Science Technical Reports (68-4)|accessdate=2010-09-30}}
 
[[Category:Educational programming languages]]
[[Category:Structured programming languages]]
[[Category:Procedural programming languages]]
[[Category:PL/I programming language family]]
[[Category:Programming languages created in the 1960s]]
 
 
{{compu-lang-stub}}