C as a death monster (and Ruby as a companion demon)
- Fran Allen: I kind of stopped when C came out. We were making so much good progress on optimizations and transformations. We were getting rid of just one problem after another...
Peter Seibel: Do you think C is a reasonable language if they had restricted its use to operating-system kernels?- Fran Allen: Oh, yeah. That would have been fine. In fact, you need to have something like that, something where experts can really fine-tune without big bottlenecks because those are they key problems to solve...
- Fran Allen: By 1960, we had a long list of amazing languages: Lisp, APL, Fortran, COBOL, Algol 60. These are higher-level than C. We have seriously regressed, since C developed. C has destroyed our ability to advance the state of the art in automatic optimization, automatic parallelization, automatic mapping of a high-level language to the machine. This is one of the reasons compilers are... basically not taught much anymore in the colleges and universities...
Peter Seibel: Surely there are still courses on building a compiler?- Fran Allen: Not in lots of schools. It's shocking, there are still conferences going on, and people doing good algorithms, good work, but the payoff for that is, in my opinion, quite minimal. Because languages like C totally overspecify the solution of problems. Those kinds of languages are what is destroying computer science as a study.
Peter Seibel: But most newer languages these days are higher-level than C. Things like Java and C# and Python and Ruby.- Fran Allen: But they still overspecify. The core thing is that is specifies the location of data. If you look at these other languages, they stayed away from specifying the location of data and how to move it, where to put it in the machine. It was ultimately about its value at any point.
Peter Seibel: But very few languages other than C and C++ have raw pointers anymore. Java has garbage collection and the data moves around. Would you say that's overspecified?- Fran Allen: Yes. I believe there's an opportunity to do what we have done with computation in the optimization world with data. We don't manage data very well. We don't have good ways of managing data automatically -- establishing locality of data that's going to be used together.
- Fran Allen: There are lots of threads of research now which are very exciting. But I think what's missing is the bigger, bolder concepts.... We need to start trying to break the boundaries of, "This'll be done here and that''ll be done there."
From the excellent Coders at Work.