Programming Languages (CSC-302 98S)
Outline of Class 2: History
Held: Wednesday, January 21, 1998
- Apologies for the room confusion on Monday. I had forgotten that I'd
moved the room.
- If you haven't filled out the
survey, please do so ASAP.
- One of you who seems to like Kazantakis (sp?) and Miller neglected
to fill in your name.
- My responses to the
early surveys are now available.
- For Friday, please read chapter 4 in Louden. Yes, the readings will
decrease in the future.
- assignment one is now
- One odd or interesting aspect of computing is that many of us
significantly misdate concepts, considering some new concepts old,
and some new concepts new.
- We'll spend a little time seeing when we think particular ideas
were developed. Note that I don't know all of the answers / dates.
- Computational devices
- The general-purpose computer
- Punch cards
- The programming language
- The first implemented programming language
- Paradigms (paradigm used; language implemented)
- Imperative programming
- Functional programming
- Object-oriented programming
- Logic programming
- Parallel programming
- Design Issues
- Garbage collection (automatic memory management)
- Symbolic processing
- GUI languages
- Surprisingly (or perhaps not so surprisingly), there were a number of
pre-computer ways to express computation. These include,
- algorithms in mathematics (yes, mathematicians did need to be
able to specify computation)
- the lambda calculus (a formal system for describing functions),
- Turing machines (weird objects designed to mimic computation),
- Lady Ada Lovelace's language for programming the (nonexistent)
- Konrad Zuse developed a language he called the Plankalkul in 1945.
While it was an interesting "high-level" language, it was never implemented.
- Early computers had to be programmed in binary (ugh) or as patch
diagrams (more ugh).
- However, many early computers soon included assembly languages and
- Some also included expression interpreters.
- FORTRAN (for FORmula TRANslator) was the first high level language
implemented. The team that designed and built FORTRAN was led by
John Backus. Fortran was released in 1957, but design began much
earlier (1954). A key goal of Fortran was efficiency, although
portability was also a key issue.
- LISP (LISt Processing) was designed for symbolic processing. It
was built by John McCarthy at MIT in 1958. LISP introduced symbolic
computation and automatic memory management to the programming
- ALGOL-60 (ALGOrithmic Language) was designed by computer scientists
(or those precursors to computer scientist) primarily intended to
provide a mechanism for expressing algorithms uniformly. The first
report on Algol was issued in 1958, with the specs being revised in 1959 and
1960 (and, later in 1968).
- Algol is a primary ancestor of Pascal and C.
- It introduced block structure, compound statements, recursive procedure
calls, nested if,loops, and arbitrary length identifiers.
- COBOL (Common Business-Oriented Language) was designed around 1960 for
business applications, with a team led by (I think) Grace Murray Hopper.
It is still used today, in primarily the same form. One goal of COBOL's
design was for ti to be readable by managers, so the syntax had very much
of an English-like flavor.
- While many computer scientists are taught that "Cobol is bad", note
that Cobol introduced sophisticated records and had a very rich
- Note also that many modern scripting languages, like Hypertalk and
Lingo, strive for the same "English-like" flavor that Cobol is
criticized for having.
- BASIC (Beginner's All-purpose Symbolic Instruction Code) was created
by some professors at Dartmouth. It was one of the first languages
designed for use on a time-sharing system, and one of the first
designed for beginners.
- By this point, there were four core languages (Cobol, Fortran,
Algol, Lisp) that represented two different
paradigms (imperative, functional).
IBM put them all together in PL/I and then extended the language further.
- PL/I introduced concurrency and exceptions.
- PL/I introduced the need for language wizards who understood the
full manual set.
- PL/I illustrated the problems with incorporating too much.
- Simula/67 was designed to simplify simulations. It introduced objects.
- Algol-68 and Algol-W were successors to Algol. Algol-68 was supposed
to be Algol-64 (I think) but the report took four years to write.
Algol-W was an offshoot designed by members of the committee dissatisfied
with the complexity and time for creating the report.
- A number of important languages were designed and implemented in the
- Pascal in 1971, intended as a teaching language based on Algol.
- C in 1972, intended as a lower-level language to support more portable
operating system design.
- Backus described FP, his functional programming language, in 1977.
- Prolog was designed and implemented in the early 1970's.
- ML was designed in the late 1970's.
- Smalltalk was designed in the late 1970's as a more visual beginner's
language and environment.
- The 1980's and 1990's gave rise to successor languages that extended
these base languages, but did not clearly provide new paradigms or
- ADA in 1980.
- C++ in mid 1980's
- Java in early 1990's