Simon Peyton Jones
π€ SpeakerAppearances Over Time
Podcast Appearances
Programs execute just by reduction.
Now, so these were two different models of computation.
You might ask, what can you compute with a Turing machine, and what can you compute with a lambda term?
And the astonishing thing that turned out, which is completely non-obvious,
is that anything you compute with a lambda term, you can compute with a Turing machine, and anything you compute with a Turing machine, you can compute with lambda calculus.
So that means that the two are identical from the point of view of their computational power.
Big surprise to me.
Okay, so they're equally powerful.
And then the question is, which might you want to choose?
As I say, I started life from my baseline of imperative programming.
Of course, that's the way you write programs.
And functional programming is a kind of weird, anomalous, rather nerdy academic thing.
I became hooked on the idea that by excluding side effects by default, that is, imperative programming has side effects by default, by excluding side effects by default, we could make programs that are easier to write, easier to maintain, easier to reason about.
And then the question is,
What are the practical obstacles?
Is it slower?
Is it less convenient?
And so forth.
So in effect, I've devoted my research life to exploring that hypothesis.
The wonderful thing about being a researcher is you can take something which at the time, this is back in 1980.