Let’s Go Video: The Legacy of Go

In an effort to accomplish a few goals, I’m watching a video related to Golang every week and writing my thoughts here. For one, I’m transitioning to working on Go full-time, and two, having a project is intended to help give me a direction for starting blogging once a week.

I asked for some video recommendations on Twitter, and John Arundel kindly linked to his playlist of Go videos, so I’m starting with this as a feeder, although it looks like all of the videos on that list are by men, so I’m also looking to broaden the gender diversity of suggestions.

I picked this for the first one, because it seemed more general, and it was as promised. Cheney asks what the “legacy” of Go will be in the future. So this is kind of like learning about how Go folk see their work in the context of the larger programming world.

Examples of what came before include C, C++, and Rails as far as programming languages (and a framework) that have a legacy. In C, it’s that you could program without using Assembly directly; in C++, Cheney calls it the “Rolls Royce of mainstream object orientation” which is, if nothing else, a fun statement, and zero-cost abstraction (see Rust’s mention of this in Abstraction without overhead), which is a very cool thing. Meanwhile, Rails is known for convention over configuration/commonalities across projects. I could see why Cheney brings that up with Go, with gofmt

So what is the legacy of Go? Cheney brings up gofmt, which one expects after the Rails bit. The “there’s one way” for things to look is a pretty big legacy but I wonder, really? Formatting? This is the great triumph of this language (although, languages having triumphs is a debatable idea as well)?

Line in sand has been DRAWN

In the middle of the talk, Cheney credits Katherine Cox Buday with telling him about Alan Kay’s quote “Programming is a pop culture.” Cheney then talks about other legacy stories/cultural impacts, including Levi Strauss/denim, Rayban (aviator sunglasses), and the Sony walkman. Interesting stuff, I suppose it solidifies the theme.

After our journey into culture land, Cheney suggests that for a new language to be successful, it must be sufficiently different from prior art. This transitions into talking about how types are a trend in programming that he compares to a style fad, that comes in and out of vogue but never goes away, which leads to talking about Interfaces.

I believe that interfaces are the iconic feature of Go

Dave Cheney, GothamGo 2015

The thought on interfaces makes me feel really good about reading this post about understanding interfaces, the other week, after it was linked on Go by Example.

Cheney goes on to discuss that, in having the “next” language as it were, that removing choices rather than adding them seems to be the way to go. He mentions inheritance (which perhaps also references interfaces in a way?), semicolons, and threads in this category, but lingers on threads more.

The removal of threads, from a Go programmer’s model, means the removal of the requirement to care about the stack, unlocking much more of the techniques of recursion

Dave Cheney, GothamGo 2015

In summary, Cheney proposes that the legacy of go is:

gofmtInterfacesGoroutines [and channels]

Indeed, at least 2 of these three things are in my “things to understand about understanding Go” pantheon. Luckily, I’m not unfamiliar with using a standard formatter.

Until next time! And please comment with favorite talks you’ve seen/videos 🙂