Email or username:

Password:

Forgot your password?
rob pike

I'm giving at talk at GopherconAU (Sydney) in a few weeks, about what we got right and what we got wrong. I have lots to consider but admit I might be solipsistic on this topic.

So I'm open to outside ahead-of-time input, provided it can be given politely.

10 comments
Tom

@robpike I think one thing you got right was listening to the community. I never saw the need for generics, but many people did, and it was a great example of the core team listening to the needs of their users.

Unfortunately, I can't make it this year. Hopefully it's recorded. Sounds like a great subject.

Per Vognsen

@robpike Perhaps even more than specific design decisions, I'm curious what parts of your pre-design goals turned out to be the "wrong" goals to set in the sense the eventual core audience of Go either within Google or publicly had different or differently-weighted needs than anticipated.

companion_cube

@robpike
I sincerely believe that not having sum types, from day 0, is the biggest sin of Go. Bigger than generics (although the two go well together). But in 2011 it's sad that it didn't include that.

Go also got some things right, like interfaces and having a strong consistent stdlib that relies on them when it makes sense. Formating, integrated tooling, in this it influences every language that has been created since

Bluntelk

@robpike got right: a likable easy to use language with a lot of tooling that makes life easy and(as mentioned by others) a responsive community focused team driving the language. Also not pretending to be an everything language.

Needs improvement: error handling can at times be cumbersome (same code repeated many times is not "fun")

Good thing: I know that with the continued focus on refining the language that this will eventually have a solution

✨jes✨

@robpike the only dramatic omission from my pov is compile-time unhandled error checking. i.e. i called a function with an error return value, but forgot to "err :=" in front of it.

maybe there's a good reason for it, idk, but it's the one thing that consistently trips me up

LDA $6502

@robpike

Got right: gofmt and opinionated coding standards. In my experience this has been a profound boon when it comes to collaboration and code-sharing. No more bikeshedding over unimportant details.

Carl M. Johnson

@robpike maybe too many ways to declare a variable and the := shadowing problem. A lot of the other errors can be fixed

mathew

@robpike The stdlib log package being so lacking in functionality was bad for the ecosystem, because now we have 46 logging packages and little hope of unification. (I counted them at one point.)

infox

@robpike Using nil both for empty interface variables and for null pointers, which are conceptually very different.

Go Up