InfoQ

Interview

Recorded at:
Recorded at

A Conversation with Sr. Tony Hoare

Interview with Tony Hoare by Sadek Drobi on Jun 25, 2009

Community
Architecture
Topics
Programming
Tags
Interviews ,
QCon London 2009 ,
QCon
Summary
Sir Tony Hoare answers questions about his background, his relationship with Microsoft Research, his interest in "Unifying Theories of Programming," and numerous other topics in the area of programming, correctness, formal analysis of programs, and even type systems. Also addressed: concurrency, null-references, and even buffer overflows.

Bio
Sir Charles Antony Richard Hoare, commonly known as Tony Hoare, is a British computer scientist, probably best known for the development in 1960, at age 26, of Quicksort. He also developed Hoare logic, the formal language Communicating Sequential Processes (CSP), and inspired the Occam programming language.

About the conference
QCon is a conference that is organized by the community, for the community.The result is a high quality conference experience where a tremendous amount of attention and investment has gone into having the best content on the most important topics presented by the leaders in our community. QCon is designed with the technical depth and enterprise focus of interest to technical team leads, architects, and project managers.
I'm Sadek Drobi, I'm here at QCon with Sir Tony Hoare. Can you tell us a bit about yourself and about your long run computer science?
You mentioned Microsoft Research and there were several projects that are based on your own ideas. One of them is the Spec# project, which is about the typing system or the former system of verification for the program that is based on logical wire, which is yours. Can you tell us about these concepts and then tell us about the difference in having it inside the type system or as an independent system that then plugs into the program to verify it?
You mentioned, when you were talking, the null references and the buffer overflow. What are the other things that we want to detect in the program? What are other faults that we could or we should detect in a program?
In languages like functional programming languages they even try to specify effect in the type system, like in Haskell. What do you think of that? Would it be helpful in programming for the Enterprise?
Having this strong type systems could help you do a lot of things, afterwards, when you implement software. There is this project under Microsoft research called The Singularity and we hear that you've been involved in the project in some way or another. Can you tell us a bit about this project?
In some way, in software, we did some assumptions and then we built on top of these assumptions without even trying to rethink about them and that's how it works, anyway. But then, some time, we get to re-question these assumptions. Do you see a lot of assumptions to rethink about in the software stack?
You mentioned the Arianne rocket and as I remember there was also this assumption because it was a module that has been tested for smaller rocket and it was okay in that context and then it was used in this new bigger rocket and the assumptions there and the implementation had been OK, but you didn't think about it could be used in a totally different context. Is it possible at all to make all these assertions to be sure that a program can be 100% not getting into trouble?
For example, when doing any spell check, there are some mechanisms that are based on the grammar theory and stuff like this. In Google, what they actually do is they have a lot of machines with a lot of text and they just try to find the text somewhere and then they do the spell check and the grammatical check this way. There are 2 different approaches to checking grammar, 2 different ways. Also, in the programming languages, there are systems that are based on proof and type system statically typed, like Haskell and there are dynamic languages where it's all about observation of runtime behavior trying to optimize there and trying to make some assumptions at runtime. What do you think of this difference, of 2 different approaches?
You mentioned you have this Bachelor's in the classics. How did you get involved in computing? I know you've studied computer science and computer languages in Russia. Can you tell a bit about your history before you started in the '60s with computing? How you began in this, which was a very young field at that time?
When was that you made this almost artificial intelligence where we are trying to translate in human language by means of computer programs? When was that?
Does that mean that you aspired to be a scientist, but then you had to be an engineer for the Eliot Brothers and work with computers?
Don't you feel sometimes annoyed that certain ideas of research take a whole lot time to get mainstream?
These things we can easily observe in Microsoft, because now we are hearing more and more about commercial products coming out from Microsoft based on a lot of research, like F#, Spec#, Singularity and there is a lot of stuff that might even go see the lights. Do you think this will change the way we perceive software? Will we start having a kind of mind set shift thinking about software? Because we had these assumptions for a long time and now we are starting to see new ideas, new things and it seems that the world of software is changing in some way.
With your time in the computer science field, I'm guessing that you've seen some common trends, things that have remained consistent throughout time since 1960. What are those trends that have remained consistent and how do you think it will continue to the future?
You've made a major contributions to the field of computer science for example in concurrency, with communicating sequential processes, you've been influential with Algol. Which one will you yourself say "This is my favorite child!", if that's possible?
show all  show all

No comments

Watch Thread Reply

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.