Per Brinch Hansen (13 November 1938 – 31 July 2007) was a
Danish
Danish may refer to:
* Something of, from, or related to the country of Denmark
People
* A national or citizen of Denmark, also called a "Dane," see Demographics of Denmark
* Culture of Denmark
* Danish people or Danes, people with a Danish a ...
-
American
American(s) may refer to:
* American, something of, from, or related to the United States of America, commonly known as the "United States" or "America"
** Americans, citizens and nationals of the United States of America
** American ancestry, pe ...
computer scientist known for his work in
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also i ...
s,
concurrent
Concurrent means happening at the same time. Concurrency, concurrent, or concurrence may refer to:
Law
* Concurrence, in jurisprudence, the need to prove both ''actus reus'' and ''mens rea''
* Concurring opinion (also called a "concurrence"), a ...
programming and
parallel
Parallel is a geometric term of location which may refer to:
Computing
* Parallel algorithm
* Parallel computing
* Parallel metaheuristic
* Parallel (software), a UNIX utility for running programs in parallel
* Parallel Sysplex, a cluster of ...
and
distributed computing
A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
.
Biography
Early life and education
![Per Brinch Hansen - 1959](https://upload.wikimedia.org/wikipedia/commons/f/f5/Per_Brinch_Hansen_-_1959.jpg)
Per Brinch Hansen was born in
Frederiksberg
Frederiksberg () is a part of the Capital Region of Denmark. It is formally an independent municipality, Frederiksberg Municipality, separate from Copenhagen Municipality, but both are a part of the City of Copenhagen. It occupies an area of ...
, an enclave surrounded by
Copenhagen
Copenhagen ( or .; da, København ) is the capital and most populous city of Denmark, with a proper population of around 815.000 in the last quarter of 2022; and some 1.370,000 in the urban area; and the wider Copenhagen metropolitan ar ...
,
Denmark
)
, song = ( en, "King Christian stood by the lofty mast")
, song_type = National and royal anthem
, image_map = EU-Denmark.svg
, map_caption =
, subdivision_type = Sovereign state
, subdivision_name = Kingdom of Denmark
, establish ...
. His father,
Jørgen Brinch Hansen, worked as a civil engineer, becoming a leading expert in soil mechanics, and later accepting a professorship at
Technical University of Denmark
The Technical University of Denmark ( da, Danmarks Tekniske Universitet), often simply referred to as DTU, is a polytechnic university and school of engineering. It was founded in 1829 at the initiative of Hans Christian Ørsted as Denmark's fir ...
. His mother, Elsebeth Brinch Hansen (née Ring), was the daughter of Danish composer
Oluf Ring
Oluf Ring (24 December 1884 – 26 April 1946) was a Danish composer.
See also
*List of Danish composers
A list of notable Danish composers:
__NOTOC__
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A
*Thorva ...
and worked as a hairdresser before marrying.
Brinch Hansen attended
Skt. Jørgens Gymnasium and then studied electrical engineering at Technical University of Denmark where he sought an area to pursue that "was still in its pioneering phase" on the belief that "If a subject was being taught, it was probably already too late to make fundamental contributions."
After a seven-week student internship at
IBM's Hursley Laboratory in England, he decided to dedicate his career to computers. Initially focused on computer construction, reading a book on the
IBM 7030 Stretch
The IBM 7030, also known as Stretch, was IBM's first transistorized supercomputer. It was the fastest computer in the world from 1961 until the first CDC 6600 became operational in 1964."Designed by Seymour Cray, the CDC 6600 was almost three t ...
project that described computer organization from a programmer's point of view refocused his interest toward becoming a computer architect.
Regnecentralen
![Per Brinch Hansen - 1967](https://upload.wikimedia.org/wikipedia/commons/b/b8/Per_Brinch_Hansen_-_1967.jpg)
After completing a
Master of Science
A Master of Science ( la, Magisterii Scientiae; abbreviated MS, M.S., MSc, M.Sc., SM, S.M., ScM or Sc.M.) is a master's degree in the field of science awarded by universities in many countries or a person holding such a degree. In contrast t ...
degree in
electronic engineering
Electronics engineering is a sub-discipline of electrical engineering which emerged in the early 20th century and is distinguished by the additional use of active components such as semiconductor devices to amplify and control electric current ...
in 1963, Brinch Hansen landed a job at
Regnecentralen
Regnecentralen (RC) was the first Danish computer company, founded on October 12, 1955. Through the 1950s and 1960s, they designed a series of computers, originally for their own use, and later to be sold commercially. Descendants of these syste ...
, then a research institution under The Danish Academy of Technical Sciences (Akademiet for de Tekniske Videnskaber), working in the compiler group, led by
Peter Naur
Peter Naur (25 October 1928 – 3 January 2016) was a Danish computer science pioneer and Turing award winner. He is best remembered as a contributor, with John Backus, to the Backus–Naur form (BNF) notation used in describing the syntax for m ...
and
Jørn Jensen
Jørn Jensen (1925 – 2007) was one of the earliest Danish computer programmers. Examined as a mechanical engineer, he had worked with electromechanical construction. In 1958, he was employed at the Danish Regnecentralen (RC), and very soon exh ...
.
There, his first significant project was writing a
parser
Parsing, syntax analysis, or syntactic analysis is the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar. The term ''parsing'' comes from Lat ...
for a
COBOL compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
for the
Siemens 3003 computer.
Subsequently, he wrote a
file system to be used during
execution
Capital punishment, also known as the death penalty, is the state-sanctioned practice of deliberately killing a person as a punishment for an actual or supposed crime, usually following an authorized, rule-governed process to conclude that ...
of the compiled COBOL programs, later observing:
In 1966, Brinch Hansen moved to Henning Isaksson's hardware group at Regnecentralen, by then a company with shareholders. Together with Peter Kraft, he defined the
computer architecture
In computer engineering, computer architecture is a description of the structure of a computer system made from component parts. It can sometimes be a high-level description that ignores details of the implementation. At a more detailed level, the ...
and
instruction set for Regnecentralen's third computer, the RC 4000, using
ALGOL 60 as a
hardware description language
In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic circuits, and most commonly, digital logic circuits.
A hardware description language en ...
to produce a
formal specification
In computer science, formal specifications are mathematically based techniques whose purpose are to help with the implementation of systems and software. They are used to describe a system, to analyze its behavior, and to aid in its design by verif ...
.
Inexperienced with
multiprogramming
In computing, multitasking is the concurrent execution of multiple tasks (also known as processes) over a certain period of time. New tasks can interrupt already started ones before they finish, instead of waiting for them to end. As a result ...
, he used a copy of ''
Cooperating Sequential Processes''
Edsger Dijkstra
Edsger Wybe Dijkstra ( ; ; 11 May 1930 – 6 August 2002) was a Dutch computer scientist, programmer, software engineer, systems scientist, and science essayist. He received the 1972 Turing Award for fundamental contributions to developing progra ...
had sent him to understand
process synchronization using
semaphores, and then implemented a specialized RC 4000
real-time
Real-time or real time describes various operations in computing or other processes that must guarantee response times within a specified time (deadline), usually a relatively short time. A real-time process is generally one that happens in defined ...
monitor
Monitor or monitor may refer to:
Places
* Monitor, Alberta
* Monitor, Indiana, town in the United States
* Monitor, Kentucky
* Monitor, Oregon, unincorporated community in the United States
* Monitor, Washington
* Monitor, Logan County, West ...
for use in managing a fertilizer plant. Peter Kraft and
Charles Simonyi
Charles Simonyi (; hu, Simonyi Károly, ; born September 10, 1948) is a Hungarian-American software architect. He started and led Microsoft's applications group, where he built the first versions of Microsoft Office.
He co-founded and led Int ...
, who was still a teenager, wrote a
p-code
Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software Interpreter (computing), interpreter. Unlike Human-readable code, human-readable source code, bytecodes are compact nume ...
interpreter and data logging task programs that were compiled to p-code.
In the summer of 1967, Brinch Hansen left Regnecentralen's hardware group to become head of RC 4000
software development, where he led a team including Jørn Jensen, Peter Kraft and Søren Lauesen in defining a general-purpose
RC 4000 multiprogramming system
The RC 4000 Multiprogramming System (also termed Monitor or RC 4000 depending on reference) is a discontinued operating system developed for the RC 4000 minicomputer in 1969. For clarity, this article mostly uses the term Monitor.
Over ...
, with a goal to avoid developing a custom
real-time control operating system for every RC 4000 installation, and to support
batch processing
Computerized batch processing is a method of running software programs called jobs in batches automatically. While users are required to submit the jobs, no other interaction by the user is required to process the batch. Batches may automatically ...
and
time-sharing
In computing, time-sharing is the sharing of a computing resource among many users at the same time by means of multiprogramming and multi-tasking.DEC Timesharing (1965), by Peter Clark, The DEC Professional, Volume 1, Number 1
Its emergence ...
as well.
The resulting system was not a complete operating system, but a small
kernel
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine learn ...
providing the mechanisms upon which operating systems for different purposes could be built. By the spring of 1969, a well-documented, reliable version of the RC 4000 multiprogramming system was running.
Carnegie Mellon University
In late 1970, Brinch Hansen moved to
Pittsburgh
Pittsburgh ( ) is a city in the Commonwealth of Pennsylvania, United States, and the county seat of Allegheny County. It is the most populous city in both Allegheny County and Western Pennsylvania, the second-most populous city in Pennsylva ...
, accepting an invitation from
Alan Perlis
Alan Jay Perlis (April 1, 1922 – February 7, 1990) was an American computer scientist and professor at Purdue University, Carnegie Mellon University and Yale University. He is best known for his pioneering work in programming languages and was t ...
to visit the department of
computer science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (includi ...
at
Carnegie Mellon University as a research associate, while he wrote the first systematic textbook on operating system principles.
During this time, at the 1971
Summer School in Marktoberdorf and a symposium in
Belfast
Belfast ( , ; from ga, Béal Feirste , meaning 'mouth of the sand-bank ford') is the capital and largest city of Northern Ireland, standing on the banks of the River Lagan on the east coast. It is the 12th-largest city in the United Kingdom ...
, Brinch Hansen,
Tony Hoare
Sir Charles Antony Richard Hoare (Tony Hoare or C. A. R. Hoare) (born 11 January 1934) is a British computer scientist who has made foundational contributions to programming languages, algorithms, operating systems, formal verification, and ...
and Dijkstra began to discuss ideas that evolved into the
monitor
Monitor or monitor may refer to:
Places
* Monitor, Alberta
* Monitor, Indiana, town in the United States
* Monitor, Kentucky
* Monitor, Oregon, unincorporated community in the United States
* Monitor, Washington
* Monitor, Logan County, West ...
concept. In the spring of 1972, after reading about the
class
Class or The Class may refer to:
Common uses not otherwise categorized
* Class (biology), a taxonomic rank
* Class (knowledge representation), a collection of individuals or objects
* Class (philosophy), an analytical concept used differentl ...
concept invented by
Ole-Johan Dahl
Ole-Johan Dahl (12 October 1931 – 29 June 2002) was a Norwegian computer scientist. Dahl was a professor of computer science at the University of Oslo and is considered to be one of the fathers of Simula and object-oriented programming along w ...
and
Kristen Nygaard
Kristen Nygaard (27 August 1926 – 10 August 2002) was a Norwegian computer scientist, programming language pioneer, and politician. Internationally, Nygaard is acknowledged as the co-inventor of object-oriented programming and the programming ...
for
Simula 67, Brinch Hansen completed his text with a chapter on resource protection that proposed the first monitor notation, using shared classes.
In 1973, ''Operating System Principles'' was published, becoming the first comprehensive textbook on operating systems.
California Institute of Technology
![Per Brinch Hansen - 1975](https://upload.wikimedia.org/wikipedia/commons/2/2c/Per_Brinch_Hansen_-_1975.jpg)
In July 1972, Brinch Hansen joined the faculty of the
California Institute of Technology
The California Institute of Technology (branded as Caltech or CIT)The university itself only spells its short form as "Caltech"; the institution considers other spellings such a"Cal Tech" and "CalTech" incorrect. The institute is also occasional ...
(Caltech) as an Associate Professor of computer science, where he began work on defining a
programming language
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.
The description of a programming ...
with concurrent processes and monitors. In April 1974, he distributed a technical report on
Concurrent Pascal
Concurrent Pascal is a programming language designed by Per Brinch Hansen for writing concurrent computing programs such as operating systems and real-time computing monitoring systems on shared memory computers.
A separate language, ''Sequenti ...
.
A Concurrent Pascal
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
for the
PDP 11/45, written by Brinch Hansen's doctoral student, Al Hartmann, was released in January 1975. Subsequently, Brinch Hansen began writing model operating systems in Concurrent Pascal, to evaluate the language. In May 1975, he completed Solo, a single-user operating system for development of Concurrent Pascal programs. Next, he rewrote the original RC 4000 real-time scheduler in Concurrent Pascal, taking three days to write it, and three hours of machine time to systematically test it.
When the Caltech computer science department shifted focus toward computer engineering and away from programming Brinch Hansen decided to leave, rather than to seek tenure there.
University of Southern California
In 1976, Brinch Hansen chose
University of Southern California
, mottoeng = "Let whoever earns the palm bear it"
, religious_affiliation = Nonsectarian—historically Methodist
, established =
, accreditation = WSCUC
, type = Private research university
, academic_affiliations =
, endowment = $8.1 ...
(USC) for his next post, so that his family could remain in their
Altadena
Altadena () ("Alta", Spanish for "Upper", and "dena" from Pasadena) is an unincorporated area and census-designated place in the Verdugo Mountains region of Los Angeles County, California, approximately 14 miles (23 km) from the downtown ...
home. Joining the faculty as a tenured full professor, and first chair of a newly created computer science department, he led efforts to identify and attract top-notch faculty to build a first rate department. By 1980, USC's computer science department was ranked by the
National Research Council National Research Council may refer to:
* National Research Council (Canada), sponsoring research and development
* National Research Council (Italy), scientific and technological research, Rome
* National Research Council (United States), part of ...
as one of the top ten in the US.
While at USC, Brinch Hansen wrote his second book, ''The Architecture of Concurrent Programs,'' based on his work developing operating systems with Concurrent Pascal.
Published in 1977, it was the first book on concurrent programming.
In 1978, Brinch Hansen became the first computer scientist awarded the Doctor Technices degree, the highest academic distinction within engineering and technological science in Denmark, for the work documented in ''The Architecture of Concurrent Programs''. Later in 1978, Brinch Hansen published the Distributed Processes language concept, proposing the use of
remote procedure call
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure ( subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it were a normal ( ...
s to synchronize processes running across a microcomputer network.
Also in 1978, L. J. Sevins and Steve Goings from
Mostek
Mostek was a semiconductor integrated circuit manufacturer, founded in 1969 by L. J. Sevin, Louay E. Sharif, Richard L. Petritz and other ex-employees of Texas Instruments. At its peak in the late 1970s, Mostek held an 85% market share of the d ...
visited Brinch Hansen at USC, where he outlined a low-cost
multiprocessor
Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor or the ability to allocate tasks between them. There ar ...
architecture. Mostek began a project to implement such a multiprocessor, with Brinch Hansen working as a consultant.
Brinch Hansen developed a new concurrent programming language, Edison, for the project. As with the RC 4000 project, Edison was also used as a formal specification language for the hardware. Mostek got an initial 4-node multiprocessor working and Brinch Hansen wrote a portable Edison compiler on a PDP 11/55, but shortly after,
United Technologies
United Technologies Corporation (UTC) was an American multinational conglomerate headquartered in Farmington, Connecticut. It researched, developed, and manufactured products in numerous areas, including aircraft engines, aerospace systems, ...
acquired Mostek and cancelled the project. In 1982, Brinch Hansen moved the Edison system to an
IBM Personal Computer
The IBM Personal Computer (model 5150, commonly known as the IBM PC) is the first microcomputer released in the IBM PC model line and the basis for the IBM PC compatible de facto standard. Released on August 12, 1981, it was created by a team ...
(PC), and then published his third book, ''Programming a Personal Computer''.
In 1982, Brinch Hansen was named the first Henry Salvatori Professor of Computer Science at USC.
University of Copenhagen
In 1984, feeling homesick for Denmark after 14 years abroad, Brinch Hansen left USC and joined the faculty of the
University of Copenhagen
The University of Copenhagen ( da, Københavns Universitet, KU) is a prestigious public research university in Copenhagen, Denmark. Founded in 1479, the University of Copenhagen is the second-oldest university in Scandinavia after Uppsala Unive ...
as a Professor of
datalogy.
In 1985, he was elected a Fellow of the
Institute of Electrical and Electronics Engineers (IEEE).
Later in 1985, his fourth book ''Brinch Hansen on
Pascal Compilers'', which he used for his own compiler course, was published.
While designing a
multicomputer
Parallel computing is a type of computation in which many calculations or processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. There are several different fo ...
operating system for Danish company GN Elmi, Brinch Hansen concluded he needed a new language, this time leveraging the message passing paradigm of Hoare's
CSP.
The resulting language,
Joyce, removed a major limitation of CSP by introducing parallel
recursion
Recursion (adjective: ''recursive'') occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathemati ...
.
Brinch Hansen developed a portable implementation on an IBM PC.
Syracuse University
![Per Brinch Hansen - 1990](https://upload.wikimedia.org/wikipedia/commons/2/27/Per_Brinch_Hansen_-_1990.jpg)
After finding that neither he nor his family felt at home in Denmark, Brinch Hansen decided to return to the US, but discovered that their immigration status required them to do so very quickly. Brinch Hansen contacted
John Reynolds at
Syracuse University and in 1987 he joined the faculty as a Distinguished Professor.
Working with his student Rangachari Anand, Joyce was moved to an
Encore Multimax 320 multiprocessor at SU's Northeast Parallel Architectures Center. Recognizing the scaling limitations of multiprocessors, however, Brinch Hansen sought a suitable multicomputer for further work. Acquiring a
Meiko Computing Surface
Meiko Scientific Ltd. was a British supercomputer company based in Bristol, founded by members of the design team working on the Inmos transputer microprocessor.
History
In 1985, when Inmos management suggested the release of the transputer be ...
in 1989, he began experimenting with scientific applications by developing parallel programs for
Householder's method
In mathematics, and more specifically in numerical analysis, Householder's methods are a class of root-finding algorithms that are used for functions of one real variable with continuous derivatives up to some order . Each of these methods is chara ...
(reduction) and then
n-body simulation
In physics and astronomy, an ''N''-body simulation is a simulation of a dynamical system of particles, usually under the influence of physical forces, such as gravity (see n-body problem, ''n''-body problem for other applications). ''N''-body ...
as learning exercises, and was surprised to find that both programs had nearly identical control structures. Concluding that both fit an "all-pairs paradigm," he then focused on exploring reusable parallel algorithm structures he termed "programming paradigms" or "generic programs" (later, popularly known as "
design patterns").
In 1995, Brinch Hansen's fifth book, ''Studies in Computational Science: Parallel Programming Paradigms'' was published, with programs rewritten in
SuperPascal, a fully implemented publication language he created for parallel algorithms.
Last years
In his later years, Brinch Hansen published a retrospective of his most important papers, ''The Search for Simplicity'' (1996),
a text for a course in programming for non-majors, ''Programming for Everyone in Java'' (1999), a retrospective on the evolution of operating systems, ''Classic Operating Systems: From Batch Processing to Distributed Systems'' (2001), and a retrospective on the evolution of concurrent programming, ''The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls'' (2002).
He self-published a 2004 memoir, ''A Programmer's Story: The Life of a Computer Pioneer'', on his website.
In 2002, Brinch Hansen was awarded the
IEEE Computer Pioneer Award
The Computer Pioneer Award was established in 1981 by the Board of Governors of the IEEE Computer Society to recognize and honor the vision of those people whose efforts resulted in the creation and continued vitality of the computer industry. T ...
"For pioneering development in operating systems and concurrent programming exemplified by work on the RC 4000 multiprogramming system, monitors, and Concurrent Pascal."
On July 31, 2007, Brinch Hansen died, shortly after being diagnosed with terminal cancer.
Personal life
Brinch Hansen met his wife Milena (née Hrastar) on a class trip to Yugoslavia in 1962. They married in 1965 and had two children, daughter Mette and son Thomas.
Scientific contributions and influence
In a career spanning five decades, Brinch Hansen made seminal contributions in the areas of operating systems, concurrent computing and parallel and distributed computing that were influential in shaping the development of those fields and advancing them from ad hoc techniques to systematic engineering disciplines.
The influence of his work was amplified by his "relentless search for simplicity,"
his insistence on clarity, writing and rewriting his papers many times before publishing them,
becoming "one of the best explainers in the business,"
and his commitment to testing concepts in working systems – Brinch Hansen implemented and distributed working systems for new concepts he developed, noting:
Operating systems
The RC 4000 multiprogramming system introduced the now-standard concept of an
operating system kernel
The kernel is a computer program at the core of a computer's operating system and generally has complete control over everything in the system. It is the portion of the operating system code that is always resident in memory and facilitates in ...
and the
separation of mechanism and policy The separation of mechanism and policy is a design principle in computer science. It states that mechanisms (those parts of a system implementation that control the authorization of operations and the allocation of resources) should not dictate ( ...
in operating system design. Modern
microkernel
In computer science, a microkernel (often abbreviated as μ-kernel) is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms include low-level address space management, ...
architectures trace their roots to the extensible nucleus architecture of the RC 4000.
Improving microkernel performance was a major theme in operating system research for three decades after the RC 4000.
Brinch Hansen's text, ''Operating System Principles'', was the first comprehensive textbook on operating systems. Eventually published in six languages (English, Japanese, German, Czech, Polish and Serbo-Croatian),
it remained in print for decades, and years after the RC 4000 system it described had become outdated. In 1990, nearly two decades after its initial publication,
P. J. Plauger
Phillip James (P.J. or Bill) Plauger (; born January 13, 1944, Petersburg, West Virginia) is an author, entrepreneur and computer programmer. He has written and co-written articles and books about programming style, software tools, and the C ...
reviewed it, saying:
In 2005,
Association for Computing Machinery (ACM) members voted ''Operating System Principles'' a top 25 classic book, in a survey to choose out-of-print classic books to add to the ACM Digital Library. ''Operating System Principles'' ranked 15th in the survey, appearing on 8.8% of ballots.
It is no
available from the ACM Digital Library
Using Concurrent Pascal, Brinch Hansen demonstrated that it was feasible to fully implement operating systems in high level languages, and that doing so reduced the development effort by one to two orders of magnitude. Furthermore, entire operating systems could be published, and understood in their entirety. Brinch Hansen did precisely that in ''The Architecture of Concurrent Programs'', leading Roy Maddux and
Harlan Mills
Harlan D. Mills (May 14, 1919 – January 8, 1996) was Professor of Computer Science at the Florida Institute of Technology and founder of Software Engineering Technology, Inc. of Vero Beach, Florida (since acquired by Q-Labs). Mills' contri ...
to declare:
Concurrent programming
Brinch Hansen and Hoare developed the monitor concept. Brinch Hansen published the first monitor notation, adopting the class concept of Simula 67,
and invented a queueing mechanism. Hoare refined the rules of process resumption. Brinch Hansen created the first implementation of monitors, in Concurrent Pascal.
More than a dozen additional monitor-based languages had been created by 1990: Simone,
Modula
The Modula programming language is a descendant of the Pascal language. It was developed in Switzerland, at ETH Zurich, in the mid-1970s by Niklaus Wirth, the same person who designed Pascal. The main innovation of Modula over Pascal is a modul ...
, CSP/k, CCNPascal, PLY, Pascal Plus, Mesa, SB-Mod,
Concurrent Euclid
Concurrent Euclid (ConEuc) is a concurrent descendant of the Euclid programming language designed by James Cordy and Ric Holt, then at the University of Toronto, in 1980. ConEuc was designed for concurrent, high performance, highly reliable sy ...
, Pascalc, Concurrent C, Emerald, Real-time Euclid, Pascal-FC,
Turing Plus
Turing is a high-level, general-purpose programming language developed in 1982 by Ric Holt and James Cordy, at University of Toronto in Ontario, Canada. It was designed in order to help students taking their first computer science course learn ...
, Predula.
Concurrent Pascal was the first concurrent programming language:
the first language developed specifically for concurrent programming, and more importantly, the first language to demonstrate that it was possible to incorporate secure, high-level facilities for concurrency, where the system could guarantee that processes access disjoint sets of variables only and do not interfere with each other in time dependent ways.
Hoare described it as "an outstanding example of the best of academic research in this area."
Source and portable code for Concurrent Pascal and the Solo operating system were distributed to at least 75 companies and 100 universities in 21 countries, resulting in its widespread adoption, porting and adaptation in both industry and academia.
Greg Andrews observed that Concurrent Pascal and monitors "greatly influenced most subsequent concurrent language proposals."
Brinch Hansen's ''The Architecture of Concurrent Programs'' was the first book on concurrent programming,
and was eventually published in three languages (English, Japanese, and German).
More than a dozen years after its publication, P. J. Plauger observed:
In 2005,
ACM members voted ''The Architecture of Concurrent Programs'' a top 25 classic book, ranking it 18th in the survey, and appearing on 8% of ballots.
It is no
available from the ACM Digital Library
Distributed computing and remote procedure call
Remote procedure call
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure ( subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it were a normal ( ...
s used in modern operating systems trace their roots back to the RC 4000 multiprogramming system,
which used a request-response communication protocol for process synchronization.
In his 1978 paper on distributed processes, Brinch Hansen proposed a language for distributed computing based on external requests consisting of procedure calls between processes. This later became known in an operating system context as the remote procedure call.
Later, Brinch Hansen developed two languages extending Hoare's CSP message-passing paradigm with parallel recursion,
and showed how to efficiently implement such.
Honors and awards
* Doctor Technices,
Technical University of Denmark
The Technical University of Denmark ( da, Danmarks Tekniske Universitet), often simply referred to as DTU, is a polytechnic university and school of engineering. It was founded in 1829 at the initiative of Hans Christian Ørsted as Denmark's fir ...
, for The Architecture of Concurrent Programs, 1978
* First Henry Salvatori Professor of Computer Science,
University of Southern California
, mottoeng = "Let whoever earns the palm bear it"
, religious_affiliation = Nonsectarian—historically Methodist
, established =
, accreditation = WSCUC
, type = Private research university
, academic_affiliations =
, endowment = $8.1 ...
, 1982
*
IEEE Fellow
As of 2019, the Institute of Electrical and Electronics Engineers (IEEE) has 5,082 members designated Fellow, each of whom is associated with one of the 41 societies under the IEEE. The Fellow grade of membership is the highest level of membershi ...
, 1985
* Distinguished Professor,
Syracuse University, 1987
* Chancellor's Medal,
Syracuse University, 1989
*
IEEE Computer Pioneer Award
The Computer Pioneer Award was established in 1981 by the Board of Governors of the IEEE Computer Society to recognize and honor the vision of those people whose efforts resulted in the creation and continued vitality of the computer industry. T ...
, ''for pioneering development in operating systems and concurrent programming exemplified by work on the RC 4000 multiprogramming system, monitors, and Concurrent Pascal'', 2002
Programming languages
*
Concurrent Pascal
Concurrent Pascal is a programming language designed by Per Brinch Hansen for writing concurrent computing programs such as operating systems and real-time computing monitoring systems on shared memory computers.
A separate language, ''Sequenti ...
(1975)
* Distributed Processes (1978)
*
Edison (1981)
*
Joyce (1987)
*
SuperPascal (1993)
Quotations
* ''Writing is a rigorous test of simplicity: It is just not possible to write convincingly about ideas that cannot be understood''
* ''Programming is the art of writing essays in crystal clear prose and making them executable''
Publications
;Books
* ''Operating System Principles'' (1973, )
* ''The Architecture of Concurrent Programs'' (1977, )
* ''Programming a Personal Computer'' (1983, )
* ''Brinch Hansen on Pascal Compilers'' (1985, )
* ''Studies in Computational Science: Parallel Programming Paradigms'' (1995, )
* ''The Search for Simplicity: Essays in Parallel Programming'' (1996, )
* ''Programming for Everyone in Java'' (1999, )
* ''Classic Operating Systems: From Batch Processing to Distributed Systems'' (editor, 2001, )
* ''The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls'' (editor, 2002, )
* ''A Programmer's Story: The Life of a Computer Pioneer'' (2004, available at http://brinch-hansen.net/)
;Selected papers
The Cobol compiler for the Siemens 3003 ''BIT'' 6, 1 (1966), 1–23 (with Roger House)
Design Considerations for the RC 4000 Computer Regnecentralen, Copenhagen, Denmark (1966) (with Peter Kraft)
The logical structure of the RC 4000 computer ''BIT'' 7, 3 (1967), 191– 199
The RC 4000 real-time control system at Pulawy ''BIT'' 7, 4 (1967), 279–288
RC 4000 Software: Multiprogramming System, Part I General Description Regnecentralen, Copenhagen, Denmark (1969) 13–52
RC 4000 Software: Multiprogramming System (Complete) Regnecentralen, Copenhagen, Denmark (1969)
RC 4000 Computer: Reference Manual Regnecentralen, Copenhagen, Denmark (1969)
The nucleus of a multiprogramming system ''Communications of the ACM'' 13, 4 (April 1970), 238–242
An outline of a course on operating system principles in ''Operating Systems Techniques'', Proceedings of a Seminar at Queen's University, Belfast, Northern Ireland, August–September 1971. C. A. R. Hoare and R. H. Perrott, Eds. Academic Press, New York (1972), 29–36
Structured multiprogramming ''Communications of the ACM'' 15, 7 (July 1972), 574–578
Shared Classes in ''Operating System Principles'', Section 7.2 Class Concept, Prentice Hall, Englewood Cliffs, NJ, (July 1973), 226–232
Testing a multiprogramming system ''Software: Practice and Experience'' 3, 2 (April–June), 145–150
The programming language Concurrent Pascal ''IEEE Transactions on Software Engineering'' 1, 2 (June 1975), 199–207
The Solo operating system: a Concurrent Pascal program ''Software— Practice and Experience'' 6, 2 (April–June 1976), 141–149
The Solo operating system: processes, monitors and classes ''Software— Practice and Experience'' 6, 2 (April–June 1976), 165–200
The Programmer as a Young Dog English translation by the author of Programmøren som hvalp, In ''Niels Ivar Bech—en epoke i edbudviklingen i Danmark'', P. Sveistrup, P. Naur, H.B. Hansen, and C. Gram, Eds., (in Danish), Data, Copenhagen, Denmark, (1976), 65–68
Experience with modular concurrent programming ''IEEE Transactions on Software Engineering'' 3, 2 (March 1977), 156–159
Design Principles in ''The Architecture of Concurrent Programs'', Chapter 1 Design Principles, Prentice Hall, Englewood Cliffs, NJ, (July 1977), 3–14
Network: A multiprocessor program ''IEEE Transactions on Software Engineering'' 4, 3 (May 1978), 194–199
Distributed processes: A concurrent programming concept ''Communications of the ACM'' 21, 11 (November 1978), 934–941
Reproducible testing of monitors ''Software: Practice and Experience'' 8, 6 (November–December), 721–729
A keynote address on concurrent programming Keynote address for the ''IEEE Computer Software & Applications Conference'', Chicago, IL, November 1978, ''Computer'' 12, 5 (May 1979), 50–56
The Design of Edison ''Software: Practice and Experience'' 11, 4 (April 1981), 363–396
Joyce—A programming language for distributed systems ''Software— Practice and Experience'' 17, 1 (January 1987), 29–50
The Joyce Language Report ''Software: Practice and Experience'' 19, 6 (June 1989), 553–578
A multiprocessor implementation of Joyce ''Software: Practice and Experience'' 19, 6 (June 1989), 579–592
The nature of parallel programming Inaugural Symposium at Syracuse University, Syracuse, NY, March 1989, In ''Natural and Artificial Parallel Computation'', M.A. Arbib and J.A. Robinson, Eds. The MIT Press, Cambridge, MA, (1990), 31–46
The linear search rediscovered ''Structured Programming'' 11, (1990), 53–55
Householder reduction of linear equations ''ACM Computing Surveys'' 24, 2 (June 1992), 185–194
Monitors and Concurrent Pascal: A personal history ''2nd ACM Conference on the History of Programming Languages'', Cambridge, MA, April 1993, In ''SIGPLAN Notices'' 28, 3 (March 1993), 1–35
Model programs for computational science: A programming methodology for multicomputers ''Concurrency—Practice and Experience'' 5, 5 (August 1993), 407–423
Parallel Cellular Automata: A model program for computational science ''Concurrency—Practice and Experience'' 5, 5 (August 1993), 425–448
Multiple-length division revisited: A tour of the minefield ''Software: Practice and Experience'' 24, (June 1994), 579–601
SuperPascal—A publication language for parallel scientific computing ''Concurrency—Practice and Experience'' 6, 5 (August 1994), 461–483
Interference control in SuperPascal—A block-structured language parallel language ''The Computer Journal'' 37, 5 (1994), 399–406
Efficient parallel recursion ''SIGPLAN Notices'' 30, 12 (December 1995), 9–16
The All-Pairs Pipeline in ''Studies in Computational Science'', Chapter 4: The all-pairs pipeline. Prentice Hall, Englewood Cliffs, NJ, (March 1995), 73–89
Balancing a Pipeline in ''Studies in Computational Science'', Chapter 5: Balancing a pipeline. Prentice Hall, Englewood Cliffs, NJ, (March 1995), 90–100
Java's insecure parallelism ''SIGPLAN Notices'' 34, 4 (April 1999), 38–45
The evolution of operating systems In ''Classic Operating Systems: From Batch Processing to Distributed Systems'', P. Brinch Hansen, Ed., Springer-Verlag, New York (2001)
The invention of concurrent programming In ''The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls'', P. Brinch Hansen, Ed., Springer-Verlag, New York (2002)
See also
*
List of pioneers in computer science
This is a list of people who made transformative breakthroughs in the creation, development and imagining of what computers could do.
Pioneers
: ''To arrange the list by date or person (ascending or descending), click that column's small "up-do ...
References
External links
* – memoirs, selected papers, detailed bibliography
Early papers by Per Brinch Hansen (1966–1970)at Danish Datamuseum
{{DEFAULTSORT:Brinch Hansen, Per
1938 births
2007 deaths
People from Frederiksberg
Technical University of Denmark alumni
Danish computer scientists
Danish emigrants to the United States
American computer scientists
Syracuse University faculty
Computer systems researchers
Programming language researchers
Fellow Members of the IEEE
Deaths from cancer in New York (state)