Tuesday, March 2, 2010

Dennis Ritchie: The Unpublished Interview

I used to work for International IT Magazine named PC Quest Bangladesh. In September 2001, and I realized that it would make a great piece if I could manage an interview from Dennis Ritchie (the father of Unix Operating System and C Programming Language).

On the 8th day of September I sent him the questions by email and he replied back on the 9th!! And a few hours after that the TWIN TOWERS collapsed..

The interview ultimately remained unpublished (Thanks to the Editor!). After a decade I thought the transcript was lost. Luckily, I found a copy today..

THE INTERVIEW

1. You fathered Unix and C Language, two of the most successful creations in the history of computing. How do you explain and evaluate their success?

In large part it was good fortune. Unix and C appeared together, and of course they complemented and drew strength from each other. But there were some specific reasons, and among them are--

We made our first distributions on a class of machines, and actually a particular machine, the Digital PDP-11, that became popular. The 1970s saw the emergence of the "minicomputer", which was more affordable than earlier mainframes, and could be acquired by a department in a university or a company and avoided the central computer center that was the norm then.

Unix demonstrated interesting technical ideas and structures. It encouraged interactive computing in an era in which it was less available and normal than it is now. In particular, the "software tool" approach, particularly explored by programmers and authors like

Kernighan and Plauger, particularly when coupled with some nice text-processing ideas. Very little that we did was completely innovative, and all of our writing about Unix and for that matter C is careful to pay tribute to their predecessors, but the combination was attuned to the times and did have some interesting ideas of its own.

Also, although the software we produced was not "free" in the modern sense (it was licensed and controlled), on the kinds of machines on which interesting things were being done, it was readily available to university and company researchers and engineers. So even in the 1970s it achieved some currency.

A bit after we started (late 1970s) we also pioneered in portability of operating systems, and so that Unix and C were able to take part in the next wave of development after the minicomputer: the powerful workstation which in many environments was useful to a single person or a very small group. So companies like Sun were able to adapt Unix as a basis for their software. This was helped by the work at the University of California at Berkeley, which in turn was supported by the US government via ARPA.

Somehow we managed to find the "sweet spot" in this period of growth. It was not planned in advance, and was originally undertaken as a research project, but things worked out well.

2. Do you think that C will be replaced by newer languages within this decade?

This is already happening, given C++ and more recent descendants like Java and now C#. But perhaps more important, higher-level scripting languages like Perl and its cousins will become even more used, and probably things like VB may actually be most used of all. For "low-level" use C will remain around for quite a while, even if it is increasingly used as the unseen high-level assembler in which many of these tools are written.

3. If you were given the chance, what major changes you would have brought into C?

I do not have many real regrets about C. The idea of function prototypes, pushed into C by C++'s example, is something that I wish I had done myself earlier. The structure of declarations (in which "declarators" mimic the expressions in which the variables will appear) is often regarded with suspicion, and I understand why they are difficult. There are of course lots of silly little things that continue to cause trouble and are still argued about in discussion groups (including the standards committee.

4. Do you think that the current Standardized C holds enough features to be considered as a complete language?

It has enough features, and in fact the new standard (often called C99) may have more than I would have wanted. One fact that is important to realize is that C was intended just as a language tool, not itself as a complete environment that includes graphics and networking. It does have a standard library of very basic and generic I/O and some other things. The C standard itself, even when fully implemented, is not a programming environment, just a part of one.The intent was and is to describe a language that could be of use in many environments and isn't really tied to just one.

5. How do you evaluate Linux? What are things do you find missing in Linux?

I think the Linux phenomenon is great. Obviously it is done by others, and has its own development line and goals, but fundamentally its success (as well as those of other independent efforts, like the BSD systems) is part of the Unix heritage. I don't take credit for it, but I'm not jealous either.

6. After Unix, we know that you headed thePlan 9 and later Inferno Project. What is so special about Plan 9 and Inferno? What were the expectations behind Inferno and how is it proceeding to its goals?

I didn't head either of these in the sense of creating them; they owe to Ken Thompson, Rob Pike, and Phil Winterbottom. The operating-system ideas in both are generalizations of the Unix idea of supplying resources as objects that look like files: things have names that exist in a tree-shaped hierarchy, and have attributes like permissions and ownership that are just like those in a Unix or Linux file tree. The new thing in both is the increased abstraction andgeneralization of what is behind the name: entities that behave, to a program, much as a plain disk file might, but actually have a server behind them that can be much more interesting. This is most interesting in a distributed environment in which you can use remote resources transparently.

Inferno added the idea of the "virtual operating system": it can run either stand-alone as OS on raw hardware, or as a virtual machine under an commodity OS like Windows or a Unix variety. It uses compiler technology like that of Java or the new Microsoft MSIL.

Both are doing OK, and the ideas have been quietly influential, but it's certainly true that neither has had the effect that Unix itself did (over, say, 1974-1984). It would have been great to have one or both be a huge commercial success, but I think that both have achieved their goals, if not wildest hopes. Both are available. Plan 9 is freely available; trial versions of Inferno are free; supported versions with the full source use a subscription-based scheme.

The world has changed greatly since the time Unix (or C) started and began to grow as an important factor in computing.

7. How do you evaluate C# and Java? Do you thinkC# has made a good progress from C?I will pass on this, except to reiterate what I just said at the end of the last answer, and to observe that both C# and Java have important commercial interests involved in propagating them. Both clearly take a lot from C (for which I'm happy), but are at a higher level both in terms of usual implantation techniques and the operations and safety facilities available.

8. What is your vision on the operating system of the future?

If I had a really clear vision of this, I might be re-thinking my own future. It does seem that the traditional OS area, or ecology, is rather fully-occupied, and so thinking about new, general-purpose systems like Unix for a centralized machine or server, or for the desktop, or a laptop is probably pointless. There should be interesting things to do in distributed systems that communicate over channels (often wireless) that can be slow, or fast with large latency, or unreliable, or all of these. Among the things we're looking at is how to do this seamlessly. I'll let the people doing the work publish when they're ready.

9. What is your current project and what are your plans for the future?