SICE Curriculum Portal for Thomas Heffron
Contents

Home
UMKC Curriculum
   FS '96
      CS 101
   SS '01
      CS 201
   FS '01
      CS 191
      CS 281
   WS '02
      CS 291
      EN 304wi
   SS '02
      CS 352
      CS 481
   FS '02
      CS 431
      CS 441
   WS '03
      CS 423
      CS 451
SICE Survival Guide
Personal Experience

contact me @umkc:
tehqnf@umkc.edu

CS441 - Homework #3
 

Implementing Different Tasks on General-purpose Machines

1800 – 1850

No particular language

‘Jacquard Loom’ and Charles Babbage

These developers saw the need for separating the ‘description of the task’ from the machine that performed that task. By changing a small part (such as a card or gears) of the whole machine, the user could change the function of the machine.

Sources: 2 & 5


Conditional Control Transfer

1945

Machine Instructions

John von Neumann

While von Neumann’s architecture of shared data and instruction memory still remains in today’s hardware design, the concept of transfer control allowed for block-based coding and organization of code into reusable libraries.

Sources: 2 & 4


Language for Expressing Computations

1946

Plankalkül

Konrad Zuse

Zuse’s work is widely regarded as the first to create a more human expressive form of mathematical computations.

Sources: 3, 4 & 5


Pseudocodes and Compilers

circa 1950

Assembly languages

Grace Hopper, et al.

Pseudocodes were born out of the need to make machine code more readable. They allowed the programmers to use human language words to express a particular machine instruction. Of course, interpretation of these codes would slow the machine to unacceptable levels. Thus, reliable compilers were needed to create directly-executable machine code out of pseudocode.

Sources: 1 & 5


‘High-level’ Programming Languages

1957

FORTRAN/FORTRAN II

IBM Team lead by John Backus

Higher level languages - along with efficient translator/compilers - significantly reduce the overall cost of writing a program by increasing the speed of code development. FORTRAN II added the ability to handle subroutines. These have become the standard for all following languages.

Sources: 1, 3 & 5


Business Applications of Computing

1959

COBOL

DoD team lead by Grace Hopper

Although not appropriate for complex algorithms, COBOL was adopted by banks and corporations for its applications in record keeping and readability. It was the first to use record structures to organize data and separate the data definitions from program execution. Also, programming language developers now had a new source of funding – corporations.

Sources: 1, 3 & 5


Symbolic Computing and Functional Programming Paradigm

1959

LISP

John McCarthy

Designed to aid in programming for artificial intelligence, LISP significantly broke from the von Neumann architecture. It also was the first to introduce automatic garbage collection and originated the use of recursive function calls.

Sources: 1, 3 & 5


International Standardized Language Definition

1960

Algol60

International Committee

Just the existence of Algol60 actually could be considered this major development because of its influence on so many imperative languages that followed – Pascal, C, Modula-2, and Ada. It incorporated many of the best features of many other existing languages, and included new features.  These features include structured statements, recursion, type declarations, call-by-value, and a stack-based runtime environment. Also, it was the first syntax to be defined using BNF notation.

Sources: 1, 3, 4 & 5


So Many Languages – So Little Time…

Early-Mid 1960s

Various Languages

Various Developers

Although not necessarily a positive advancement in programming languages, the explosion of languages that appeared in the early 1960s – in my opinion – did have an effect on the development on programming languages. While some came about to pinpoint a special niche market, others, such as PL/I, were designed to be ‘THE ONE’ language that would combine the best features of all languages, but may have ended up incorporating too many features to be useful in one environment.

Sources: 3 & 5


Object-Oriented Languages

1967 (and into the 1970s)

Simula67

Nygaard and Dahl

Simula67 took data abstraction to new levels by introducing the concept of a class which included both data constructs and the methods to manipulate those data members in order to hide the complexity of the underlying data. Unfortunately, it took until the mid-to-late 1970s for OOP to truly catch on.

Sources: 3 & 5


Sorting Out the Details

1970s, 1980s, 1990s

Various Languages

Various Developers

In my opinion, 1970 marks the time when actual major developments in programming languages come to an end. Since then, there have been many new languages come about that have either incorporated more features in order to become an all-around, good choice in programming languages (i.e. – Ada, C++ & Smalltalk), or have stripped out extraneous language features in order to make it easier to understand the language set (i.e. – Pascal & Algol-W).

Other notable happenings include:
      -          The design of Pascal as a simple language useful for teaching programming.
      -          The popularity of C for its greater access to hardware and embedding in the UNIX O/S.
      -          The resurgence in popularity of functional programming languages (Scheme, Prolog & Common LISP)
      -          Incorporation of exception handling and concurrency into programming languages.
      -          Application of programming languages to the Internet and Virtual Machines (i.e. - Java)

Although the above selections are fine examples in programming languages, they do not rise to the level of major developments. They seem to fall into a cycle with ‘GP language with all features’ at one end and ‘Targeted languages that are less complex’ at the other. And, industry taste determines which language becomes popular at the time.

Sources: 3 & 5


Sources:

1. “A Brief History of Programming Languages.” Sep. 1995. http://www.byte.com/art/9509/se7/artl9.htm. (13 Sep. 2002).

2. Meyers, Jeremy. “A Short History of the Computer.” c.1993. http://www.softlord.com/comp/. (13 Sep. 2002).

3. Louden, Kenneth C. Programming Languages Principles and Practice. Boston: PWS Publishing Company, 1993.

4. Ferguson, Andrew. “The History of Programming Languages.” 3 Aug. 2000. http://www.princeton.edu/~ferguson/adw/programming_languages.shtml. (13 Sep. 2002).

5. Sebesta, Robert. Concepts of Programming Languages, Fourth Edition. Reading, Massachusetts: Addison Wesley, 1999.