“Functional programming is a radical and elegant attack on the entire enterprise of writing programs. And I think it will have a long term impact; when the limestone of imparting programming has worn away, the granite of functional programming will be revealed underneath.”
“Computer Science is a foundational subject discipline, that like maths and natural science every child should have the opportunity to learn from primary school onward.”
Simon has just (March 2019) been appointed chair of the new National Centre for Computing Education.
Simon Peyton-Jones was born in Simon’s Town, South Africa in 1958. He was apparently named after the town where his father, a naval officer, was based. The family returned to the UK when Simon was a few months old, and then moved to Trinidad when his father, having retired from the Navy, went to manage the Trinidad and Tobago Coast Guard. Simon was aged three at the time. They returned to the UK when Simon was eight and his father took up the role of director of the overseas side of the Duke of Edinburgh’s Award scheme. Simon has three brothers and sisters.
Simon says that his influences were his parents and his time spent at boarding school from the age of eight. Despite a family history of Naval careers, and having a naval scholarship to attend Marlborough College, Simon realised that it wasn’t for him after a week’s training course at Dartmouth, he explains: “I came away realising the Navy was absolutely not for me. I have a huge respect for people who work in the armed services, but it was quite clearly not suitable for a slightly geeky young man as I was then.”
Simon attended Lambrook School as a boarder from the age of eight until thirteen. He then went to Marlborough College, a public school in Wiltshire. It was here that Simon had his first experience of computing despite the fact that it was not part of the curriculum. He explains: “We didn’t have access to any microprocessors, but we did have an electronics lab and a strange thing called an IBM school’s computer, which was my first programming experience. It had only 100 memory locations and could only be programmed in a numerical machine code; it had no high-level languages at all. Nor did it have any long-term memory; you had to type in your entire program from scratch every time you switched it on.” Simon also accessed an Elliott 803 computer that “filled a whole room” at the local technical college in Swindon.
Simon studied A Levels maths, physics, chemistry, and further maths, with extracurricular activities in astronomy and electronics. Following school, Simon took a gap year to work at IBM in Croydon which was his first exposure to corporate IT which he describes as “a huge eye-opener”.
After his industrial gap year Simon went to Trinity College, Cambridge where he entered to study for an undergraduate degree in mathematics. He explains: “At that age you couldn’t do a computer science degree. I was pretty sure that computing was where I was going to end up, but it was my hobby and I sort of thought, well, it’s a bit cheating to do your hobby as a university degree, so in the event I elected to do mathematics, and was lucky enough to get into Trinity. It was a huge shock to the system, because I thought I was quite a good mathematician, but it turned out that Trinity mathematicians are a kind of breed apart, and they were just streets ahead of me. I was in shock for the whole of the first year.”
In his third year, Simon switched to electrical sciences, a final year course, run by the engineering department. He describes it as “populated almost entirely by refugee mathematicians and physicists.” He graduated with a first-class honours degree.
Simon enjoyed his days at Cambridge, working hard on his course, socialising and building and programming computers with his friends until late in the night. He also joined the university air squadron and learned to fly the single-engine Bulldog planes and flew solo.
Simon was introduced to functional programming when he met Arthur Norman, a professor in the computer science department at Cambridge who gave a short series of lectures on the subject. Simon explains: “He opened my eyes to the idea of functional programming. There was a little group of us (John Hughes, Thomas Clarke, William Stoye, Jon Fairbairn) who became literally inspired by the idea of functional programming as, a whole new approach to the very enterprise of writing programs at all.”
Simon explains functional programming saying: “The easiest way to get at functional programming is to think of spreadsheets. In a spreadsheet you write formulae which you evaluate to get a result and these formulae do not have side-effects. The surprising thing though is that despite the apparently-restrictive programming paradigm (programming using only pure functions that take input and produce results but have no side-effects), it’s not only possible to write programs that way, it’s actually the foundation of an entire computational paradigm.”
Simon goes on to describe how while Turing was developing his machine, Church, Turing’s supervisor, was developing the lambada calculus, which was an entirely functional approach to thinking about what it means to be computable. He adds: “It turned out that these two approaches were in fact inter-definable. So, if you can compute something with a Turing machine, you can compute it with a lambda calculus, and vice versa. But, although this is rather reconstructing history, we could look back and say, it is as if functional programming is built on lambda calculus, and imperative programming, mainstream programming, is built on Turing machines. The revelation for me was that, functional programming was an radical and elegant attack on the entire enterprise of programming. That’s rather attractive to an undergraduate who wants to reform the world: to say, we’ll have no truck with all the compromises that imperative programming entails; let’s try this radical and elegant approach and see where it takes us. And it’s taken us quite a long way.”
Simon continues to explain lazy functional programming saying; “When you call a function, in C or Java, you would typically evaluate the arguments of the function before you make the call. In lazy functional programming, you would instead, not evaluate the arguments; instead you pass to the function a kind of heap allocated recipe which when poked on will evaluate the argument.” He calls it a tactic that means you do less work but may have higher overheads as you go along. He adds: “But more interestingly, it turns out that it gives you a new form of modularity and at the time, it was kind of cool, and it linked in a very principled way to something called normal order of evaluation for lambda calculus. It also connected very much with a class of implementations that David Turner was popularising called SK combinators, on which he built his languages SASL and KRC, and later Miranda. Those languages were all inspirations to that little subgroup of undergraduates as well.”
Through his education and at university Simon developed his love of learning, he says: “Mathematics and computer science is just full of amazing, clever, elegant, beautiful, satisfying ideas, and it’s an adventure to discover all of those things, and then, maybe later to be able to contribute to them.” He also enjoyed the opportunity he had as a researcher at a university to spend sustained attention on trying to make things simpler rather than being under pressure to deliver to a deadline as often required in the commercial world.
Beale Electronic Systems
Having declined the offer by Cambridge’s engineering department to study for a PhD, Simon went to work for Beale Electronic System; a small electronics company which built process control and monitoring equipment. Simon explains that it was a random meeting with the owner, Nicholas Beale, that led him to the role of principal software engineer. He says: “I was the sort of principal software engineer really, but I also did quite a lot of hardware design and debugging. It was very energising in some ways, but I also found it to be quite daunting to be working for a company where I thought, if I’m late with the software, people don’t get paid.”
University College London (UCL)
After two years, Simon decided to look for another role and returned to academia thanks to his sister who told him about a lectureship role at UCL where she was studying. He says: “I applied just to see if I got an interview and much to my astonishment, I was appointed. I had no PhD. I did have one paper to my name, but that was all, and I got a permanent lectureship at UCL, which is a front-rank computer science department. It was pretty amazing. I think in those days the computer science departments were expanding at a great rate, so, if you had a pulse, they would hire you.”
Simon started doing research and was given a light teaching load, he adds: “So I would sit there with a sharp pencil and a blank sheet of paper, and wait for great ideas to happen and, not unsurprisingly, nothing much occurred. So, it took me a while, and indeed some mentorship from some of my colleagues and from David Turner, to get started on something concrete.”
He spent the first few years on functional programming research before taking the advice of his colleague John Washbrook to “just get started on something.” With this in mind, Simon experimented with SK combinators, built parser generator targeting functional languages, and little compilers. This was followed by GRIP, a graph reduction parallel machine; a project for which Simon applied for funding from the Government’s Alvey Programme.
After seven years at UCL, firstly as a lecturer and then a senior lecturer, Simon decided to move to Glasgow University.
Simon was recruited to join Glasgow University as Professor of Computer Science. The department was led by Malcolm Atkinson and Keith van Rijsbergen who also hired John Hughes and Phil Wadler. When Simon took up the role, at the age of 32, he says he was one of the youngest professors he knew. He explains: “It was a huge opportunity. They were explicitly saying, we’re going to hire up-and-coming folk, rather than established figures, and place a bet on them. So, I feel they placed the bet on me, and I feel very grateful to have been the object of such a bet.” What followed was the formation of a “very exciting” functional programming group at Glasgow between 1990 and 2000.
While at UCL and then subsequently at Glasgow, Simon, along with several others who were interested in lazy functional programming including; John Hughes, Phil Wadler, Paul Hudak in the States, Joe Fasel, Dick Kieburtz, David Wise and Dan Friedman, among others. They realised that they all had different languages and that they could be more productive if they developed a common language. Simon explains: “We thought, let’s try to do something very modest. Let’s just agree a common syntax, so we don’t gratuitously differ on our programs, because really, we agree on the semantic core of our language. So, it was an extremely unambitious agenda. We expected to spend a few months writing down common syntax and we’d be done. Thirty years later, we’re not done.
“So a group of us got together, and we started to design Haskell; I think, the first meeting was in about 1987 actually. We named it after Haskell Curry, who was a logician from the 1930s; we got permission from his widow to use his first name. By the time we got to Glasgow, we started to really get engaged on building the first compiler for Haskell. But it was a committee language; it was an international committee. Three of us, myself, John Hughes and Phil Wadler, were at Glasgow, but the rest were scattered around the world, including in Sweden.”
With compilers already in existence a gentle air of competition existed. Simon together with his colleagues called their compiler the Glasgow Haskell Compiler GHC. They had identified Lennart Augustsson and Thomas Johnsson as the “ace implementors” and regarded their HBC as the main competition to beat for performance. Of the GHC, Simon adds: “It’s now thirty years old and it’s still developing.”
As well as his research interests, Simon was also, as Professor, teaching courses, sitting on committees and chairing others. Between 1985 to 1988, he was the head of the university’s Planning Unit for maths, computing and statistics. Simon explains how he enjoyed these various roles: “Much to my surprise I quite enjoyed it because they (each of the departments) were well led. Universities are exciting places to work, because they’re very polychromatic, you’re a researcher, you are a pastor, you are a teacher, you are a manager, you are a mentor. All of these things together. Being a head of department or head of a planning unit is part of creating an environment in which your colleagues, who you love and cherish, can grow and flourish and that’s rewarding in its own way.”
After seven years at Glasgow, Simon spent a sabbatical year working alongside John Launchbury and Mark Jones, at the Oregon Graduate Institute. Simon had expected to return to Glasgow following this, but with his wife, a priest in the Anglican Church, starting to look for more full-time work they felt a move to England might open up more opportunities. The family’s decision to move to England prompted Simon to contact the newly-opened Microsoft Research lab in Cambridge to see if there were any roles open for which he might be suitable.
In September 1998 Simon started at Microsoft Research using his experience and passion for functional programming and Haskell. He says: “I was pretty clear, that if they were going to hire me, it was because I was going to carry on doing this research, that’s what I wanted to do. If they didn’t want me to do that, well I would find a job somewhere else. But Roger (Needham) said, ‘No, we’re fine, that’s what we’d like you to do’.”
This support was possible because of the mission statement that Microsoft Research had at that time which was to push forward the boundaries of knowledge; put Microsoft in a position to be agile when new stuff heaves over the horizon; provide a reservoir of expertise for the rest of the company to draw on. Today, the focus has shifted, with work being more project driven; the mission statement now focuses on using deep research to have impact upon the world, and in particular on Microsoft’s businesses. Simon adds: “That’s very motivating for computer scientists, because there’s nothing that we want more than to see our work used in practice, but it is more focused. It used to be, one man and his workstation; now it’s more project teams of researchers working together, usually closely aligned with product groups, to get some deep research into some production, into production essentially. So that’s quite a big shift that’s taken place over the last 20 years.”
While working on Haskell, Simon has also been responsive to this shift in Microsoft’s culture and has worked, and still works, on Excel, Microsoft’s biggest selling product. He says: “I also do quite a bit of work now on Excel because it is the world’s most widely used functional programming language, but it’s such a frustratingly weak language, and it’s easy to see things that you could do to make Excel much, much better.” Simon published papers fifteen years ago which suggested adding user-defined functions and arrays as first-class values. This year Microsoft released a version of Excel that has so-called dynamic arrays, in which arrays have become much more first-class values. Users can write array value formulae without the use of control-shift-enter to enter a formula. Simon continues: “Excel is one of Microsoft’s longer-standing and most profitable products and yet, I’m happy to say, that there is a real hotbed of innovation in there. I hope that part of the innovation ultimately lands in the hands of users will be more of this user-defined functions and purely functional programming scaled up. I’m hopeful about that.”
Discussing functional programming and its impact in today’s world, Simon explains that functional programming addresses the whole enterprise of writing programs, rather than being specialised for a particular class of applications. He says: “Functional programming works for any application, which is a strength and a weakness. It’s a strength because it has very broad applicability; it’s a weakness because, there isn’t a killer app; one thing that it’s just stonkingly much better at. However, what you can see is a sustained trend across programming towards more functional styles.”
He cites Google’s MapReduce as an example and explains how languages such as Java or C# have grown more and more functional features, including lambdas and automatic garbage collection, that were born, and grew up, in the world of functional programming languages. He adds: “So, you’re seeing a lot of technology crossover.”
He also explains that immutability is also “showing up everywhere”, referencing Pat Helland’s paper, entitled, Immutability Changes Everything. He says: “My soundbite summary is this; when the limestone of imperative programming has worn away, the granite of functional programming will be revealed underneath. I think there’s a multi-decade trend towards functional programming, and the purely functional languages, such as Haskell, are effectively laboratories in which we are exploring what the future will look like. You know, I could be wrong, maybe the future won’t look like that, and I’m sure it won’t look exactly like that, but if you like, it’s a sustained experiment in a completely different approach to software construction.”
Throughout his career Simon has forged great working collaborations and friendships with many people who have been inspirational to him including, John Washbrook, Malcolm Atkinson, Keith van Rijsbergen, John Hughes, and David Turner. He has co-authored papers with over 140 collaborators, all of whom have had a big impact on him. He enjoys creating dialogues and sharing ideas.
Good and Bad Career Decisions
Simon explains that much of what he chose to do was happenstance, from leaving Beale Electronics to moving into academia, choosing functional programming and focusing on it because he enjoyed it when introduced to it by Arthur Norman, and moving to Microsoft Research, which has given him the freedom to pursue his work.
When it comes to decisions that haven’t worked out so well, Simon is pragmatic and believes that they are learning experiences. Overall, he feels he has been very fortunate in both his professional and personal life. He offers the following advice: “I think if there was a piece of advice that I would give to other people, particularly other people who have the good fortune to work in universities; pick simple, elegant ideas, and stick to them. Really try to work out where they go. Don’t compromise too easily. Because I think that when you try to turn simple ideas into a practical reality, the practical reality often turns out to be complicated. Taking complicated ideas, and turning them into reality, is often insupportably difficult. So, the core idea has to be pretty simple in order to make it practical in reality.”
Awards, Honours and Voluntary Roles
In 2004 Simon was inducted as a Fellow of the Association for Computing Machinery, for his contributions to functional programming languages. In 2011 he received membership of the Academia Europaea. He is a Distinguished Fellow of BCS, The Chartered Institute for IT.
In 2016 Simon was elected a Fellow of the Royal Society. Computing is a relatively new aspect to be covered by the Royal Society, Simon explains: “It’s just amazing to become a Fellow and physically sign the same book in which, a few pages earlier, there’s Newton’s signature. I was just completely bowled over and honoured by that. Now, happily, the Royal Society’s commitment to computing has become sufficient, they now (for the first time, this year) have a fellowship selection committee for computer science. That’s great because I think that represents the fact that computer science is actually a respectable academic discipline, full-throated, and lies squarely within the Royal Society’s remit. That’s quite exciting.”
Simon also serves on the Royal Society’s Education Committee which looks at pre-eighteen education primarily, across all of science, mathematics, and computing in schools in this country. Its advice is frequently followed by Government. Simon explains: “It means the Royal Society has to move very carefully and not just shoot from the hip, but be thoughtful and evidence-based in what they do. But if they do come out and say something, the Government generally pays attention. So, it’s a very high point of leverage.”
Simon is honoured to have received the following honorary degrees:
- Honorary DSc from the University of Glasgow (2013); Muffy Calder’s oration
- Honorary DEd from the University of Bath (2017); Chris Budd’s oration; video
- Honorary DSc from the University of Kent, Canterbury (2017)
- Honorary DSc from the Queen Mary University of London (2017)
Computing at School (CAS)
In 2007/8 Simon and three others started Computing at School as a result of frustration with the way that ICT was being taught in schools. He spends around a quarter of his time working with CAS. He says: “When we started Computing at School, it was a kind of guerrilla group of individuals who just thought the school curriculum in ICT should be reformed in some way.” The group now has over 30,000 members and was deeply involved in the new computing curriculum which was launched by the Government in 2014. Simon adds: “We had a far larger effect on education at school than we ever thought possible. Again, it’s amazing that Microsoft has been willing to allow me to spend time doing that.”
The new computing curriculum saw a fundamental change with the introduction of computing in primary schools with children as young as 5 learning how to program, Simon explains: “The shift in the new curriculum is that we’re treating computer science as a foundational discipline in the way that we do natural science, teaching it at an elementary level as we do for biology and physics, at primary school, and at increasingly sophisticated levels thereafter. Alongside, being a confident and safe and able user of information technologies, the idea is to equip children ? perhaps especially the ones who will not become the software engineers of the future – with the stuff that they need to deal with successive waves of technology and think, ‘it’s just a new piece of technology, and I will trust it and, or not trust it, in the same way that I do other technologies’, rather than thinking it’s magic and must work.”
In September 2017, the Royal Society produced a report entitled “After the Reboot”, looking at the progress so far; as a result, the Government has allocated £100 million of additional funding to help train and support existing computing teachers.
Impact of IT on society in the next ten years
Simon says: “I’m very, very cautious about predicting anything, especially when it’s about the future, as somebody famously said.” He believes that machine learning will have a huge impact as it is already allowing us to do things that we can’t readily write traditional programs for, which also means there are grounds for some concern, particularly around biases.
He does, however, go on to predict that functional programming will continue on its long-term trend. He says: “I think it will continue to be increasingly influential. I’m not quite sure whether in the end we’ll all be writing purely functional programs, but I think that increasingly we’ll recognise that that’s what we’re doing in some guise.”
Biggest challenges and opportunities for the industry
Citing the NHS’s failed attempt to build a big IT system, Simon believes one of the biggest challenges for the industry it to build big IT systems that work. He explains: “For me, one of the biggest challenges is a terribly mundane one. Why can’t we build big IT systems that work? So, take the NHS’s, essentially failed attempt to build an IT system that would connect all our medical data together. You would think, at its root, that is not a very difficult problem. The fundamental idea that my doctor should have access to records that the hospital has and vice versa. How hard can it be? But the answer is, really very hard indeed. It’s to do with a zillion things; very big systems, built by different parties, that interact in strange ways. A lot of concern about privacy and who can see what, and delegating responsibility and so forth. But nevertheless, I think, that’s a big challenge, that’s something we’ve not cracked and yet, there’s a huge, huge payoff for being able to do that. Never mind machine learning, just building big, mundane, good old basic data manipulating IT systems to get the right data to the right place to the right person. That’s a challenge I just don’t think we’ve cracked. I’m not an expert in it. I don’t even know what the problems are, let alone what the solutions are. But I dearly wish someone would fix it.”
Simon believes that the sector is bursting with opportunity at the moment, eager for bright talent so he says: “Find something that you really are enthusiastic about. Figure out how to make the world a better place and go and try and do that, because you’ll probably be able to. If you’re working in less marketable or less commercially viable things, you may have trouble getting somebody to pay you to do the things you really want to do, but in computing, you can probably find a way to get somebody to pay you to do the thing that your heart really leads you to. That’s a great privilege and blessing.”
As a Christian, Simon contributed to a book, Cybernauts Awake! In 1999 published by the Church of England Board of Social Responsibility, which explores the ethical and spiritual implications of the Internet. He says that this faith has not directly influenced his research, but has influenced his attitudes, in particular when interacting with other people, ensuring that he treats people with dignity and respect. He explains: “Computing people communicate a lot by email, or bulletin boards. It’s awfully easy to accidentally take offence. My self-imposed discipline is to try really hard to assume that I’m the one at fault when I’m offended or annoyed by somebody’s email to me, or a post that they make, and to try to contact them individually or build bridges with them. I think this is true across computer science, I don’t know about other subject disciplines, but I think, senior researchers are by and large extremely good at being respectful and supportive of more junior people or PhD students who will come and talk to them in conferences. …. I think generally there’s a good culture of respect and mutual honouring of people’s professional expertise, good intentions, and commitment.”
Interviewed by: Ian Symonds on the 19th November 2018 at the Microsoft Research Centre, Cambridge
Transcribed by: Susan Hutton
Abstracted by: Lynda Feeley