1 of 124

10 Years of Go

Carmen Andoh

Google

@carmatrocity

2 of 124

30 October, 2009

3 of 124

10 November, 2009

4 of 124

5 of 124

#GoTurns10

6 of 124

2009

2019

7 of 124

2009

2019

1960

2007

8 of 124

2020

20??

2009

2019

1960

2007

9 of 124

2020

20??

2009

2019

1960

2007

Foundations

Reflections

Predictions

10 of 124

11 of 124

Paying homage to

12 of 124

13 of 124

Foundations

1960

2007

14 of 124

Programming Languages 1960-2007

15 of 124

16 of 124

January 1960

ALGOL

17 of 124

January 1960

ALGOL

18 of 124

The meetings were exhausting, interminable, and exhilarating.

One became aggravated when one’s good ideas were discarded along with the bad ones of others. Nevertheless, diligence persisted during the entire period. The chemistry of the 13 was excellent.

Alan Perlis

19 of 124

Oberon

Pascal

C

C++

C#

Java

Perl

Python

PHP

JS

Obj C

AWK

Modula

Ruby

Shell

Algol

20 of 124

Concurrency 1964-2007

21 of 124

Concurrency 1964

Douglas Mcilroy�Unix Pipes

22 of 124

23 of 124

Concurrency 1978

Tony Hoare�CSP

24 of 124

CSP

Erlang

Alef

Occam

Newsqueak

Limbo

25 of 124

2020

20??

2009

2019

1960

2007

Foundations

Reflections

Predictions

Creation

26 of 124

Creation

2007

2009

27 of 124

They looked up and and down streets, looked em over with care. About some they said, I don’t choose to Go there.

28 of 124

During a 45 minute C++ build…

29 of 124

2007

Rob Pike

Google, circa 2007

30 of 124

  • Enormous Google C++
  • Compilations were taking 45 minutes
  • Upcoming talk presented by C++ standards committee.

31 of 124

In the span of an hour at that new

C++ standards talk we heard about something like 35 new features that were being planned. …

At this point I asked myself a question:

32 of 124

Did the C++ committee really believe that was wrong with C++ was that it didn't have enough features? Surely..., it would be a greater achievement to simplify the language rather than to add to it.

33 of 124

2007

34 of 124

Rob Pike

Robert Griesemer

inventing a new programming language

35 of 124

36 of 124

Algol

CSP

37 of 124

Algol

C

Pascal

Simula

CSP

Newsqueak

38 of 124

Algol

Oberon

C

Pascal

Simula

Smalltalk

CSP

Newsqueak

39 of 124

Algol

Oberon

C

Pascal

Simula

Smalltalk

CSP

Newsqueak

40 of 124

41 of 124

Algol -> consolidation of Tower of Babel language proliferation based on experiences on computer scientists and advances of hardware

42 of 124

Algol -> consolidation of Tower of Babel language proliferation based on experiences on computer scientists and advances of hardware

Go -> Consolidation of feature creep language proliferation (A newer version of the Tower of Babel) within languages and build toolchains based on experiences of computer scientists and advances of hardware

43 of 124

Creation Proliferation Complexity Consolidation

44 of 124

Creation Proliferation Complexity Consolidation

45 of 124

Creation Proliferation Complexity Consolidation

Waiting for Good design. �No is Temporary, Yes is Forever

46 of 124

47 of 124

48 of 124

49 of 124

implementing

generics

do them.

Ian Lance Taylor

50 of 124

51 of 124

Creation Proliferation Complexity Consolidation

Waiting for Good design. �No is Temporary, Yes is Forever

Everything should be made as simple as possible, but no simpler.

52 of 124

Reflections

2009

2014

53 of 124

You'll be on your way up!

You'll be seeing great sights!

You'll join the high fliers

who soar to high heights.

54 of 124

Language & Tooling

2009

2010

2011

2012

2013

55 of 124

Language & Tooling

Ecosystem

2009

2010

2011

2012

2013

56 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

57 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

58 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

59 of 124

60 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

61 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

62 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

63 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

Open Source (IaaS)

64 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

Open Source (IaaS)

65 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

Open Source (IaaS)

66 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

Open Source (IaaS)

Go 1 compatibility promise

67 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

Open Source (IaaS)

Go 1 compatibility promise

68 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

Open Source (IaaS)

Go 1 compatibility promise

69 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

Open Source (IaaS)

Go 1 compatibility promise

70 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

GitHub

gofmt

(PaaS)

Open Source (IaaS)

Go 1 compatibility promise

71 of 124

Language & Tooling

Cloud

Ecosystem

2009

2010

2011

2012

2013

Go 1 compatibility promise

10²

GitHub

10⁵

Users Worldwide

Contributors

(PaaS)

Open Source (IaaS)

72 of 124

Reflections

2014

2018

73 of 124

So be sure when you step.

Step with care and great tact

and remember that Life's

a Great Balancing Act.

74 of 124

Language & Tooling

Ecosystem

2014

2015

2016

2017

2018

First Gophercon,� Denver, Colorado

Cloud

75 of 124

76 of 124

First Two Gophercon ticket purchasers? ��

77 of 124

First Two Gophercon ticket purchasers? ��Organizers risk and reward

78 of 124

79 of 124

Language & Tooling

Ecosystem

2014

2015

2016

2017

2018

First Gophercon,� Denver, Colorado

Cloud

80 of 124

Language & Tooling

Ecosystem

2014

2015

2016

2017

2018

First Gophercon,� Denver, Colorado

Cloud

81 of 124

Language & Tooling

Ecosystem

2014

2015

2016

2017

2018

First Gophercon,� Denver, Colorado

Cloud

82 of 124

83 of 124

Language & Tooling

Ecosystem

2014

2015

2016

2017

2018

First Gophercon,� Denver, Colorado

Cloud

84 of 124

Language & Tooling

Ecosystem

2014

2015

2016

2017

2018

First Gophercon,� Denver, Colorado

Cloud

1.5 Compiler tool chain in Go, GC

CoC, WWG, GoBrige

85 of 124

Language & Tooling

Ecosystem

2014

2015

2016

2017

2018

First Gophercon,� Denver, Colorado

Cloud

CoC, WWG, GoBrige

Context

1.8 GC improvements

1.5 Compiler tool chain in Go, GC

86 of 124

You won't lag behind, because

you'll have the speed.

You'll pass the whole gang and

you'll soon take the lead.

Wherever you fly, you'll be the

best of the best.

Wherever you go, you will

top all the rest.

87 of 124

88 of 124

Language & Tooling

Ecosystem

2014

2015

2016

2017

2018

First Gophercon,� Denver, Colorado

Cloud

CoC, WWG, GoBrige

Context

1.8 GC improvements

1.5 Comiler tool chain in Go, GC

Vgo papers

89 of 124

Language & Tooling

Ecosystem

2014

2015

2016

2017

2018

First Gophercon,� Denver, Colorado

1600

10¹

Contributors

Go

Confs

Cloud

1.5 Compiler tool chain in Go, GC

CoC, WWG, GoBrige

Context

1.8 GC improvements

90 of 124

Community

2014

2015

2016

2017

2018

Contributors: 1600

Users: Over 1 - 1.6 MM

Conferences: 19

10⁵

10³

10¹

91 of 124

This Year

92 of 124

2018

2019

93 of 124

2018

2019

Contributors: 2100 (increase 30%)

Users: Over 1.6-2MM (25%)

Conferences: 28 (45%)

94 of 124

2019

14 March: GDN (Go Developer Network) launches.

1.12 Go vet re-written.

95 of 124

96 of 124

97 of 124

98 of 124

2019

14 March: GDN (Go Developer Network) launches.

1.12 Go vet re-written

99 of 124

2019

14 March: GDN (Go Developer Network) launches.

1.12 Go vet re-written

1.13 release. Go modules beta with mirror, index, and checksum DB.

RAM consumption decreases ~20% across the board.

First Go 2 language changes land (improved number literals and signed shifts).

100 of 124

2019

14 March: GDN (Go Developer Network) launches.

1.12 Go vet re-written

1.13 release. Go modules beta with mirror, index, and checksum DB.

RAM consumption decreases ~20% across the board.

First Go 2 language changes land (improved number literals and signed shifts).

18 -> 28 Go Conferences

101 of 124

2009

2019

1960

2007

Foundations

Reflections

Creation

102 of 124

2020

20??

2009

2019

1960

2007

Foundations

Reflections

Predictions

Creation

103 of 124

On and on you will hike,

And I know you'll hike far

and face up to your problems

whatever they are.

104 of 124

Language & Tooling

Cloud

Ecosystem

2019

2020

2021

2022

2023

105 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

106 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

107 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

Go Learning Platform

108 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

Go Learning Platform

109 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

Go Learning Platform

Paths to +2

110 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

Go Learning Platform

Paths to +2

Go is the language used to teach Computer Science in schools

111 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

Go Learning Platform

Paths to +2

Go is the language used to teach Computer Science in schools

Modules toolchain

112 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

Go Learning Platform

Paths to +2

Go is the language used to teach Computer Science in schools

Modules toolchain

“Go 2”

113 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

Go Learning Platform

Paths to +2

Go is the language used to teach Computer Science in schools

Modules toolchain

“Go 2”

114 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

Go Learning Platform

Paths to +2

Go is the language used to teach Computer Science in schools

Modules toolchain

“Go 2”

115 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Go Developer Network

Go Learning Platform

Paths to +2

Go is the language used to teach Computer Science in schools

Modules toolchain

“Go 2”

Gio

116 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Modules toolchain

“Go 2”

Go Developer Network

Go Learning Platform

Paths to +2

Go is the language used to teach Computer Science in schools

Gio

Open Source Best Practices - will continue to evaluate what is right for Go

117 of 124

Language & Tooling

Community

Ecosystem

2019

2020

2021

2022

2023

Modules toolchain

“Go 2”

Edge Computing

Go Developer Network

Go Learning Platform

Open Source Best Practices - will continue to evaluate what is right for Go

Paths to +2

Go is the language used to teach Computer Science in schools

Gio

118 of 124

If you want to know the future, create it. ��

119 of 124

2020

20??

2009

2019

1960

2007

Foundations

Reflections

Predictions

Creation

120 of 124

2020

20??

2009

2019

1960

2007

Foundations

Reflections

Predictions

Creation

Heritage

121 of 124

Heritage

Something transmitted from the past.

Valued enough today.

To leave for the current generation.

To build upon it collectively for tomorrow.

122 of 124

You have brains in your head.

You have feet in your shoes.

You can steer yourself

any direction you choose.

You're on your own. And you know what you know.

And YOU are the gophers who'll decide where to go.

123 of 124

Together

124 of 124

Thank you