Per Brinch Hansen


Per Brinch Hansen was a Danish-American computer scientist known for his work in operating systems, concurrent programming and parallel and distributed computing.

Biography

Early life and education

Per Brinch Hansen was born in Frederiksberg, an enclave surrounded by Copenhagen, Denmark. 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. His mother, Elsebeth Brinch Hansen, was the daughter of Danish composer Oluf Ring 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 project that described computer organization from a programmer's point of view refocused his interest toward becoming a computer architect.

Regnecentralen

After completing a Master of Science degree in electronic engineering in 1963, Brinch Hansen landed a job at Regnecentralen, then a research institution under The Danish Academy of Technical Sciences, working in the compiler group, led by Peter Naur and Jørn Jensen. There, his first significant project was writing a parser for a COBOL compiler for the Siemens 3003 computer.
Subsequently, he wrote a file system to be used during execution 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 and instruction set for Regnecentralen's third computer, the RC 4000, using ALGOL 60 as a hardware description language to produce a formal specification.
Inexperienced with multiprogramming, he used a copy of Cooperating Sequential Processes Edsger Dijkstra had sent him to understand process synchronization using semaphores, and then implemented a specialized RC 4000 real-time monitor for use in managing a fertilizer plant. Peter Kraft and Charles Simonyi, who was still a teenager, wrote a p-code 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, with a goal to avoid developing a custom real-time control operating system for every RC 4000 installation, and to support batch processing and time-sharing as well. The resulting system was not a complete operating system, but a small kernel 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, accepting an invitation from Alan Perlis to visit the department of computer science 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, Brinch Hansen, Tony Hoare and Dijkstra began to discuss ideas that evolved into the monitor concept. In the spring of 1972, after reading about the class concept invented by Ole-Johan Dahl and Kristen Nygaard 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

In July 1972, Brinch Hansen joined the faculty of the California Institute of Technology as an Associate Professor of computer science, where he began work on defining a programming language with concurrent processes and monitors. In April 1974, he distributed a technical report on Concurrent Pascal. A Concurrent Pascal compiler 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 for his next post, so that his family could remain in their Altadena 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 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 calls to synchronize processes running across a microcomputer network.
Also in 1978, L. J. Sevins and Steve Goings from Mostek visited Brinch Hansen at USC, where he outlined a low-cost multiprocessor 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 acquired Mostek and cancelled the project. In 1982, Brinch Hansen moved the Edison system to an IBM Personal Computer, 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 as a Professor of datalogy. In 1985, he was elected a Fellow of the Institute of Electrical and Electronics Engineers. 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 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. Brinch Hansen developed a portable implementation on an IBM PC.

Syracuse University

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 in 1989, he began experimenting with scientific applications by developing parallel programs for Householder's method and then N-body simulation 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". 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, a text for a course in programming for non-majors, Programming for Everyone in Java, a retrospective on the evolution of operating systems, Classic Operating Systems: From Batch Processing to Distributed Systems, and a retrospective on the evolution of concurrent programming, The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls. 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 "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.