The past decade has seen an explosion of new programming languages, many of them bringing exciting ideas from the research community into the world of mainstream programming. And then there is Go. John looks at why Go is so frequently criticised by the programming languages community, why that might not matter, and how we can all learn from this.
Now, if you look into these complaints they seem to fall into one of two categories. People complain about the simple type system in Go, or they complain about the fact that it reminds them of writing C and they didn’t like doing that. But if you look behind that and look at the actual details of these complains that I think what you’ll find… well actually I think what you’ll find is that these complaints are generally largely valid. Go has got a number of flaws and it could be improved in a number of different ways. But I think if you stop there, and just criticise Go, then you’re missing out on a real opportunity. I think there’s a lot we can learn from Go, and there are a couple of properties in particular that I want to look at today.
I think that’s an interesting question but there’s [also] another aspect of Go that I think is interesting, and that is that Go is pretty good at writing programs that work. Now I’m not suggesting that every Go program is error free. But in general, compared to other languages, it’s pretty good about producing reliable code. But that can’t be right either, can it? I mean Go’s got all of these flaws which are going to lead to unreliable code. So what’s going on here?
I think this is quite interesting, and more generally I think you could say that in theory Go should really suck, but in practice it doesn’t. And that’s quite interesting. I think there’s an awful learn we can learn about that by looking at Go’s successes. So I think this is an opportunity to learn and this is what I mean when I say that “Complaining about Go is a wasted opportunity.”
But there’s a flip side to this. I think there’s an awful lot the Go community can learn from these criticisms. But this is a difficult thing to do because the people making these criticisms are talking these funny languages like Haskell and Agda and it’s hard to understand what they’re saying. And when you do understand what they’re saying it turns out that they’re just criticism what we do, and that’s hard to deal with. But if we can get beyond that, if we can listen to what they’re saying I think there’s a lot we can learn from that and we can use it to improve Go. And we can do that without losing what’s important to us - what we like about the Go language.
But this is very difficult to do because this is about being more diverse and diversity is hard. But it’s also really important. So I think maybe what we can do is we can try and learn how to listen to other people and hear what they’re saying, and use that to improve what we do. I guess what I’m really trying to say is that we should make an effort to have conversations with people who aren’t like us, and we’ll all be better of for it.
Thanks for listening.