Ole-Johan Dahl, born in 1931, is widely accepted as Norway's most famous computer scientist. With Kristen Nygaard, he produced the initial ideas for object-oriented (OO) programming in the 1960s at the Norwegian Computing Center. They were the first to develop the concepts of class, subclass (allowing implicit information hiding), inheritance, dynamic object creation and so on. An "object" is a self-contained component in a software system. These are combined to form a complete system. The OO approach is now pervasive in modern software development, including widely used imperative programming languages such as Java and C++.
Dahl became a full professor at Oslo University in 1968. Here he worked on "hierarchical program structures", probably his most influential publication, which appeared co-authored with C.A.R. Hoare in the influential book Structured Programming by Dahl, Edsger W. Dijkstra and Hoare, perhaps the best-known academic book on software in the 1970s. He was in good company with two other giants in the field of provably correct software development.
As his career progressed, Dahl became increasingly interested in the use of formal methods - for example, rigorous reasoning about OO. Like all good computer scientists, his expertise ranged from the practical application of ideas to their formal mathematical underpinning.
The original idea of this book was that it would be a celebratory gift to Dahl in his retirement, but 2002 was a sad year for Norwegian computing because both Dahl and Nygaard died within weeks of each other. Dijkstra died the same year, so could not contribute to the book. However, this festschrift is still a fitting posthumous tribute to Dahl by close colleagues and highly respected computer scientists from around the world.
The book starts with a good six-page biography of Dahl by the book's editors, followed by a comprehensive bibliography. The first full chapter is appropriately by Dahl himself (previously published in almost identical form in 2002). It gives a historical introduction to the development of the Simula programming languages and the start of OO, including an assessment of the cultural impact on computing.
US computer scientists keenly took up OO ideas, and it is here that much of the more recent practical development has taken place. Simula 67 was a simulation language that was useful for companies such as Intel (inventor of the microprocessor) in the design of VLSI chips. Leading US research centres such as the Massachusetts Institute of Technology and Xerox Parc also adapted OO concepts for use in languages such as CLU and Lisp.
Nowadays, the tool-supported Unified Modeling Language is very widely used in industry for OO system design and development. The Common Object Request Broken Architecture (CORBA) is utilised by many companies for interfacing OO systems. More specifically, the Microsoft Component Object Model (COM) is an important aspect of programming languages such as CNoNo. Much practical software development is undertaken in an OO manner, and a university computer science degree course would find it extremely hard to justify ignoring the approach.
Rather than covering all the chapters, many of which are largely academic and specialist in nature, it is perhaps more interesting to pick a small number of highlights, especially where the authors had a close affinity with Dahl.
Hoare's chapter covers the Verifying Compiler, a computer science "Grand Challenge" in the style of the mathematician David Hilbert, where a program compiler could check that Boolean assertions in the code being compiled are always true as part of the compilation process. Currently, in practical situations, such assertions can be checked only later when the program is run. Hoare hopes that such a compiler will be created some time this century.
Hoare also remarks on a presentation that Dahl made at a symposium in Oxford during 1999 to mark his own retirement from Oxford University. There was a power cut in the middle of the talk and, with only dim emergency lighting, no visual aids were possible. However, typically and with great aplomb, Dahl said he could continue, and did so in the darkness to a rapt audience. Many lesser speakers would have floundered and delayed until the restoration of full power.
Eugene Kindler of Ostrava University in the Czech Republic provides an interesting account of the influence of Simula behind the Iron Curtain, where the very idea of computer simulation was regarded with suspicion by central bureaucrats. Computers were generally considered useful only as an auxiliary aid for mathematics, so his research interests were considered somewhat subversive.
Donald Knuth at Stanford University is one of the world's leading computer scientists, and his interest in algorithms is illustrated by his chapter.
He visited Oslo University in 1972-73 and Dahl visited Stanford in 1977-78, leading to fruitful collaboration on the science of programming, not to mention piano duets as a result of shared musical interests. Dahl was a gifted classical pianist who often accompanied his wife, a violinist.
Other well-known contributors include Dines Bjørner, Manfred Broy, Joseph Goguen, Hans Langmaack, Jose Meseguer, Bertrand Meyer and Michel Sintzoff.
Meyer (the developer of the Eiffel OO language) covers OO event-driven software design, including a comparison of the approach with Microsoft's .NET for connecting web services.
Dahl confesses to a degree of luck in the success of his influence on OO work, especially considering his geographically peripheral location. No doubt object-orientation would have emerged in some form as a paradigm, but as history has proceeded, he and Nygaard can be rightfully considered the progenitors of the OO approach.
Despite his academic standing, Dahl was a delightfully modest and unassuming person, with a very thoughtful but approachable manner. One contributor describes him as "a genial scientist, an excellent musician and a very good person". He will be missed.
This book will be of interest to any computer scientist who met Dahl or knows him by reputation. Anyone concerned with formal methods research will also find it a useful set of papers; all the contributors are of international calibre and many are very well-known computer scientists. Any OO programmer who does not know the provenance of the approach they are using would do well to dip into this book, especially the first three contributions. All academic libraries covering software engineering would benefit from a copy. It is sad that Dahl did not live to see the book's publication, but I think he would have approved of the content.
Jonathan Bowen is professor of computing, London South Bank University.
Object-Orientation to Formal Methods: Essays in Memory of Ole-Johan Dahl
Editor - Olaf Owe, Stein Krogdahl and Tom Lyche
Publisher - Springer
Pages - 389
Price - £37.00
ISBN - 3 540 21366 X