Russ Cox's lecture on Go

Why Go?

Who uses Go at Google

Concurrency

There's no goroutine IDs

Channels vs. Mutexes

Network channels

Scale of engineering efforts

In 2011, Google had:

A new language was needed to fix the problems that other languages had with software engineering at this scale

The scale of compilation matters. - When you compile a package A that depends on B, most (all?) languages need to compile B first - Go doesn't. - Dependencies like these at the scale of Google projects slow down compilation if you use a traditional language + gets worse with "deeper" dependencies A->B->C->D->... - Example: at some point they found a postscript interpreter compiled in a server binary for no reason due to weird deps

Interfaces vs. inheritance

Readability and simplicity

Design criteria

Generics

Enginering tools

More automation

State of Go

Q&A