Browse Prior Art Database

A Keynote Address on Concurrent Programming Disclosure Number: IPCOM000131394D
Original Publication Date: 1979-May-01
Included in the Prior Art Database: 2005-Nov-10
Document File: 12 page(s) / 42K

Publishing Venue

Software Patent Institute

Related People

Per Brinch Hansen: AUTHOR [+3]


_ University of Southern California ~

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 10% of the total text.

Page 1 of 12


This record contains textual material that is copyright ©; 1979 by the Institute of Electrical and Electronics Engineers, Inc. All rights reserved. Contact the IEEE Computer Society (714-821-8380) for copies of the complete work that was the source of this textual material and for all use beyond that as a record from the SPI Database.

A Keynote Address on Concurrent Programming*

Per Brinch Hansen

_ University of Southern California ~

  (Image Omitted: Delivered at COMPSAC 78, this address draws a parallel between the major development phases of the first 20 years of concurrent programming and the present challenge of distributed computing)

This keynote address summarizes the highlights of the first 20 years of concurrent programming (1960-80) and takes a look at the next 20 years (1980-2000~.

A concurrent program is one that enables a computer to do many things simultaneously. Concurrent programming is used to increase computer efficiency and to cope with environments in which many things need attention at the same time. Although there are good economic and conceptual reasons for being interested in concurrent programs there are major difficulties in making these pro. grams reliable.

The slightest programming mistake can make a concurrent program behave in an irreproducible, erratic manner that makes program testing impossible. The following describes how this problem was gradually solved by software engineers and computer scientists. This development is seen as an initial hardware challenge followed by a software crisis, a conceptual innovation, and language de. velopment which in turn led to formal understanding and hardware refinement. The paper draws a parallel between this evolution of ideas and the present challenge of distributed computing.


The development cycle When you look at concurrent programming on a time-scale of decades you will see that it went through several stages of development, each lasting about 5 years:

Hardware challenge (1955 - 60) Software crisis (1960 - 65) Conceptual innovation (1965 - 70) Language development (1970 - 75) Formal understanding (1975 - ) Hardware refinement (1980 - )

At the beginning of this period new hardware developments make concurrent programming both possible and essential. As programmers experiment with this new idea they are gradually led to the development of extremely complicated systems without much of a conceptual basis to rely on. Not too surprisingly these systems soon become so unreliable that the phrase "software crisis" is coined by their designers. By then the importance of the problem is recognized by computer scientists, who start a search for abstract concepts that will simplify the understanding of concurrent programs. Once the essence of the problem is understood a notation is invented for the basic concepts, and it now becomes possible to define them so precisely that they can...