February 1, 1993
What are your thoughts on parallel processing and its relation to language?
One of the questions is, are there paradigms that are applicable to parallel programming that aren’t applicable to sequential programming, and what are they? Functional programming, list-based programming, things like that are readily applicable to parallel systems. In fact, they work very nicely and elegantly in parallel systems. That is indeed the main algorithm that is used in the various [parallel] Fortrans. There is a question, particularly with respect to SIMD architectures, of [whether] there are other fundamental kinds of programming-language ideas that we just don’t have yet.
… I’ve spent a lot of time thinking about them and I didn’t come up with them. It could be that there aren’t any. One of the ways that you can get a clue about this relates to the other side of my life, which is trying to do science. The kinds of things I’m interested in are using fundamental ideas from computation to understand more about scientific systems. And one of the things one is led to there is what kind of simple computational systems really capture the essence of what’s going on in a biological system, in a growing plant. Figuring out the answer to that question has been one of my big projects. And what I’ve found is that so far, with one exception that I’m still grappling with, all of the things that I have found to be useful as fundamental models—whether they’re things like Turing machines, or cellular automata, or register machines, or graphs—turn out to be very simple to do in our existing programming paradigms. So one question is, is there something out there in nature that is working according to a different programming paradigm that we should be able to learn from? If you look at the construction of organisms, for instance, there are many segmented organisms: biology-discovered iteration. There are many branching organisms: biology-discovered recursion. There are a few other of these kinds of things that are a little less familiar but are still one line of Mathematica code, and that are commonly used in biology. Does that mean we’ve really discovered all the useful programming paradigms? And if nature presents us with something we can’t understand along those lines, that’s a good clue that there’s another programming paradigm out there to be figured out. And as far as I can tell, there isn’t much else out there.