Please elaborate on the work leading up to your achieving the distinction of ACM Fellow:
The greatest part of my career has been concerned with improving the ease of using computers and the ease of developing quality software. This desire led me into a variety of activities related to programming languages, interpreters, compilers, and tools.
What is the best reference to your work?
There is no single good reference, since most of my work took the form of working systems rather than publications. I was a substantial contributor to Interlisp and to ParcPlace (now ObjectShare) Smalltalk (now VisualWorks). My two best published papers were my Ph.D. thesis, published by Xerox PARC in 1971, and the paper I co-authored in the 1984 ACM POPL.
What are your current research interests?
I have been doing engineering in industry since 1991 and wouldn't say I have research interests per se at the moment. However, I continue to be deeply interested in tools and languages that support the productive creation of high- quality software, and specifically in the area of machine- checkable, formally stated properties of programs.
What are your current outside interests?
Assuming you mean outside software engineering, I enjoy traveling, singing, square dancing, writing music, and cheap ethnic restaurants.
What was the greatest influence on you?
Lisp, which made me aware that software could be close to executable mathematics; Smalltalk, which made me aware of the synergy between language, tools, and libraries in software productivity; and the PDP-1 time-sharing project at MIT in the early 1960s, which introduced me to interactive computing. In terms of people, I would say Danny Bobrow, for being a mentor and collaborator when I was in high school and college; Robert Floyd, for the 1971 IFIP paper that motivated my Ph.D. work; and Edsger Dijkstra, for insisting that software is mathematics.
What was your greatest influence?
I think I have had two significant influences on the world of software. The 1984 POPL paper is the most widely cited reference for what is now called JIT compilation. The other influence has been through my Ghostscript software, which both has been of tremendous practical benefit and also has an innovative licensing approach. Beyond that, I have no idea to what extent the various tools and implementation techniques I contributed to the Interlisp and Smalltalk systems have affected the industry.
Who do you think has made the greatest impact on software engineering?
I think the greatest impact on software engineering has come from the development of better languages. I would hesitate to choose between John Backus, for FORTRAN, and Thompson and Ritchie, for C.
Which computer-related areas are most in need of investment by government,
business or education?
The government desperately needs to be better educated so that it can start to undo the deleterious effects of software patents (by reversing the error of interpretation by the courts that allowed them in the first place) and of Microsoft's desktop hegemony (by understanding that seamlessly interoperable software does not require single- sourcing the entire collection, and that interoperability without a requirement of timely, free, and open documentation of interfaces makes creative competition impossible). Beyond that, see my advice below.
What advice do you have for computer science/software engineering students?
What is the most often-overlooked risk in software engineering?
That as a system grows over time, it will become too complex or disjointed to understand or make work reliably.
What is the most-repeated mistake in software engineering?
Underestimating the time or effort required to complete a project.
Do you have any other comments on software engineering?
"Software engineering" is something of an oxymoron. It's very difficult to have real engineering before you have physics, and there isn't anything even close to a physics for software -- an account of elementary objects in terms that can be used to usefully describe and understand the composites that are built out of them, including the emergent properties of those composites. If the individual statements of programming languages are the elementary particles, standard libraries are the building materials: we have the standard C libraries (which are at about the conceptual level of things like clay, rock, and wood), a rich but proprietary (single-source, hidden-construction) array of single-source libraries from Microsoft, and the emerging Java standard libraries, none of which have the formal specifications that are needed to make them good building materials.
Profiled by Ron Finkbine, Ph.D., email@example.com