InfoQ

Interview

Simon Peyton Jones on Programming Languages and Research Work

Interview with Simon Peyton Jones by Sadek Drobi on Sep 18, 2008 06:12 AM

Community
Architecture,
.NET,
Java
Topics
Language Design ,
Programming ,
Design
Tags
Language Features ,
Languages ,
Parallel Programming ,
Haskell
Summary
In this QCon London 2008 interview, computer scientist and researcher Simon Peyton Jones discusses properties of functional programming languages, and particularly Haskell, that have inspired some features in mainstream languages. He gives his opinion on the issues of syntax and language complexity and talks about some research work on subjects such as Data parallelism and transactional memory.

Bio
Honorary Professor of Computer Science at the University of Glasgow, Simon Peyton Jones currently works at Microsoft Research in Cambridge. He has led several research projects focused on the implementation and applications of functional programming languages. He has greatly contributed to the design of the Haskell language, and is the lead designer of the Glasgow Haskell Compiler.
I am here with Simon Peyton Jones and we are going to talk about the programming language in general, Haskell in particular. Simon, why don't you tell us about yourself and what you've been up to lately?
The last Microsoft researches are trying to find a multi-paradigm language that actually is a functional programming language and is an object programming language, that has a mutation, like F# and Scala ;can you elaborate on that? Does it solve the kind of problem that we are facing today in the mainstream?
For example, C# added some functional programming structures; do you think that the syntax matters? You program functional programming with C# syntax, don't you think it matters like it will make the programmers program with their old culture of imperative programming because they got the syntax, inside C#?
In programming languages like C# or Java we compose objects, we have patterns for composing objects. In functional programming we compose functions. What do you think about that? The same thing is done in 2 paradigms: in an object you need to create a lot of objects and in function you just compose with monads and other stuff. What is your take on that?
Can you elaborate more about what you think of the implementation of list comprehensions in C#? It's not exactly a Language INtegrated Query, it's actually a language integrated monads, because it introduces monads inside C#
LINQ was one of the concepts on the list comprehension; do you think that there are other monads or other abstractions that can be taken in Haskell and then be implemented in the mainstream, other than lists?
What do you think of tree monads or continuations or other kinds of monads that can get implemented in the C#? Do you think it can be useful for industry?
We've got Lisp and Smalltalk and they've got really minimum syntax there; and we've got C++, C# as well, and they have lot of syntax, I mean where do you think Haskell is in between and what do you think of that? Does syntax add complexity or does it remove complexity for developers?
The idea of a functional language kind of scares me. Basically, it seems that when you think of an object, it seems to map to the everyday world, so "person.hand.scratch(otherhand)", where you have the methods and the properties also within a given object. It seems there is a kind of change in paradigm and a whole change and thought process that comes along with accepting functional programming and programming functionally. Do you think that may be one of the reasons that object oriented programming languages are mainstream? Is there a way to bridge that gap between functional and object oriented?
Could you give us an idea of what is going to be coming down the line in a few a few months? What's interesting? What can you see on the horizon that you are going to be trying out on your Haskell test pad?
When are you going to get it?
Recently I have crossed a paper of Meijer and others. It was talking about programming, Banana, Lenses and Barbed Wire. I don't know if you've crossed this paper, and it's kind of abstraction of several kinds of recursion, as far as I understand. Do you think such kinds of abstractions, if we do abstraction of recursion, give a lot of benefits for optimizing or simplifying the complexity of code?
Back to F#, it has got a lot of concepts of functional programming language, yet a mutable state. Don't you think that a little bit of mutation can break the whole system, the whole concept with the programming language?
In LinQ we pass anything by reference and we got closures then, and closures inside the reference objects. Doesn't that break any model of using lambdas and list comprehensions?
Doesn't this sharing have some good effects on performance and optimizing?
show all  show all

No comments

Reply

Educational Content

JRuby: The Pain of Bringing an Off-Platform Dynamic Language to the JVM

Charles Nutter discusses bringing JRuby to the JVM, why Ruby is hard to implement, JIT compilation, precompilation, core Ruby implementation, Java library access, library challenges and future plans.

Performance Anti-Patterns in Database-Driven Applications

Alois Reitbauer specifies several architectural anti-patterns that one should stay away from and which can downgrade an application’s performance.

Making TDD Stick: Problems and Solutions for Adopters

Teams in large organizations still struggle to adopt TDD. In this article Mark Levison shares problems he uncovered when he surveyed teams, and his own strategy to introduce TDD into an organization.

Testing is Overrated

In this talk from RubyFringe, Luke Francl asks: is developer-driven testing really the best way to find software defects? Or is the emphasis on testing and test coverage barking up the wrong tree?

VM Optimizations for Language Designers

John Pampuch discusses the HotSpot compiler, the history of Java performance, HotSpot development philosophies and challenges, optimization, JVM library improvements, and tips for better performance.

Keith Braithwaite, an Agile Skeptic

In this interview, Keith Braithwaite, an Agile developer, consultant and trainer, says that we should show a good deal of skepticism towards today’s Agile practice.

Workflow Orchestration Using Spring AOP and AspectJ

This article demonstrates how to build and orchestrate highly configurable and extensible yet light-weight embedded process flow using AOP techniques with Spring AOP and Aspect J.

Embrace Uncertainty

Jeff Patton explains why one needs to embrace uncertainty in order to succeed with his/her Agile project and how to avoid some of the common mistakes leading to project failure.